diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 40e8a8816b9da82b4f64808a4b731ab5d79c127f..b8d26a6d970e41b786738a0d94f9b9780524ba2d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,19 +14,6 @@ unittests: image: $DOCLI_IMAGE stage: Unit Tests - rules: - # Skip if the commit message contains "[skip-tests]" - - if: $CI_COMMIT_MESSAGE =~ /\[skip-tests\]/ - when: never - - if: $CI_COMMIT_REF_NAME =~ /(^v\d+|\.x\.x|develop)/ - variables: - BASE_BRANCH: "${CI_COMMIT_REF_NAME}" - - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /(^v\d+|\.x\.x|develop)/ - variables: - BASE_BRANCH: "${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}" - - if: $CI_COMMIT_MESSAGE =~ /\[dodock-branch=(.*)\]/ - - if: $CI_COMMIT_TAG == null - services: - name: mariadb:10.6 command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--character-set-client-handshake=FALSE', '--innodb_read_only_compressed=OFF'] @@ -38,18 +25,15 @@ unittests: alias: redis_socketio variables: - BASE_BRANCH: "develop" MYSQL_DATABASE: "test_dodock" MYSQL_ROOT_PASSWORD: "test_dodock" before_script: - # Fetch base branch from commit message if it contains "[dodock-branch=]" - - export BRANCH_FROM_COMMIT_MESSAGE=$(echo "$CI_COMMIT_MESSAGE" | sed -n 's/.*\[dodock-branch=\(.*\)\].*/\1/p') - - if [ -n "$BRANCH_FROM_COMMIT_MESSAGE" ]; then export BASE_BRANCH="$BRANCH_FROM_COMMIT_MESSAGE"; fi - - - bench init . --ignore-exist --no-backups --skip-redis-config-generation --skip-assets --frappe-branch $BASE_BRANCH - - bench get-app https://gitlab.com/dokos/payments.git --branch develop - - bench get-app https://gitlab.com/dokos/webshop.git --branch develop + - set -e + - export APPS_BRANCH="$(/ci-utils/get-branch.sh)" + - bench init . --ignore-exist --no-backups --skip-redis-config-generation --skip-assets --frappe-branch ${FRAPPE_BRANCH:-$APPS_BRANCH} + - bench get-app https://gitlab.com/dokos/payments.git --branch ${PAYMENTS_BRANCH:-$APPS_BRANCH} + - bench get-app https://gitlab.com/dokos/webshop.git --branch ${WEBSHOP_BRANCH:-$APPS_BRANCH} - bench get-app /builds/dokos/dokos/ - /ci-utils/setup-redis.sh v1 - /ci-utils/patch-procfile.sh v1 @@ -72,37 +56,14 @@ build_docker: rules: # Run if the commit is tagged or if its message contains "[build-docker]" - if: $CI_COMMIT_TAG != null - if: $CI_COMMIT_MESSAGE =~ /\[build-docker\]/ + - if: $DO_BUILD_DOCKER == "true" image: docker:git services: - docker:dind - variables: - DOKOS_BRANCH: "${CI_COMMIT_REF_NAME}" - APPS_BRANCH: "v4" - DODOCK_BRANCH: "v4" script: - # Set image tag - - IMAGE_TAG=$CI_COMMIT_TAG - - if [ -z "$IMAGE_TAG" ]; then - IMAGE_TAG=$CI_COMMIT_SHORT_SHA; - fi - - # Override image tag from commit message if it contains "[docker-tag=]" - - TAG_FROM_COMMIT_MESSAGE=$(echo "$CI_COMMIT_MESSAGE" | sed -n 's/.*\[docker-tag=\(.*\)\].*/\1/p') - - if [ -n "$TAG_FROM_COMMIT_MESSAGE" ]; then IMAGE_TAG="$TAG_FROM_COMMIT_MESSAGE"; fi - - # Set image name - - IMAGE_NAME="$CI_REGISTRY_IMAGE:$IMAGE_TAG" - - # Set dodock branch - - if echo "$CI_COMMIT_REF_NAME" | grep -Eq '(^v\d+|\.x\.x|develop)'; then - DODOCK_BRANCH="$CI_COMMIT_REF_NAME"; - fi - - # Override dodock branch from commit message if it contains "[dodock-branch=]" - - BRANCH_FROM_COMMIT_MESSAGE=$(echo "$CI_COMMIT_MESSAGE" | sed -n 's/.*\[dodock-branch=\(.*\)\].*/\1/p') - - if [ -n "$BRANCH_FROM_COMMIT_MESSAGE" ]; then - DODOCK_BRANCH="$BRANCH_FROM_COMMIT_MESSAGE"; - fi + - set -e + - export APPS_BRANCH="$(/ci-utils/get-branch.sh)" + - export IMAGE_NAME="$(/ci-utils/build.sh get-image-name)" - echo "Building image $IMAGE_NAME" - git clone https://github.com/frappe/frappe_docker.git @@ -123,7 +84,7 @@ build_docker: - > docker build \ --build-arg=FRAPPE_PATH=https://gitlab.com/dokos/dodock \ - --build-arg=FRAPPE_BRANCH=$DODOCK_BRANCH \ + --build-arg=FRAPPE_BRANCH=$APPS_BRANCH \ --build-arg=PYTHON_VERSION=3.10 \ --build-arg=NODE_VERSION=18.16.1 \ --build-arg=APPS_JSON_BASE64="$APPS_JSON_BASE64" \ @@ -131,14 +92,19 @@ build_docker: --file=images/custom/Containerfile . - echo "Logging in to registry $CI_REGISTRY" - - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY + - /ci-utils/build.sh login - echo "Pushing image $IMAGE_NAME" - docker push $IMAGE_NAME - # Push 'latest' tag if the image tag is a version - - if echo "$IMAGE_TAG" | grep -Eq '^v[0-9]+'; then - N="$CI_REGISTRY_IMAGE:latest"; - echo "Pushing image $N"; - docker tag $IMAGE_NAME $N; docker push $N; + # Push latest tag if the commit is tagged and is the latest release (across all major versions) + - if [ "$(/ci-utils/build.sh is-latest-release $CI_COMMIT_TAG)" ]; then + N=$(/ci-utils/build.sh get-image-name latest); + echo "Pushing image $N"; docker tag $IMAGE_NAME $N; docker push $N; + fi + + # Push develop tag if the commit is on the develop branch + - if [ "$CI_COMMIT_REF_NAME" = "develop" ]; then + N=$(/ci-utils/build.sh get-image-name develop); + echo "Pushing image $N"; docker tag $IMAGE_NAME $N; docker push $N; fi