stages: - package - build_image package: stage: package # 当默认分支有提交或合并请求时,执行 package 阶段 rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_TAG # package 阶段使用 gradle 进行编译 image: gradle:8.7.0-jdk21 cache: paths: - .gradle before_script: - GRADLE_USER_HOME=".gradle" - export GRADLE_USER_HOME script: - echo "Gradle building started..." - gradle bootJar - cp build/libs/*.jar ./application.jar - echo "Extract jar file..." - java -Djarmode=layertools -jar application.jar extract --destination extracted artifacts: paths: - extracted build_image: stage: build_image # 当有分支打标签时,执行 package 和 build_image 阶段 rules: - if: $CI_COMMIT_TAG # build_image 阶段使用 docker 进行构建 image: docker:26.0.1-dind services: - docker:26.0.1-dind variables: DOCKER_TLS_CERTDIR: "/certs" script: - echo "Docker build image..." - docker login -u $REGISTRY_USER -p $REGISTRY_PASSWORD $REGISTRY_HOST - image_name=$REGISTRY_HOST/fortern/message-api:$CI_COMMIT_TAG - docker build -t $image_name . - echo "Docker push image..." - docker image push $image_name