diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db0ad64b4974539df266698dcb0057eae0580458..87ea8797019b637fa796a38ffa7127800dcbc575 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,46 @@ stages: - - deploy + - java_build + - docker_build -deploy: - stage: deploy +.default_rules: &default_rules + rules: + - if: '$CI_COMMIT_REF_NAME == "main"' + - if: '$CI_COMMIT_REF_NAME == "develop"' + - if: '$CI_COMMIT_REF_NAME == "12-create-a-pipeline-to-build-and-publish-the-docker-image-in-gitlab-registry"' + +variables: + DEFAULT_TAG: "1.2.0-SNAPSHOT" + +before_script: + - | + if [ "$CI_COMMIT_REF_NAME" = "main" ] && [ -n "$CI_COMMIT_TAG" ]; then + export APP_VERSION=$CI_COMMIT_TAG + elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then + export APP_VERSION="develop" + else + export APP_VERSION=$DEFAULT_TAG + fi + +java_build: + stage: java_build image: maven:3.9.5-ibm-semeru-17-focal script: - - mvn deploy -s ci_settings.xml -DskipTests + - mvn deploy -s ci_settings.xml -DskipTests -Dversion=$APP_VERSION + artifacts: + paths: + - target/ + <<: *default_rules + +.docker_build: + stage: docker_build + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] + script: + - /kaniko/executor --context "${CI_PROJECT_DIR}" --dockerfile "${CI_PROJECT_DIR}/Dockerfile" --destination "${CI_REGISTRY_IMAGE}:$APP_VERSION" + - | + if [ "$CI_COMMIT_REF_NAME" = "main" ]; then + echo "Pushing Docker image with tag 'latest'" + /kaniko/executor --context "${CI_PROJECT_DIR}" --dockerfile "${CI_PROJECT_DIR}/Dockerfile" --destination "${CI_REGISTRY_IMAGE}:latest" + fi + <<: *default_rules