Я должен обернуть некоторые шаги Дженкинса в выделенные функции, одна из них - copyArtifacts
Вот некоторые из них делают c об этой функции, она перечисляет все ее параметры, но не содержит значений по умолчанию для опциональных параметры: https://jenkins.io/doc/pipeline/steps/copyartifact/
Обычный способ вызова функции copyArtifacts заключается в следующем:
copyArtifacts projectName: "myJenkinsJob", filter: "*.pdf", excludes: "iAmUseless.pdf", flatten: false
Один из способов обернуть его в функцию, допуская тот же синтаксис вызова следующий:
void myCopyArtifacts(Map<String, Object> parameters) {
...
}
Самое интересное в том, чтобы фактически реализовать обертку. Поскольку я не могу реализовать все возможные комбинации аргументов, мне приходится анализировать их вручную по одному и присваивать им значение по умолчанию (которое в этом случае я могу найти в исходном коде, но не всегда). А затем вызовите функцию плагина.
Это не очень практично, подвержено ошибкам и не подлежит обслуживанию. Наивно я думал, что из-за способа, которым groovy может получать Карты, будет работать следующее:
void myCopyArtifacts(Map<String, Object> parameters) {
currentWorkflowScript.copyArtifacts(parameters)
}
Но это не так.
Так есть ли правильный способ сделать это?
Для тех, кто интересуется, если мы делаем это для целей модульного тестирования с помощью Mockito, нам нужно было обернуть функции, которые нужно смоделировать, и в то же время воспользоваться возможностью ограничить и контролировать использование, которое может быть сделано с ними.