继续来学习pipeline basic steps里面的方法,前面学习了文件夹相关的操作方法,这篇来学习几个布尔类型的返回值的方法。第一个是判断一个文件是否存在,第二个是判断当前执行的环境是不是Linux还是windows。
1方法fileExists
这是判断一个文件是否存在,返回值是布尔类型,true就表示文件存在,false表示文件不存在。这个我一般是用来验证判断,例如,我调用了一个请求,然后把请求回来的数据保存为一个log或者json文件。我在解析这个文件之前,我会对这个文件是否存在进行判断,这个时候就可以使用fileExists,这个方法经常需要使用,你需要重点掌握。
代码
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 1import hudson.model.*;
2
3println env.JOB_NAME
4println env.BUILD_NUMBER
5
6pipeline{
7
8 agent any
9 stages{
10 stage("fileExists") {
11 steps{
12 script {
13 json_file = "${env.WORKSPACE}/testdata/test_json.json"
14 if(fileExists(json_file) == true) {
15 echo("json file is exists")
16 }else {
17 error("here haven't find json file")
18 }
19 }
20 }
21 }
22 }
23}
24
25
26
27
关键日志:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 1[Pipeline] }
2[Pipeline] // stage
3[Pipeline] withEnv
4[Pipeline] {
5[Pipeline] stage
6[Pipeline] { (fileExists)
7[Pipeline] script
8[Pipeline] {
9[Pipeline] fileExists
10[Pipeline] echo
11json file is exists
12[Pipeline] }
13[Pipeline] // script
14[Pipeline] }
15[Pipeline] // stage
16[Pipeline] }
17[Pipeline] // withEnv
18[Pipeline] }
19[Pipeline] // node
20[Pipeline] End of Pipeline
21Finished: SUCCESS
22
我这边测试结果通过,参考job:http://65.49.216.200:8080/job/pipeline_basic_steps/21/console
2方法isUnix()
这个方法是判断当前运行的Jenkins node环境是linux还是windows,如果返回是true表示是linux/mac系统,如果返回是false,表示当前jenkins job运行在windows的系统上。
pipeline stage 代码
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 1import hudson.model.*;
2
3println env.JOB_NAME
4println env.BUILD_NUMBER
5
6pipeline{
7
8 agent any
9 stages{
10 stage("fileExists") {
11 steps{
12 script {
13 if(isUnix() == true) {
14 echo("this jenkins job running on a linux-like system")
15 }else {
16 error("the jenkins job running on a windows system")
17 }
18 }
19 }
20 }
21 }
22}
23
24
25
26
我的jenkins master是linux,所以上面输出的是
1
2
3
4
5
6
7
8
9
10 1[Pipeline] stage
2[Pipeline] { (fileExists)
3[Pipeline] script
4[Pipeline] {
5[Pipeline] isUnix
6[Pipeline] echo
7this jenkins job running on a linux-like system
8[Pipeline] }
9[Pipeline] // script
10
3.方法pwd()
其实这个方法和linux下的shell命令pwd是一样的。由于jenkins支持windows和linux,但是linux是pwd,windows上是dir。所以这个插件就干脆支持一个方法,统称为pwd(),下面来试试linux上shell和插件本身方法pwd()是否是一样效果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 1import hudson.model.*;
2
3println env.JOB_NAME
4println env.BUILD_NUMBER
5
6pipeline{
7
8 agent any
9 stages{
10 stage("fileExists") {
11 steps{
12 script {
13 sh("pwd")
14 println "==========="
15 println pwd()
16 }
17 }
18 }
19 }
20}
21
22
关键日志
1
2
3
4
5
6
7
8
9
10
11 1[pipeline_basic_steps] Running shell script
2+ pwd
3/var/lib/jenkins/workspace/pipeline_basic_steps
4[Pipeline] echo
5===========
6[Pipeline] pwd
7[Pipeline] echo
8/var/lib/jenkins/workspace/pipeline_basic_steps
9[Pipeline] }
10[Pipeline] // script
11
这个方法pwd()在windows上也可以运行,只不过我没有连接window的agent机器