我正在使用Jenkins-Artifactory插件将jar文件部署到Artifactory中的repo。正在使用的构建工具是gradle。该过程似乎没有维护jar工件的多个带时间戳的版本。
存储库使用'gradle-default'布局。 Maven快照版本行为已设置为“唯一”。最大唯一快照设置为30。
我使用rtUpload和rtPublishBuildInfo将jar和相应的buildinfo上传到Artifactory。
我在'artifactory-build-info'存储库下看到了buildinfo的多个版本,格式为BUILDNUMBER_TIMESTAMP.json。然而,应用程序jar每次都被覆盖,名称为appname-VERSION.jar,因此只保留repo中的最新版本。
我尝试将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",
)
}
}
期望在repo中存在多个工件,并在名称后附加时间戳。在回购下只看到一个罐子。发布工件后,repo中的现有jar将移至Trash Can
独特快照的工作方式是当设置设置为UNIQUE且repo布局为Maven(或Gradle)快照,并且根据布局使用SNAPSHOT版本部署文件时,Artifactory将动态重命名以包含Maven唯一快照ID。
Maven出版物将负责快照版本,Artifactory将负责使这些快照独特(和清理)。您只需要确保您的版本字符串以-SNAPSHOT
结尾。