繁体   English   中英

将 jenkins 人工构建后步骤转换为流水线阶段

[英]convert a jenkins artifactory post build step into a pipeline stage

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

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

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

maven 用户界面

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

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

后期构建工件 UI

这选中了三个文本框

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

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

我想用管道步骤替换它...阅读此文档https://www.jfrog.com/confluence/display/RTF/Declarative+Pipeline+Syntax建议构建 maven 作业应该通过运行工件插件来完成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 发布到工件,但最初它会发布到some/value/my-app/my-app-1.1.184.pom我的管道版本发布到根目录为/pom.xml

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

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

  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'
                    }
                }
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM