summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 12dfad6d3805aac08413449d4698ce7dcbaf8e3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
image: 192.168.40.153:9080/common/maven:3.8.1-openjdk-11-slim

variables:
  MAVEN_CLI_OPTS: --batch-mode --errors --show-version
  SONAR_HOST_URL: http://192.168.40.153:9900
  SONAR_PROJECT_KEY: groot-stream
  
stages:
  - test
  - build
  - deploy

# 代码测试
test:
  stage: test
  script:
    - echo "$MAVEN_SETTINGS_XML" > /usr/share/maven/conf/settings.xml
    # 由于该项目引用了自身子模块中使用 shade-plugin 生成的 uber-jar, 
    # 故而导致需要先执行这些子模块的 package 操作才能使其他模块正常执行 test,所以此处使用 package 代替 test 用于执行单元测试
    - mvn $MAVEN_CLI_OPTS clean package
  only:
    - merge_requests
    - tags

# 构建。一般用于构建 develop 分支上的 snapshot 版本。
build:
  stage: build
  script:
    - echo "$MAVEN_SETTINGS_XML" > /usr/share/maven/conf/settings.xml
   # - mvn $MAVEN_CLI_OPTS enforcer:enforce@snapshot-version-check
    - mvn $MAVEN_CLI_OPTS clean package -DskipTests
  only:
    - develop

# 发布。用于发布候选版本,正式版本以及修订版等 release 版本。
deploy:
  stage: deploy
  script:
    - echo "$MAVEN_SETTINGS_XML" > /usr/share/maven/conf/settings.xml
    - mvn $MAVEN_CLI_OPTS enforcer:enforce@release-version-check
    - |-
      mvn $MAVEN_CLI_OPTS clean verify sonar:sonar -Dsonar.projectKey=$SONAR_PROJECT_KEY \
      -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_LOGIN_TOKEN \
      -Dsonar.qualitygate.wait=true -Dsonar.qualitygate.timeout=300
    - mvn $MAVEN_CLI_OPTS clean deploy -DskipTests
  only:
    - tags