Это была ошибка пользователя с моей стороны; currentBuild.build().getActions(ParametersAction).get(0)
действительно возвращает правильные значения параметров. Оказывается, что одна из моих более ранних неудачных попыток установила все значения параметров моего конвейера, за исключением значения параметра PROJECT_NAME, к их значениям по умолчанию.
Одним из побочных эффектов использования build.replaceAction()
является то, что он действительно изменяется значение параметра PROJECT_NAME построения конвейера в веб-клиенте Jenkins. Поэтому, когда я go выполняю перестройку, параметр PROJECT_NAME имеет значение обновления (пробелы заменены на тире), что на самом деле не то, что я хочу.
Кроме того, в начале я попробовал более простое решение: установка params.PROJECT_NAME
в новое значение:
// Replace spaces in PROJECT_NAME parameter with dashes
script {
params.PROJECT_NAME = "${params.PROJECT_NAME}".replaceAll(" ", "-")
}
Однако это не удалось с java.lang.UnsupportedOperationException
, поскольку объект params
поддерживается java.util.Collections$UnmodifiableMap
.
Я не был Помните, что значения параметров конвейера также доступны через объект env
(спасибо zett42 за это). Поэтому я попытался установить env.PROJECT_NAME
:
// Replace spaces in PROJECT_NAME parameter with dashes
script {
env.PROJECT_NAME = "${env.PROJECT_NAME}".replaceAll(" ", "-")
}
Это работало просто отлично без изменения значения параметра PROJECT_NAME сборки конвейера в веб-клиенте Jenkins.