Cloudbees Jenkins: запуск последующей работы в другом экземпляре Jenkins - PullRequest
1 голос
/ 20 марта 2020

Цель: запустить нижестоящее задание из другого экземпляра 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) В действительности не имеет значения, запускается ли задание в нисходящем направлении асинхронно или синхронно, если возможно войти в консоль вывод нижестоящего задания на консольный вывод вышестоящего задания.

...