Сценарий Jenkins DSL - сбой теста - найдено несколько расширений, которые предоставляют метод lastCompleted

Попытка создать несколько заданий в Jenkins с помощью сценариев DSL.

На этапе есть несколько заданий, и я хочу создать сводный отчет для нескольких заданий из последующих заданий.

Я использую артефакт копирования для копирования результатов последующих заданий в целевой каталог мультизадания. Использование селектора - lastCompleted()

Однако я получаю сообщение об ошибке, в котором говорится, что несколько расширений, предоставляющих метод и тесты, не работают. lastCompleted(), по-видимому, присутствует в плагинах copyArtifact и multijob, где в этом случае мне нужны оба.

Вот мой сценарий:

multiJob('dailyMultiJob') {
concurrentBuild(true)
logRotator(-1, 10, -1, 10)
triggers {
    cron('H H(0-4) * * 0-6')
}
steps {
        phase('Smoke Tests'){
            phaseJob('JobA')
            phaseJob('JobB')
            phaseJob('JobC')                
        }
        copyArtifacts{
            selector{
                lastCompleted()    
            }
            projectName('JobA')
            filter('target/allure-results/*.*')
            target('/path/to/this/multijob/workspace')
            flatten(false)
        }           
        copyArtifacts{
            selector{
                lastCompleted()    
            }
            projectName('JobB')
            filter('target/allure-results/*.*')
            target('/path/to/this/multijob/workspace')
            flatten(false)
        }           
        copyArtifacts{
            selector{
                lastCompleted()    
            }
            projectName('JobC')
            filter('target/allure-results/*.*')
            target('/path/to/this/multijob/workspace')
            flatten(false)
        }           

}
publishers {
            allure {
                results {
                    resultsConfig {
                        path('target/allure-results')
                    }
                }
            }
            archiveArtifacts {
                pattern('target/reports/**/*.*')
                pattern('target/allure-results/**/*.*')
                allowEmpty(true)
            }
   }
}

Получение этой ошибки ниже после запуска тестов gradle

Caused by: javaposse.jobdsl.dsl.DslException: Found multiple extensions which provide method lastCompleted with arguments []: [[hudson.plugins.copyartifact.LastCompletedBuildSelector, com.tikal.jenkins.plugins.multijob.MultiJobBuildSelector]]

Я не уверен, есть ли способ указать метод использования конкретного артефакта.

Застрял на этом довольно давно. Любая помощь приветствуется. Заранее спасибо!


person met    schedule 27.07.2018    source источник


Ответы (2)


Я столкнулся с той же проблемой несколько месяцев назад. Есть два возможных решения этой проблемы.

1 - Оставьте только один плагин, чтобы избежать конфликта. (Не рекомендуется, так как это может нарушить другие задания)

2- Используйте блок конфигурации для изменения файла xml, чтобы избежать этого конфликта, и вы можете сохранить несколько плагинов, поддерживающих одни и те же расширения. (Рекомендуемое решение)

Спасибо,

person Surendra Deshpande    schedule 04.08.2018
comment
Спасибо за ваш ответ @Surendra Deshpande. Я пробовал настроить такой блок, но, похоже, это не повлияло на конфигурацию сборки. Сейчас он выбирает последнюю удачную сборку. Это мой код: selector'‹‹'hudson.plugins.copyartifact.LastCompletedBuildSelector' } } - person met; 08.08.2018
comment
Похоже, мне не разрешено использовать блок конфигурации везде, где я хочу использовать. Плагин CopyArtifacts не включает блок конфигурации в DSL javadoc. - person met; 08.08.2018

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

Лучше используйте Pipelines.

person met    schedule 22.02.2019