多分支构建的实践与思考
文章发布较早,内容可能过时,阅读注意甄别。
之前配置项都是基于单分支的构建,很多时候,我们更需要配置一个多分支的场景以应对更为多元的工作场景。
比如,我希望项目的测试环境以及预发环境都是推送代码之后自动构建的,这个时候,就可以在 Jenkins 中创建一个多分支 pipeline 项目,来满足如上场景。
首先创建一个新的项目,风格选择多分支 pipeline,然后进行简单配置:
然后在项目根目录创建 Jenkinsfile 文件:
pipeline {
agent any
environment {
remote_dir = "/opt/hello"
}
triggers{
gitlab( triggerOnPush: true,
triggerOnMergeRequest: true,
branchFilterType: 'All',
secretToken: "${env.git_token}")
}
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
disableConcurrentBuilds()
timeout(time: 10, unit: 'MINUTES')
timestamps()
}
stages {
stage('部署到测试环境'){
when {
branch 'test'
}
steps{
sh '''
rsync -avz --progress -e 'ssh -p 22' --exclude='Jenkinsfile' --exclude='.git' --delete ${WORKSPACE}/ root@192.168.3.68:$remote_dir
'''
}
}
stage('部署到线上环境') {
when {
branch 'master'
}
steps {
sh '''
rsync -avz --progress -e 'ssh -p 22' --exclude='Jenkinsfile' --exclude='.git' --delete ${WORKSPACE}/ root@192.168.3.61:$remote_dir
'''
}
}
stage('delete') {
steps {
echo '清理工作目录'
cleanWs()
}
}
}
post {
success {
sh "echo 成功了"
}
failure {
sh "echo 失败了"
}
}
}
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
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
配置了自动构建,然后使用 when 参数将不同分支代码分发到不同的部署环境中去,当我们的日常开发工作已经形成规范,那么这种多分支构建是非常方便的,开发者可以随便新建分支开发,合并到 test 并 push 就会触发测试环境的构建,同理亦然。
当我们把 Jenkinsfile 推上去,然后又创建了 test 分支,这里手动点击检索,两个分支就拉下来了,然后配置也会落位到两个分支中去,现在可以点开 test 分支配置看一眼:
!
这里可以看到 Jenkins 已经自动将 test 配置落位到对应环境中了,以便于我们推送代码之后自动构建。
当然了,如果有更加复杂的需求情况,可以发散自己的思维,结合前边的 Jenkinsfile 语法,配置出更加丰富的功能出来。
上次更新: 2024/11/28, 21:21:13