继续来学习pipeline basic steps里面的方法,前面学习了文件夹相关的操作方法,这篇来学习几个布尔类型的返回值的方法。第一个是判断一个文件是否存在,第二个是判断当前执行的环境是不是Linux还是windows。

1方法fileExists

这是判断一个文件是否存在,返回值是布尔类型,true就表示文件存在,false表示文件不存在。这个我一般是用来验证判断,例如,我调用了一个请求,然后把请求回来的数据保存为一个log或者json文件。我在解析这个文件之前,我会对这个文件是否存在进行判断,这个时候就可以使用fileExists,这个方法经常需要使用,你需要重点掌握。

代码

import hudson.model.*;

println env.JOB_NAME
println env.BUILD_NUMBER

pipeline{
	
	agent any
	stages{
		stage("fileExists") {
			steps{
				script {
					json_file = "${env.WORKSPACE}/testdata/test_json.json"
					if(fileExists(json_file) == true) {
						echo("json file is exists")
					}else {
						error("here haven't find json file")
					}
				}
			}
		}
	}
}


关键日志:

[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (fileExists)
[Pipeline] script
[Pipeline] {
[Pipeline] fileExists
[Pipeline] echo
json file is exists
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

我这边测试结果通过,参考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 代码

import hudson.model.*;

println env.JOB_NAME
println env.BUILD_NUMBER

pipeline{
	
	agent any
	stages{
		stage("fileExists") {
			steps{
				script {
					if(isUnix() == true) {
						echo("this jenkins job running on a linux-like system")
					}else {
						error("the jenkins job running on a windows system")
					}
				}
			}
		}
	}
}


我的jenkins master是linux,所以上面输出的是

[Pipeline] stage
[Pipeline] { (fileExists)
[Pipeline] script
[Pipeline] {
[Pipeline] isUnix
[Pipeline] echo
this jenkins job running on a linux-like system
[Pipeline] }
[Pipeline] // script

3.方法pwd()

其实这个方法和linux下的shell命令pwd是一样的。由于jenkins支持windows和linux,但是linux是pwd,windows上是dir。所以这个插件就干脆支持一个方法,统称为pwd(),下面来试试linux上shell和插件本身方法pwd()是否是一样效果。

import hudson.model.*;

println env.JOB_NAME
println env.BUILD_NUMBER

pipeline{
	
	agent any
	stages{
		stage("fileExists") {
			steps{
				script {
					sh("pwd")
					println "==========="
					println pwd()
				}
			}
		}
	}
}

关键日志

[pipeline_basic_steps] Running shell script
+ pwd
/var/lib/jenkins/workspace/pipeline_basic_steps
[Pipeline] echo
===========
[Pipeline] pwd
[Pipeline] echo
/var/lib/jenkins/workspace/pipeline_basic_steps
[Pipeline] }
[Pipeline] // script

这个方法pwd()在windows上也可以运行,只不过我没有连接window的agent机器

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐