一 environment指令指定一系列键值对,这些对值将被定义为所有步骤的环境变量或阶段特定步骤
environment{…}, 大括号里面写一些键值对,也就是定义一些变量并赋值,这些变量就是环境变量。环境变量的作用范围,取决你environment{…}所写的位置,你可以写在顶层环境变量,让所有的stage下的step共享这些变量,也可以单独定义在某一个stage下,只能供这个stage去调用变量,其他的stage不能共享这些变量。一般来说,我们基本上上定义全局环境变量,如果是局部环境变量,我们直接用def关键字声明就可以,没必要放environment{…}里面。
//全局
pipeline { agent any environment { unit_test = true } stages { stage('Example') { steps { script{ if(unit_test == true){ println "变量为真 " } }} } } }
二 dir ,deleteDir
dir()方法:就是改变当前的工作目录,在dir语句块里执行的其他路径或者相对路径
deleteDir()方法:默认递归删除WORKSPACE下的文件和文件夹,没有参数,使用这个方法会留下一个后遗症:
执行这个job的时候,你之前已经在这个工作目录下面,你再建一个目录就会报错:mkdir: 无法创建目录"testdata": 没有那个文件或目录,这是个很矛盾的报错
解决方法:使用cd重新切换到当前目录,再执行mkdir操作
举例如下:
pipeline{ agent any stages{ stage("deleteDir") { steps{ script{ println env.WORKSPACE dir("${env.WORKSPACE}/testdata"){ //切换到当前工作目录下的testdata目录 sh "pwd" //sh命令可以 sh "command..." 也可以 sh("command....") } sh("ls -al ${env.WORKSPACE}") deleteDir() // clean up current work directory //清空目录 sh("ls -al ${env.WORKSPACE}") } } } } }
执行结果
Started by user admin Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /root/.jenkins/workspace/pipe-example [Pipeline] { [Pipeline] stage [Pipeline] { (deleteDir) [Pipeline] script [Pipeline] { [Pipeline] echo /root/.jenkins/workspace/pipe-example #println env.WORKSPACE
[Pipeline] dir Running in /root/.jenkins/workspace/pipe-example/testdata
[Pipeline] { [Pipeline] sh + pwd /root/.jenkins/workspace/pipe-example/testdata [Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ ls -al /root/.jenkins/workspace/pipe-example
总用量 4
drwxr-xr-x 4 root root 42 9月 4 11:33 .
drwxr-xr-x 28 root root 4096 9月 4 11:24 ..
drwxr-xr-x 2 root root 22 9月 4 11:2