Jenkins高级篇之Pipeline方法篇-Pipeline Basic Steps-2-方法fileExists、isUnix、pwd

释放双眼,带上耳机,听听看~!

继续来学习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机器

给TA打赏
共{{data.count}}人
人已打赏
安全经验

职场中的那些话那些事

2021-9-24 20:41:29

安全经验

网站日志统计案例分析与实现

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索