我通过调用:
访问Gradle脚本中的Jenkins内部版本号def buildNumber = System..getenv('BUILD_NUMBER')
我第一次运行构建时工作正常。第二次运行构建时,数字不会增加,它与之前的构建运行保持不变。 我正在使用4.4.1版本的Gradle。我不记得早期版本遇到同样的问题。
我目前的解决方法是将--no-daemon切换到Gradle。但是,这样我就无法从守护进程功能中受益。有没有办法使用守护进程ans仍然可以在Gradle build中获得正确的内部版本号?
答案 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构建一个带有时间戳的键值存储来存储构建号。这样我就可以隔离和检索,并在任何客户端之间发回数据。