DSL задания Дженкинса: учетные данные не найдены созданным заданием: «Не удалось найти запись учетных данных»; работает после сохранения

#jenkins #credentials #jenkins-job-dsl

Вопрос:

TL;DR: Задания, созданные с помощью Job DSL, не могут найти существующие учетные данные, что позволяет сохранить задание в графическом интерфейсе.

Моя Конфигурация:

  • Дженкинс 2.277.4
  • Работа DSL 1.77
  • Плагин учетных данных 2.3.13
  • Плагин привязки учетных данных 1.23 Они довольно старые, но я жду обновления от наших администраторов…

Шаги:

  1. Дженкинс содержит учетные данные типа «Секретный текст» с идентификатором = foo-bar.пароль .
  2. Задание job01 создается с помощью задания DSL и использует эти учетные данные, см. Фрагмент:
 ... job.with {  wrappers {  credentialsBinding {  string('FOO_BAR_PASSWORD', 'foo-bar.password')  }  } }  
  1. При запуске job01 происходит сбой с ERROR: Could not find credentials entry with ID 'foo-bar.password'
  2. Сброс задания config.yml приводит к этому блоку оболочки:
 ...  lt;buildWrappersgt;  lt;org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrappergt;  lt;bindingsgt;  lt;org.jenkinsci.plugins.credentialsbinding.impl.StringBindinggt;  lt;variablegt;FOO_BAR_PASSWORDlt;/variablegt;  lt;credentialsIdgt;foo-bar.passwordlt;/credentialsIdgt;  lt;/org.jenkinsci.plugins.credentialsbinding.impl.StringBindinggt;  lt;/bindingsgt;  lt;/org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrappergt;  lt;/buildWrappersgt; ...  
  1. Настройте задание с помощью графического интерфейса, ничего не меняйте, сохраните его.
  2. Работа работает
  3. Сброс конфигурации задания.yml теперь дает этот блок-оболочку, SecretBuildWrapper который теперь содержит атрибут plugin="credentials-binding@1.23"
 ...  lt;buildWrappersgt;  lt;org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper plugin="credentials-binding@1.23"gt;  lt;bindingsgt;  lt;org.jenkinsci.plugins.credentialsbinding.impl.StringBindinggt;  lt;credentialsIdgt;foo-bar.passwdlt;/credentialsIdgt;  lt;variablegt;FOO_BAR_PASSWORDlt;/variablegt;  lt;/org.jenkinsci.plugins.credentialsbinding.impl.StringBindinggt;  lt;/bindingsgt;  lt;/org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrappergt;  lt;/buildWrappersgt; ...  

So GUI Save solved the problem and seems to allow Credential Bindings plugin to find the credential.

Кто-нибудь видел это, может быть, с другими версиями компонентов? Исправлена ли она в более новых версиях?

Поскольку мы создаем более 500 рабочих мест таким образом, ручное сохранение не является вариантом. Поэтому я был бы очень рад подсказке для автоматического сохранения заданий, например, по префиксу имени в консоли сценариев.