Gitlab持续集成「springboot篇」

Gitlab持续集成Runner的安装与配置

Gitlab持续集成详细配置与工作原理

为Gitlab持续集成打造一个部署用的docker

Gitlab持续集成「springboot篇」

Gitlab持续集成「PHP篇」

Gitlab持续集成「VUE篇」

java、vue等项目需要编译,所以,至少有两个job,一个是用 maven镜像打jar包,一个是发布到对应位置。

发布节点用到的镜像centos7-sshpass:1.0.0详见 《为Gitlab持续集成打造一个部署用的docker

案例

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
# 定义了两个流程
stages:
- prepare
- deploy

prepare: # job的名称,可以随便起
stage: prepare #这里要跟 stages 里面定义的保持一致
image: 'maven:3.6.3-openjdk-8' #用哪个镜像
cache: # 缓存
policy: pull-push #缓存方式 有 pull push pull-push
key: ${CI_COMMIT_REF_SLUG} #按照分支进行缓冲
paths:
- target/ #把target目录缓冲下来给下一步用
script: #执行脚本
- mvn -v && java -version
- mvn clean install
tags:
- java01 #对应的Runner的TAG,多个runner可以用同样的tag,到时候gitlab来分配具体用哪个runner来执行
only:
changes: 此步骤(job)通过文件修改来触发,下面定义的意思是,这两个文件其中一个有修改即触发执行
- dev_ver
- test_ver


deploy_dev: #往dev版发布
stage: deploy #这里要跟 stages 里面定义的保持一致
image: 'centos7-sshpass:1.0.0'
cache:
policy: pull #只读不写
key: ${CI_COMMIT_REF_SLUG} #按照分支进行缓冲
paths:
- target/
script:
- ls ./target/
# 拷贝jar包
- sshpass -p abcd scp -o StrictHostKeyChecking=no -P 1234 target/demo-0.0.1-SNAPSHOT.jar root@localhost:/app/demo-0.0.1-SNAPSHOT.jar
# 运行脚本
- sshpass -p abcd ssh -p 1234 root@localhost "/app/jenkins_restart.sh demo-0.0.1-SNAPSHOT >> /app/jenkins_restart.log"
tags:
- java01
only:
changes: #这里仅针对dev_ver的修改触发
- dev_ver


deploy_test: #往test版发包
stage: deploy
image: 'centos7-sshpass:1.0.0'
cache:
policy: pull #只读不写
key: ${CI_COMMIT_REF_SLUG} #按照分支进行缓冲
paths:
- target/
script:
- 。。。。。。
tags:
- java01
only:
changes:
- test_ver #仅 文件 test_ver修改时候触发

以上这个案例,定义了两个环节 preparedeploy,有三个job:

  • prepare: 在dev_ver或test_ver被修改时会被触发
  • deploy_dev: 在dev_ver被修改时会被触发
  • deploy_test: 在test_ver被修改时会被触发

那么,如果:

  • 项目根目录下的 dev_ver被修改,则会触发 prepare:deploy_dev:
  • 项目根目录下的 test_ver被修改,则会触发 prepare:deploy_test: