Как отметил @Matt Schuchard в комментарии, ваша первоначальная проблема - $(date +%a)
, которая заставляет его выполнить результат команды date +%a
.
Но это полностью решает вашу проблему, так как sh(returnStdout: true, script: 'date +%a')
будетне вернуть вам "Wed"
для среды, но "Wed\n"
.
Попробуйте:
steps {
script {
String v = sh(returnStdout: true, script: 'date +%a')
print v
print v.trim()
}
}
и результат будет выглядеть так:
![enter image description here](https://i.stack.imgur.com/uK49D.png)
Так что вы можете сделать как в моем примере и использовать trim()
:
when {
beforeAgent true
expression { sh(returnStdout: true, script: 'date +%a').trim() == 'Wed' }
}
Или, поскольку конвейеры Jenkins являются скриптами Groovy, вы можете сделать это в Groovy следующим образом:
def week = [1:'Sunday', 2:'Monday', 3:'Tuesday', 4:'Wednesday', 5:'Thursday', 6:'Friday', 7:'Saturday']
pipeline{
agent any
stages{
stage('stage'){
when {
beforeAgent true
expression { week[new Date()[Calendar.DAY_OF_WEEK]] == 'Wednesday' }
}
...
}