Jenkins Artifactory 插件(gradle)不从 gradle.properties 读取版本

Posted

技术标签:

【中文标题】Jenkins Artifactory 插件(gradle)不从 gradle.properties 读取版本【英文标题】:Jenkins Artifactory Plugin (gradle) doesn't read version from gradle.properties 【发布时间】:2016-12-26 11:09:13 【问题描述】:

目前我尝试配置 Jenkins,因此我可以自动进行发布构建。它应该将版本号从 SNAPSHOT 更改为发布版本,并执行所有 SVN 提交工作。完成此操作后,它应该将其切换回新的 SNAPSHOT 版本并提交。在我从 maven 切换到 gradle 之前,相同的插件可以正常工作。

我已经创建了一个 gradle 构建,它可以正常工作。它正在从 gradle.properties 文件中的属性“version”读取版本。此版本是 gradle 构建中使用的版本。也可以运行“artifactoryPublish”将 JAR 发布到我的工件。

问题:

当我打开对话框“Artifactory Pro Release Staging”(http://imgur.com/T44BtQB)时,它没有填写“发布版本”、“下一个开发版本”字段,也没有填写其他字段。如果我手动填写字段,则一切正常。 gradle.properties 中的版本也已更改并正确签入。

我该如何解决这个问题?

使用过的版本:

Jenkins 版本 2.7.1 JFrog Artifactory 4.7.4 rev 40169(免费版) Jenkins Artifactory 插件 2.6.0 (https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Artifactory+Plugin+-+Release+Management) Gradle 2.14.1

谢谢!

【问题讨论】:

您是否考虑过在 Jenkins Artifactory 插件上打开一个错误? jfrog.com/jira/browse 【参考方案1】:

根据您的描述,当您访问“Artifactory Release Staging”页面时,“Release version”和“Next development version”字段为空。这可能是因为您没有在 Jenkins 作业配置中为您的版本和下一个开发版本定义属性名称。 这是你如何做到的: 1. 打开您的 gradle.properties 文件并找到您的版本属性的名称。例如,如果您的 gradle.properties 包含: 版本=1.2-快照 那么名称是“版本”。 2. 打开您的 Jenkins 作业配置,并在“发布属性”和“下一步开发正确”文本字段中输入“版本”。您应该在“Release Staging”配置下找到它们。

现在,Artifactory Release Staging 页面应该知道从哪里获取您的版本。使用 Artifactory Release Staging for Maven 时不需要此配置,因为在 Maven 中,版本只能在一个位置找到 - 在 pom 文件中。

希望对你有帮助

【讨论】:

我是这样做的。在这里你可以看到我的设置imgur.com/a/Muwpn。我认为这应该是正确的,因为新版本(在“Artifactory Pro Release Staging”对话框中手动设置)被正确写入版本=MY_BY_HAND_SET_VERSION的gradle.properties。:-/曾经的问题是,对话框没有预填充对话框。【参考方案2】:

在我看来,您的 gradle.properties 似乎无法与您使用 SVN 的其余文件一起提交。你能检查一下吗?

如果它已提交并且在 Jenkins 执行构建作业时有效地与所有其他源文件一起存在,则可能值得确保 Jenkins 构建作业在正确的位置查找 gradle.properties 文件。 Gradle 插件的默认行为是在每个项目的根目录中搜索 gradle.properties 文件。如果这不是您的 gradle.properties 文件所在的位置,您可能需要手动设置路径。为此,请在 Jenkins 作业中的“开关”下添加以下内容:

-Dgradle.user.home=$HOME/.gradle

如果这有帮助,请告诉我。

【讨论】:

当我手动填写“Artifactory Pro Release Staging”对话框时,它可以工作并且它正在执行文档中解释的所有操作(-使用发布值更改 gradle.properties(在构建开始之前) ),触发 Gradle 构建步骤(可选择不同的任务和选项),提交/推送对标签 (Subversion) 或发布分支 (Git) 的更改,使用下一个集成值更改 gradle.properties - 提交/推送更改到树干)。完成此操作后,我检查了 gradle.properties,它包含新版本(我在表单中手动设置)。 您是否尝试在 Jenkins 作业中手动设置插件的位置? 是的,我添加了那个开关 (imgur.com/a/ZUUWp),但这不会改变行为。 我可以确认工件 jenkins 插件 (2.8.2) 期望 gradle.properties 位于您的 jenkins 工作区根目录中,以便填充这些字段。似乎没有配置告诉它在别处寻找,它也没有从 jenkins gradle 插件中提取它。想办法把它放在你的工作区根目录中。【参考方案3】:

可能是由于以下原因,在读取属性时发生这种情况

    文件权限 - 检查 gradle.properties 所在工作空间中的文件组和所有者 2.(不确定细节,它帮助我解决了)更新正确的文件所有者组后,从jenkins artifactory发布管理部分删除版本属性并触发构建,一旦成功并将版本包含在jenkins artifactory发布管理中部分并触发了构建,它解决了问题。

【讨论】:

以上是关于Jenkins Artifactory 插件(gradle)不从 gradle.properties 读取版本的主要内容,如果未能解决你的问题,请参考以下文章

没有使用 jenkins gradle artifactory 插件部署的工件

使用 Artifactory Jenkins 插件从嵌套项目部署工件

Jenkins Artifactory 插件(gradle)不从 gradle.properties 读取版本

jfrog artifactory jenkins pipeline 集成

Jenkins管道+ Artifactory下载未下载

Gradle + Jenkins + Artifactory Maven 回购?