有些场景要求我们根据传入的参数做一些逻辑判断。很自然的,就想到在script函数内实现 stage(“deploy to test”){ steps{ script { if (params.CHOICES == ‘test’) { echo “deploy to test” } } } }
这样写起来很不优雅,Conditional BuildStep插件可以让我们像使用when指令一样进行条件判断。一下代码是安装后的写法
pipeline {
agent any
parameters {
choice(name:'CHOICES', choices:'dev\ntest\nstaging', description:'请选择部署的环境')
}
stages {
stage("deploy test")
{
when {
expression {return params.CHOICES ==
'test'}
}
steps {
echo "deploy to test"
}
}
stage("deploy staging")
{
when {
expression {return params.CHOICES ==
'staging'}
}
steps {
echo "deploy to staging"
}
}
}
}
现实中,我们会面对更复杂的判断条件。而expression表达式本质上就是一个Groovy代码矿,大大提高了表达式的灵活性。
或逻辑
when {
// A or B
expression {return A || B}
}
与逻辑
when {
// A or B
expression {return A && B}
}
从文件中取值
when {
expression {return readFile('pom.xml').contains('mycomponent')}
}
正则表达式
when {
expression {return token ==~
/(?i)(Y|YES|T|TRUE|ON|RUN)/}
}
Ant是比Maven更老的Java构建工具。Ant发明了一种描述文件路径的表达式,大家都习惯称其为Ant风格路径表达式。Jenkins pipeline的很多步骤的参数也会使用此变道时。
Path | Description |
---|---|
/app/*.x | 匹配(Matches)app路径下所有.x文件 |
/app/p?ttern | 匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern |
/**/example | 匹配项目根路径下 /project/example, /project/foow/example, 和 /example |
/app/**/dir/file. | 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java |
/**/*.jsp | 匹配项目根路径下任何的.jsp 文件 |
需要注意的是,路径匹配遵循最长匹配原则(has more characters),例如/app/dir/file.jsp符合/**/.jsp和/app/dir/.jsp两个路径模式,那么最终就是根据后者来匹配。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。