РЕДАКТИРОВАТЬ: Извините за форматирование :( Я новичок в этом .. постараюсь очистить его.
Я использую декларативный файл Jenkinsfile для создания и публикации артефактов Maven и Gradle с buildInfo в Artifactory, пытаясь разделить каждое действие (stage1 = build, stage2 = publish) на отдельные этапы, но не могу понять, как это сделать.
Попытка выяснить работающий синтаксический код декларативного конвейера для использования с Artifactory для разделения этапов сборки и публикации. Все примеры, которые я нашел, являются неполными, нерабочими или только для сценариев конвейера.
Я пробовал инструкции, найденные здесь https://www.jfrog.com/confluence/display/RTF/Working+With+Pipeline+Jobs+in+Jenkins
Для Maven установка параметра deployArtifacts: false в директиве rtMavenDeployer приводит к тому, что buildinfo не публикуется, но артефакт по-прежнему разворачивается с использованием целей «чистой установки».
org.jfrog.build.extractor.maven.BuildInfoClientBuilder - Развертывание> артефакт: xxx
В журнале мы видим (с deployArtifacts: false):
Artifactory Build Info Recorder: опубликовать информацию о сборке со значением false, информация о сборке не будет опубликована ...
steps {
rtMavenDeployer (
...
deployArtifacts: false )
на более позднем этапе мы используем
rtPublishBuildInfo () для публикации фактического buildInfo в Artifactory.
Я также пытался создать два отдельных rtMavenDeployer's для использования для сборки и один для развертывания.
Например.
rtMavenDeployer (
id: builder
deployArtifacts: false
)
rtMavenDeployer (
id: deployer
deployArtifacts: true
)
Более поздние ссылки на соответствующих этапах сборки и публикации с использованием
ЭТАП СТРОИТЕЛЬСТВА:
rtMavenRun(
deployerId: 'builder'
goals: 'clean install'
)
ЭТАП ЗАВЕРШЕНИЯ:
rtMavenRun(
deployerId: 'deployer'
goals: 'install'
)
rtPublishBuildInfo()
Результатом является дублирование buildInfo в Artifactory и x2 завышенных зарегистрированных артефактов ...
Есть ли четкий путь для такого разделения действий в декларативном конвейере?
Ожидается возможность создания артефакта с использованием синтаксиса декларативного конвейера за один этап и развертывания фактического артефакта Maven / Gradle с помощью buildInfo на более позднем этапе.
Вот как это делается на отдельных этапах в скриптовом конвейере из того, что я понимаю:
stage ('Test') {
rtMaven.run pom: 'maven-example/pom.xml', goals: 'clean test'
}
stage ('Install') {
rtMaven.run pom: 'maven-example/pom.xml', goals: 'install', buildInfo: buildInfo
}
stage ('Deploy') {
rtMaven.deployer.deployArtifacts buildInfo
}
stage ('Publish build info') {
server.publishBuildInfo buildInfo
}
}