如何将构建工件的快照版本上传到Artifactory中的gradle存储库

时间:2019-03-27 10:54:06

标签: jenkins gradle jenkins-pipeline artifactory

我正在使用Jenkins-Artifactory插件将jar文件部署到Artifactory中的存储库中。正在使用的构建工具是gradle。该过程似乎并没有维护jar工件的多个带有时间戳的版本。

存储库使用“渐变默认”布局。 Maven快照版本行为已设置为“唯一”。 最大不重复快照设置为30。

我正在使用rtUpload和rtPublishBuildInfo将jar和相应的buildinfo上传到Artifactory。

我在“ artifactory-build-info”存储库下看到了多个版本的buildinfo,格式为BUILDNUMBER_TIMESTAMP.json 但是,每次使用名称为appname-VERSION.jar的应用程序jar都会被覆盖,从而在回购中仅保留最新版本。

我尝试将Maven快照版本行为更改为“非唯一”,并将“ SNAPSHOT”添加到版本字符串。这不能解决问题

用于上传工件的管道代码

// upload build artifacts to artifact repository
        stage('publish to artifactory') {
          steps {
            rtUpload (
                serverId: "ARTIFACTORY_SERVER_ID",
                spec:
                  """{
                    "files": [
                      {
                        "pattern": "kotlin-source/build/libs/appname-*.jar",
                        "target": "gradle-dev-local"
                      }
                    ]
                  }""",
                failNoOp: true,
            )
          }
        }
        stage ('Publish build info') {
           steps {
              rtPublishBuildInfo (
                serverId: "ARTIFACTORY_SERVER_ID",
               )
           }
        }

预期回购中将存在多个工件,并在名称后附加时间戳。 回购下只能看到一个罐子。 发布工件后,将回购中的现有jar移至垃圾箱

1 个答案:

答案 0 :(得分:2)

唯一快照的工作方式是:将设置设置为UNIQUE并且回购布局为Maven(或Gradle)快照,并且根据布局使用SNAPSHOT版本部署文件时,Artifactory会即时将其重命名为包含Maven唯一的快照ID。

Maven发布将负责快照版本,Artifactory将负责使这些快照唯一(和清除)。您只需要确保您的版本字符串以Dim finalas() As String = arrf.ToArray(GetType(System.String)) For Each element As String In finalas Dim item As New ListViewItem(element) ListView1.Items.Add(item) Next 结尾即可。