image: openjdk:17-jdk-slim stages: - prepare - build - release before_script: # - echo `pwd` # debug # - echo "$CI_BUILD_NAME, $CI_BUILD_REF_NAME $CI_BUILD_STAGE" # debug - export GRADLE_USER_HOME=`pwd`/.gradle prepare_job: stage: prepare # This stage must run before the release stage rules: - if: $CI_COMMIT_TAG when: never # Do not run this job when a tag is created manually - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch script: - echo "TAG=RELEASE" >> variables.env # and append to the variables.env file artifacts: reports: dotenv: variables.env # Use artifacts:reports:dotenv to expose the variables to other jobs cache: paths: - .gradle/wrapper - .gradle/caches build: stage: build rules: script: - ./gradlew assemble artifacts: paths: - build/libs/*.jar expire_in: 1 week only: - master release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest needs: - job: build artifacts: true rules: - if: $CI_COMMIT_TAG when: never # Do not run this job when a tag is created manually - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch script: - echo "running release for v1" release: name: 'Release v1' description: 'Created using the release-cli $EXTRA_DESCRIPTION' # $EXTRA_DESCRIPTION and the $TAG tag_name: 'v1' # variables must be defined elsewhere ref: '$CI_COMMIT_SHA' # in the pipeline. For example, in the