sor*_*rin 2 groovy jenkins jenkins-pipeline
我有当前的 Groovy(Jenkins DSL 风格),我想让包装块可选。
timestamps {
ansiColor('xterm') {
sh cmd
}
}
Run Code Online (Sandbox Code Playgroud)
新功能:
def use_timestamps = true // or false
def use_ansiColor = false // or true
/* some code to run the `sh cmd` with or without blocks */
Run Code Online (Sandbox Code Playgroud)
附注。我知道我可以让它与两组 if 块一起工作,但它看起来非常难看,我想避免这种情况。如果添加一个新的包装器,它可能会变成一场噩梦。
没有适用于任意包装器的通用解决方案。您提到的 if 块将需要以某种形式来实现您想要的。
但是,您可以通过将条件转化为方法来稍微改善问题。
def use_timestamps = true // or false
def use_ansiColor = false // or true
timestampsOptional(use_timestamps) {
ansiColorOptional(use_ansiColor, 'xterm') {
sh cmd
}
}
def timestampsOptional(active, Closure action) {
if (active) {
timestamps action
} else {
action()
}
}
def ansiColorOptional(active, encoding, Closure action) {
if (active) {
ansiColor(encoding) action
} else {
action()
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以将这些方法移动到共享库中,从而避免丑陋Jenkinsfile并允许其他管道重用它们。
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |