有没有办法将当前的BUILD_NUMBER传递给Jenkins构建的Gradle deamon?

时间:2018-01-02 23:42:23

标签: jenkins gradle environment-variables daemon

我通过调用:

访问Gradle脚本中的Jenkins内部版本号
def buildNumber = System..getenv('BUILD_NUMBER')

我第一次运行构建时工作正常。第二次运行构建时,数字不会增加,它与之前的构建运行保持不变。 我正在使用4.4.1版本的Gradle。我不记得早期版本遇到同样的问题。

我目前的解决方法是将--no-daemon切换到Gradle。但是,这样我就无法从守护进程功能中受益。有没有办法使用守护进程ans仍然可以在Gradle build中获得正确的内部版本号?

3 个答案:

答案 0 :(得分:4)

您使用的是Java 9吗?使用Java 9,Gradle不再可以修改守护程序的环境 - 因此您无法使用环境变量传递属性。 您应该在日志中看到以下警告:

Warning: Unable able to set daemon's environment variables to match the client because: 
Java 9 does not support modifying environment variables.

您可以通过Gradle的命令行传递'BUILD_NUMBER'作为系统属性(-DbuildNumber=$BUILD_NUMBER)或Gradle项目属性(-PbuildNumber=$BUILD_NUMBER)。

答案 1 :(得分:0)

通过在特殊区块中阅读System env,似乎已经讨论并解决了in the gradle forums

multipart/data

答案 2 :(得分:0)

我通常使用redis构建一个带有时间戳的键值存储来存储构建号。这样我就可以隔离和检索,并在任何客户端之间发回数据。