编辑:很抱歉格式化((我是新手。..将尝试清理它。
我正在使用声明性的Jenkinsfile来构建带有buildInfo的Maven和Gradle工件并将其发布到Artifactory,试图在不同的阶段分离每个动作(stage1 = build,stage2 = publish),但是无法弄清楚该怎么做。
试图找出一个有效的Declarative Pipeline语法代码,与Artifactory一起使用以分离构建和发布阶段。我发现的所有示例都不完整,不起作用或仅适用于脚本化管道。
我已经尝试过https://www.jfrog.com/confluence/display/RTF/Working+With+Pipeline+Jobs+in+Jenkins
中的说明对于Maven,在rtMavenDeployer指令中设置'deployArtifacts:false'会导致buildinfo无法发布,但仍会使用目标“全新安装”来部署工件。
org.jfrog.build.extractor.maven.BuildInfoClientBuilder-部署>工件:xxx
在日志中,我们看到(带有deployArtifacts:false): Artifactory Build Info Recorder:将构建信息发布为false,将不会发布构建信息...
steps {
rtMavenDeployer (
...
deployArtifacts: false )
在以后的阶段中我们使用 rtPublishBuildInfo()将实际的buildInfo发布到Artifactory。
我还尝试创建两个单独的rtMavenDeployer进行构建,一个用于部署。
例如。
rtMavenDeployer (
id: builder
deployArtifacts: false
)
rtMavenDeployer (
id: deployer
deployArtifacts: true
)
在以后的各个构建和发布阶段中使用 建立阶段:
rtMavenRun(
deployerId: 'builder'
goals: 'clean install'
)
部署阶段:
rtMavenRun(
deployerId: 'deployer'
goals: 'install'
)
rtPublishBuildInfo()
Artifactory中生成了重复的buildInfo,并且x2膨胀了已注册的工件...
在声明式管道中是否有明确的动作分离方法?
期望能够在一个阶段中使用声明性管道语法构建工件,并在稍后阶段使用buildInfo部署实际的Maven / Gradle工件。
根据我的理解,这是在脚本化管道的不同阶段中完成的步骤:
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
}
}
答案 0 :(得分:0)
我最终使用了类似下面的内容……尽管我认为这有点丑陋。 任何更好的解决方案都非常欢迎!
已建阶段
steps {
rtMavenRun (
tool: 'MVN-360',
pom: 'pom.xml',
goals: 'clean install',
opts: '-Dartifactory.publish.artifacts=false -Dartifactory.publish.buildInfo=false',
resolverId: 'maven-resolver',
deployerId: 'maven-deployer'
)
}
部署阶段
steps {
rtMavenRun (
tool: 'MVN-360',
pom: 'pom.xml',
goals: 'install',
opts: '-Dartifactory.publish.artifacts=true -Dartifactory.publish.buildInfo=true',
resolverId: 'maven-resolver',
deployerId: 'maven-deployer'
)
rtPublishBuildInfo (
serverId: "Artifactory"
)
}