当前位置: 首页 > 知识库问答 >
问题:

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

周鸿云
2023-03-14

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

存储库使用“gradle-default”布局。Maven快照版本行为已被设置为“唯一”。最大唯一快照数设置为30。

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

我看到在'artiface-build-info'存储库下的多个版本的buildinfo格式BUILDNUMBER_TIMESTAMP.json但是应用程序jar每次都被覆盖名称作为appname-VERSION.jar,因此在repo中只保留最新版本。

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

上传工件的管道代码

// 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被移动到垃圾桶中

共有1个答案

蒲功
2023-03-14

唯一快照的工作方式是,当设置设置为unique,并且repo布局为Maven(或Gradle)快照,并且根据布局使用快照版本部署文件时,Artifactory将动态重命名该文件,以包含Maven唯一快照ID。

Maven发布将负责快照版本,而Artifactory将负责使这些快照唯一(和清理)。您只需要确保版本字符串以<code>-SNAPSHOT

 类似资料:
  • 我想在我的本地Artifactory实例上发布人工制品,使用带注释的Artifactory元数据,以及基于快照人工制品版本的时间戳的版本号。 为此,我尝试使用artifactory gradle插件和maven-publish插件。 如果我使用artifactory gradle插件,在发布给定人工制品的两个不同快照版本时,我会得到一个错误“没有足够的权限覆盖人工制品...”。 实际上,artif

  • 我正在开发一个服务器,它承载一个maven repo,并且面临一个问题,即如果快照不是特定格式,maven会错误地解析快照版本。在查找版本规则之后,我知道限定符可以是任何字符串,所以我希望maven能够下载带有任何限定符的依赖项。然而,这与我的经验不符。 回购协议具有以下文件夹结构(假设maven项目): 如果我尝试解析a. b. c. d-SNAPSHOT,这很好。我可以在maven日志中看到它

  • 我的环境使用 Gradle 进行构建,使用 Jenkins 进行 CI,使用 Artifactory 进行存储库。我为 Jenkins 使用 Artifactory 插件。 Jenkins 成功地构建了我的主 jar 文件并将其上传到 Artifactory。构建脚本具有第二个目标,用于在构建/分发下创建分发 zip 文件。Jenkins 成功创建了 zip 文件,但我不知道如何告诉它将该工件上传

  • 我有两个jenkins作业,第一个作业向artifactory发布一个jar文件,并向工件添加一个属性(提交id)。第二个作业总是从artifactory中提取最新版本的jar,但它还需要与该工件关联的属性。我们正在使用gradle进行构建。有没有办法进入gradle或者我们有其他选择吗? 编辑:作业不是管道的一部分。这意味着它们是独立的作业,第二个作业触发另一个存储库更改。

  • 我有一个Gradle构建,在Jenkins中运行,并使用Jenkins的Artifactory插件部署到Artifactory。我正在上传一个将文件发送到Artifactory。插件正在上传正确,但它也在上传一个。 如何排除,使其不被部署到Artifactory? 建筑格雷德尔(文物组)