有些场景要求我们根据传入的参数做一些逻辑判断。很自然的,就想到在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 删除。