summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: f5e807057126c19364b2078c268e2e619579925e (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#stages定义pipeline的全部阶段(stage),阶段内所有任务并行执行,123456
#全部执行成功开始下一阶段任务,任何阶段内任意job执行失败都会导致pipeline失败,
#所有stage,job执行成功后pipeline会显示pass。如果未定义stages,则默认有build、
#install,install_clean和build_imag三个阶段,如果未定义stage,则默认test阶段

#这里定义三个阶段(stages),install,install_clean和build_image,stages中的阶段按写的顺序进行,先执行install,然后执行install_clean,然后在执行build_image
stages:
  - gen_git-log
  - test
  - build_image
  - package_clean

variables:
  XJAR_PIN: 111111

before_script:
  - export CNWEB_TAG=$(date +%Y%m%d%H%M%S)

generate_git-log:
  stage: gen_git-log
  script:
    - "git log -100 --pretty=format:'%ad : %s' >> ./cn-admin/src/main/resources/git.log"
  artifacts:
    paths:
      - ./cn-admin/src/main/resources/git.log
  only:
    - dev-23.07
  tags:
    - galaxy

test:
  stage: test
  script:
    - mvn clean test
  after_script:
    - export JUNI_REPORT_NAME=cn-$CI_COMMIT_REF_NAME-test-report-$(date +%Y%m%d%H%M%S).tar.gz
    - echo $JUNI_REPORT_NAME
    - cd ./cn-admin/target
    - tar -zcvf $JUNI_REPORT_NAME surefire-reports
    - sudo scp $JUNI_REPORT_NAME [email protected]:/opt/cn/document/
    - cd ../../
  when: on_success
  only:
    - dev-23.07
  tags:
    - galaxy

#job的名称,自定义
build_image:
  #上面定义的stages
  stage: build_image
  #执行的脚本内容
  script:
    - echo '提交的分支是'
    - echo $CI_COMMIT_REF_NAME
    - echo 'XJAR_PIN :' $XJAR_PIN
    - echo 'CNWEB_TAG:' $CNWEB_TAG
    - echo 'exec build_image'
    - cd cn-admin && mvn package -Dxjar.password=$XJAR_PIN -Dmaven.test.skip=true docker:build -DpushImage -DdockerImageTags=$CNWEB_TAG -DdockerImageName=192.168.40.153:9080/cyber-narrator/cn-web-$CI_COMMIT_REF_NAME:$CNWEB_TAG
  #when用于当前一阶段任务故障或者忽略故障的job任务,主要用于清理发生故障时的后续措施。
  #可选项
  #on_success - 默认参数,前一阶段任务成功时才执行
  #on_failure - 前一阶段任务故障时才执行
  #always - 无论前一阶段任务是否成功都执行
  #manual - 手动设置,比较复杂,略过。
  when: on_success
  only:
    - dev-23.07
  tags:
    - galaxy

build_release_image:
  stage: build_image
  script:
    - echo 'tag名称是'
    - echo $CI_COMMIT_TAG
    - echo '提交的版本是'
    - echo $CI_COMMIT_REF_NAME
    - echo 'exec build_image'
    - cd cn-admin && mvn package -Dxjar.password=$XJAR_PIN -Dmaven.test.skip=true docker:build -DpushImage -DdockerImageTags=$CNWEB_TAG -DdockerImageName=192.168.40.153:9080/cyber-narrator/cn-web:$CI_COMMIT_TAG
  only:
    - tags
  tags:
    - galaxy

package_clean:
  stage: package_clean
  script:
    - echo '提交的版本是'
    - echo $CI_COMMIT_REF_NAME
    - echo 'last job exec fail, exec mvn clean'
    - mvn clean
  when: on_failure
  only:
    - dev-23.07
  tags:
    - galaxy