Цель: запустить нижестоящее задание из другого экземпляра Jenkins и отобразить вывод консоли в вышестоящем задании. Тип задания: Конвейерные сценарии.
Полный код ниже:
properties([
parameters([
string(name: 'var1', defaultValue: "value1", description: ''),
string(name: 'var2', defaultValue: "value2", description: ''),
string(name: 'var3', defaultValue: "value3", description: '')
])
])
node('unique tag'){
stage("Trigger downstream"){
//From Jenkins
def remoteRunWrapper = triggerRemoteJob(
mode: [$class: 'ConfirmStarted', timeout: [timeoutStr: '1h'], whenTimeout: [$class: 'StopAsFailure']],
remotePathMissing: [$class: 'StopAsFailure'],
parameterFactories: [[$class: 'SimpleString', name: 'var1', value: var1], [$class: 'SimpleString', name: 'var2', value: var2], [$class: 'SimpleString', name: 'var3', value: var3]],
remotePathUrl: 'jenkins://..',
)
print(remoteRunWrapper.toString())
//would want to use other capabilities offered by remoteRunWrapper
}
}
triggerRemoteJob
может запустить последующее задание и вернуться с экземпляром RemoteRunWrapper
после выполнения задания начал. Экземпляр RemoteRunWrapper
должен предоставлять возможности, позволяющие мне проверять журналы последующих заданий / получать журналы. Однако на RemoteRunWrapper
нет документации, которую я мог бы найти. Методы, описанные в RunWrapper
документации , не могут быть использованы, и сценарий завершается с ошибкой:
groovy.lang.MissingMethodException: No signature of method: com.cloudbees.opscenter.triggers.RemoteRunWrapper.getId() is applicable for argument types: () values: []
Как найти возможности предлагается RemoteRunWrapper
? Есть ли лучшие способы добиться этого?
Примечание:
1) Необходимо использовать
mode: [$class: 'ConfirmStarted', timeout: [timeoutStr: '1h'], whenTimeout: [$class: 'StopAsFailure']],
remotePathUrl: 'jenkins://...'
, как показано ниже:
remoteJenkinsUrl: 'https://myjenkins:8080/...'
job: 'TheJob'
из triggerRemoteJob
документации не может запустить задание и возвращает нулевой объект, а методы, описанные здесь , также вызывают сбой сценария с MissingMethodException
.
2) [$class: 'RemoteBuildConfiguration']
предоставляет опцию 'enhancedLogging'
, позволяющую также регистрировать вывод консоли удаленного задания. Однако при использовании возникает исключение classNotFound
(оператор import был включен).
3) В действительности не имеет значения, запускается ли задание в нисходящем направлении асинхронно или синхронно, если возможно войти в консоль вывод нижестоящего задания на консольный вывод вышестоящего задания.