【问题标题】:convert a jenkins artifactory post build step into a pipeline stage将詹金斯人工制品后期构建步骤转换为管道阶段
【发布时间】:2019-11-11 22:18:37
【问题描述】:

我正在将已在 UI 中配置的 Jenkins 作业转换为使用声明性管道脚本配置的作业。

这是一个 Maven 构建的 Java 项目,具有部署到 Artifactory 的构建后操作

构建和测试步骤很简单。我们可以使用这个 UI

并将其转换为 mvn 命令sh "mvn clean install"。

后期构建步骤的配置很简单在 UI 中

选中了三个文本框

  1. 部署 Maven 工件
  2. 从构建信息中过滤排除的工件(我认为没有)
  3. 捕获和发布构建信息

这会生成并上传丰富的 buildInfo.json,并将正确的工件上传到我们的工件服务器。

我想用管道步骤替换它...阅读此文档https://www.jfrog.com/confluence/display/RTF/Declarative+Pipeline+Syntax 建议构建 maven 作业应该通过让 artifactory 插件运行 maven 命令来完成。我想避免这种情况,因为我们目前不这样做并且我最终希望消除在服务器上存储该项目的工件的需要。

在 pom 中我们会看到

    <groupId>some.value</groupId>
    <artifactId>my-app</artifactId>
    <version>1.1.184</version>

我有一个部分工作的脚本:

stage('publish common code to artifactory') {
          steps {
            rtUpload (
                  serverId: 'Artifactory',
                  spec: '''{
                        "files": [
                          {
                            "pattern": "applications/my-app/pom.xml",
                            "target": "libs-release-local"
                          }
                       ]
                  }''',

                  buildName: 'my-app',
                  buildNumber: env.GIT_HASH_VERSION
              )
              rtPublishBuildInfo (
                    serverId: "Artifactory",
                    buildName: 'my-app',
                    buildNumber: env.GIT_HASH_VERSION
                )
          }
        }

这会将 pom 发布到 artifactory,但最初它将发布到 some/value/my-app/my-app-1.1.184.pom 我的管道版本以 /pom.xml 发布到根目录

Artifactory 看起来能够从 pom 读取信息并使用它来正确放置工件,而无需我编写代码,但是如何?

【问题讨论】:

标签: java maven jenkins-pipeline artifactory


【解决方案1】:

可能对某人有所帮助的示例:

  stage("deploy_mvn") {
                environment {
                    // Must define environmental variable for maven
                    MAVEN_HOME = '/usr/share/maven'
                }
                steps {
                    script {
                        def artserver = Artifactory.newServer url: 'http://example.com/artifactory', credentialsId: 'blahblah'
                        def rtMaven = Artifactory.newMavenBuild()
                        rtMaven.resolver server: artserver, releaseRepo: 'my-repo', snapshotRepo: 'my-ss-repo'
                        rtMaven.deployer server: artserver, releaseRepo: 'my-local', snapshotRepo: 'my-snapshot-local'
                        rtMaven.deployer.artifactDeploymentPatterns.addInclude("*.pom").addInclude("*.war").addInclude("*.jar")
                        rtMaven.deployer.deployArtifacts = true
                        def buildInfo = rtMaven.run pom: 'pom.xml', goals: 'clean install'
                    }
                }
            }

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多