stages:
  - build
  - package
  - deploy

cache:
  paths:
    - target
# 基础构建阶段
build:
  stage: build
  before_script:
    - echo "开始构建项目..."
  script:
    - echo "正在执行 mvn clean install..."
  after_script:
    - echo "构建完成..."
  #when: manual #手动

#  when: delayed # 延迟执行,默认延迟5秒
#  start_in: 5s

#  when: on_success #当前面成功了运行
#  when: on_failure #当前面失败了
  retry: 2 #如果错误了。重试次数。如果任务失败,将重试的次数。默认为0次,最多可重试2次(总共执行3次)
  timeout: 1h 10m #超时1小时10分钟
#  parallel: 5 #并行执行任务数。

  rules:
    - if: $CI_COMMIT_REF_NAME == "main"
#      when: always
#    - changes: # 指定哪些文件有变化
#        - pom.xml

  allow_failure: true #允许作业失败,false不允许失败,不阻塞后面的作业
  tags:
    - java   # ✅ 指定必须由带有 'java' 标签的 Runner 执行

# 打包阶段
package:
  stage: package
  script:
    - echo "开始打包项目..."
  rules:
    - if: $CI_COMMIT_REF_NAME == "main"
  artifacts:  #  制品:打包文件
    name: "my-project-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
    when: on_success
    paths:
      - target/*.jar


  tags:
    - java   # 指定必须由带有 'java' 标签的 Runner 执行

# 部署
deploy_staging:
  stage: deploy
  script:
    - echo "部署到测试环境..."
  environment: staging
  rules:
    - if: $CI_COMMIT_REF_NAME == "main"
  tags:
    - java # 指定必须由带有 'java' 标签的 Runner 执行