持续集成:Jenkinsfile使用方法介绍

在pipeline项目中,可以直接在jenkins的web UI上编写pipeline脚本,还有一种方法是使用Jenkinsfile,它放在源码管理库中,比如github、SVN等。为了使pipeline项目管理更加方便,推荐使用这种方式。本文将介绍pipeline项目如何使用Jenkinsfile。

1. 编写jenkinsfile

持续集成:Jenkins Pipeline语法介绍 中介绍了pipeline支持的两种语法:Declarative 和 Scripted Pipeline。编写pipeline脚本保存为jenkinsfile文本文件,示例脚本如下:

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
pipeline {
agent any
stages {
stage('begin'){
steps {
echo 'begin'
sleep 2
}
}
stage('running'){
steps {
echo 'running'
script {
RUNNING_STATU = sh (
script: "echo 'running'",
returnStatus: true
) == 0

if ("${RUNNING_STATU}" == "false") {
catchError(stageResult: 'FAILURE') {
echo "执行失败"
}
sh "EXIT 1"
}
}
sleep 2
}
}
stage('finish'){
steps {
echo 'finish'
sleep 2
}
}
}
post {
success {
echo 'success!'
sleep 2
}
failure {
echo 'failed...'
sleep 2
}
always {
echo 'goodbye'
}
}
}

保存脚本为文本文件:declareative_helloworld,上传到github或者SVN服务器中。

2. pipeline项目配置

创建一个pipeline项目(可选择Pipeline或者多分支流水线),pipeline脚本定义选择Pipeline script from SCM,

Git库配置方法:

SVN库配置方法:

3. 构建

配置完成后保存,构建时会检出jenkinsfile后执行jenkinsfile中的流水线步骤。比如SVN库的构建日志如下:

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
Started by user admin
Obtained declareative_helloworld from svn svn://192.168.30.8/project/jenkins-pipeline
[Pipeline] Start of Pipeline
[Pipeline] node
Running on master in /tmp/jenkins_slave/workspace/jenkinsfile_demo2
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
Checking out a fresh workspace because /tmp/jenkins_slave/workspace/jenkinsfile_demo2 doesn't exist
Cleaning local Directory .
Checking out svn://192.168.30.8/project/jenkins-pipeline at revision '2022-04-19T20:22:48.150 +0800' --quiet
At revision 35

[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (begin)
[Pipeline] echo
begin
[Pipeline] sleep
Sleeping for 2 sec
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (running)
[Pipeline] echo
running
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ echo running
running
[Pipeline] }
[Pipeline] // script
[Pipeline] sleep
Sleeping for 2 sec
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (finish)
[Pipeline] echo
finish
[Pipeline] sleep
Sleeping for 2 sec
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] echo
goodbye
[Pipeline] echo
success!
[Pipeline] sleep
Sleeping for 2 sec
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
--THE END--

“我与我周旋久,宁作我!” ——《世说新语·品藻》


本文标题:持续集成:Jenkinsfile使用方法介绍

文章作者:hiyo

文章链接:https://hiyongz.github.io/posts/continuous-integration-for-source-control-jenkinsfile/

许可协议:本博客文章除特别声明外,均采用CC BY-NC-ND 4.0 许可协议。转载请保留原文链接及作者。

关注微信公众号,及时接收最新技术文章!