stash步骤可以将一些文件保存起来,以便被同一次构建的其他步骤或阶段使用。如果整个pipeline的所有阶段在同一台机器上执行,则stash步骤是多余的。所以,通常需要stash的文件都是要跨Jenkins node使用的。
stash步骤会将文件存储在tar文件中,对于大文件的stash操作将会消耗Jenkins master的计算资源。Jenkins官方文档推荐,当文件大小为5∼100MB时,应该考虑使用其他替代方案。
stash步骤的参数列表如下:
除了name参数,其他参数都是可选的。excludes和includes使用的是Ant风格路径表达式。
unstash步骤取出之前stash的文件。只有一个name参数,即stash时的唯一标识。通常stash与unstash步骤同时使用。
stash步骤在master节点上执行,而unstash步骤在node2节点上执行。
pipeline {
agent none
stages {
stage('stash')
{
agent { label "master"
}
steps {
script {
writeFile file:
"a.txt", text:
"$BUILD_NUMBER"
stash(name:
"abc", include:
"a.txt")
}
}
}
stage("unstash")
{
agent { label "node2"
}
steps {
script {
unstash("abc")
def content = readFile("a.txt")
echo "${content}"
}
}
}
}
}
直接执行groovy的命令会报错,需要用script括起来。与命令相关的步骤其实是Pipeline:Nodes and Processes插件提供的步骤。由于它是Pipeline插件的一个组件,所以基本不需要单独安装。
script {
def browsers =
['chrome',
'firefox']
for
(int i =
0; i < brosers.size();
++i)
{
echo "this is ${browsers[i]}"
}
}
执行shell命令
sh步骤支持的参数有:
sh "ls"
sh(script:
"/root/test.sh", returnStdout: true)
bat步骤执行的是Windows的批处理命令。powershell步骤执行的是PowerShell脚本,支持3+版本。这两个步骤支持的参数与sh步骤的一样。
在Jenkins pipeline中可以使用build步骤实现调用另一个pipeline功能。build步骤是pipeline插件的一个组件,所以不需要另外安装插件,可以直接使用。
build步骤其实也是一种触发pipeline执行的方式,它与triggers指令中的upstream方式有两个区别: 1.build步骤是由上游pipeline使用的,而upstream方式是由下游pipeline使用的。 2.build步骤是可以带参数的,而upstream方式只是被动触发,并没有带参数。
调用本章开头的例子,可以steps部分这么写:
steps {
build(
job:"parameters-example",
parameters:
[
booleanParam(name:'userFlag', value:true)
]
)
}
build步骤的基本2个参数 job(必填):目标Jenkins任务的名称 parameters(可选):数组类型,传入目标pipeline的参数列表。传参方法与定参方法类似
parameters:
[
booleanParam(name:'DEBUG_BUILD', value:true),
password(name:'PASSWORD', value:'prodSECRET'),
string(name:'DEPLOY_ENV', value:'prod'),
text(name:'DEPLOY_TEXT', value:'a\n\b\nc\n'),
string(name:'CHOICES00', value:'dev')
]
我们注意到choice类型的参数没有对应的传参方法,而是使用string传参方法代替的。
除此之外,build步骤还支持其他三个参数 propagate(可选): 布尔类型,如果值为true,则只有当下游pipeline的最终结构状态为SUCCESS时,上游pipeline才算成功;如果值为flase,则不论下游pipeline的最终构建状态是什么,上游pipeline都忽略。默认值为true
quietPeriod(可选): 整形,触发下游pipeline后,下游pipeline等待多久执行。如果不设置此参数,则等待时长由下游pipeline确定,单位为秒。
wait(可选): 布尔类型,是否等待下游pipeline执行完成。默认值为true。
如果你使用了Folder插件,那么就需要注意build步骤的job参数的写法了。 使用Folder插件,可以让我们像管理文件夹下的文件一样来管理Jenkins项目。我们的Jenkins项目可以创建在这些文件夹下。如果目标pipeline与源pipeline在同一目录下,则可以直接使用名称; 如果不在同一目录下,则需要指定相对路径,如 ../sister-folder/downstream 或绝对路径。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有