#jenkins #groovy
Вопрос:
Возможно ли использовать метаКласс в файле jenkins, я пытаюсь изменить логику метода некоторого классного класса в файле .jenkins, так как не могу получить доступ к исходному коду. У меня может быть только разрешение на запуск определенной функции. Но я копаюсь в исходном коде и пытаюсь использовать какой-то другой способ, используя классное мета-программирование.
Я пробовал это, но не получилось:
.jenkinsfile:
ExpandoMetaClass.enableGlobally()
pipeline {
...
script {
FortifyImpl.metaClass.getAnalyzeCommand {
"echo getAnalyzeCommand"
}
runFortify()
}
...
}
// This method defined in other file which I cannot change it.
// Here is just an example.
def runFortify() {
String cmd = new FortifyImpl().getAnalyzeCommand()
execute(cmd)
...
}
Я думаю, что дело не в грамматической ошибке, потому что я уже пробовал несколькими способами, такими как это:
FortifyImpl.metaClass.getAnalyzeCommand = {...}
Так в чем же проблема, или невозможно использовать metaclass в jenkinsfile?
Комментарии:
1. Я бы попытался сделать это в
@NonCPS
функции, так как такой низкоуровневый код обычно не поддерживается непосредственно в разделе конвейера.