编辑:很抱歉格式化:(我是这个新手..将尝试清理它。

我正在使用声明性的Jenkinsfile来构建带有buildInfo的Maven和Gradle Artifact 并将其发布到Artifactory,试图在不同的阶段分离每个 Action (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无法发布,但是仍使用目标“全新安装”来部署 Artifact 。



在日志中,我们看到(带有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夸大了已注册的 Artifact ...

是否有明确的方法可以在声明式管道中进行不同的操作?

期望能够在一个阶段中使用Declarative Pipeline语法构建 Artifact ,并在稍后阶段使用buildInfo部署实际的Maven / Gradle Artifact 。

根据我的理解,这是在脚本化管道的不同阶段中完成的工作:
    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
    }
}

最佳答案

我最终使用了类似下面的内容……尽管我认为这有点丑陋。
任何更好的解决方案都非常欢迎!

建立阶段

      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"
        )
      }

10-01 02:22
查看更多