variables:
  # sonner scanner 安装目录
  SCANNER_HOME : "/usr/local/sonar-scanner-4.6.2.2472-linux"
  # 扫描代码路径
  SCAN_DIR : "src"
  # 制品目录
  ARTIFACT_PATH : 'target/*.jar'  
  # maven 仓库地址
  MAVEN_REPO: /root/.m2/repository

stages:
  - compile
  
编译:
  stage: compile
  tags:
    - test
  # interruptible 当新管道在同一分支上启动时，可以取消正在运行的作业。
  interruptible: true
  # 是否允许失败，允许的话如果当前阶段运行失败还会继续执行下一个阶段
  allow_failure: false
  # 运行脚本
  script:
    - java -version
    - mvn -version
    # maven 编译
    - mvn -Dmaven.repo.local=$MAVEN_REPO clean -U package -Dfile.encoding=UTF-8 -DskipTests=true
    # 代码扫描
    - "$SCANNER_HOME/bin/sonar-scanner -Dsonar.projectKey=${CI_PROJECT_NAME} \
                                      -Dsonar.projectName=${CI_PROJECT_NAME} \
                                      -Dsonar.projectVersion=${CI_COMMIT_REF_NAME} \
                                      -Dsonar.ws.timeout=30 \
                                      -Dsonar.projectDescription=${CI_PROJECT_TITLE} \
                                      -Dsonar.links.homepage=${CI_PROJECT_URL} \
                                      -Dsonar.sources=${SCAN_DIR} \
                                      -Dsonar.sourceEncoding=UTF-8 \
                                      -Dsonar.java.binaries=target/classes \
                                      -Dsonar.java.test.binaries=target/test-classes \
                                      -Dsonar.java.surefire.report=target/surefire-reports \
                                      -Dsonar.branch.name=${CI_COMMIT_REF_NAME}"
    - ls -lh target/
  # Maven编译，所以会有Jar包产物，这里定义产物的过期时间
  artifacts:
    name: $PROJECT
    expire_in: 1 days
    paths:
      - target/*.jar
