я пытаюсь разобраться с этим с помощью сценария groovy для jenkins.
Вот так выглядит мой код (только важная часть, делающая его читабельным):
node {
properties([
parameters([
string(defaultValue: '', name: 'ENVIRONMENT'),
string(defaultValue: '', name: 'GROUP'),
string(defaultValue: '', name: 'COMMIT_HASH')
])
])
try {
stage('Clean before checkout') {
sh "git clean -xfd -e '.composer' -e 'vendor' | echo 'Cleanup done!'"
}
// If environment is feature, update .env variables to use the specified commit hash
if (ENVIRONMENT == 'feature' ) {
sh """
sed -i -e 's/COMMIT_HASH/${params.COMMIT_HASH}/g' .env
"""
}
}
...
...
Итак, я запускаю этот конвейер от других, и в некоторых случаях COMMIT_HA SH может быть пустым. Когда commit_ha sh существует, код работает как положено. Но когда это не так, даже если конвейер работает полностью, в конце я всегда получаю:
groovy.lang.MissingPropertyException: No such property: COMMIT_HASH for class: groovy.lang.Binding
Использование следующего также не сработало: sed -i -e 's/COMMIT_HASH/${COMMIT_HASH}/g' .env
Почему он не работает хотя условие не выполнено? Хотите полностью понять, как это работает, любая помощь приветствуется! Спасибо