我正在 Gradle 脚本中通过调用访问 Jenkins 内部版本号:
def buildNumber = System..getenv('BUILD_NUMBER')
我第一次运行构建时效果很好。第二次运行构建时,该数字不会增加,它与上次构建运行时保持相同。 我使用的是 4.4.1 版本的 Gradle。我不记得早期版本有过同样的问题。
我当前的解决方法是将 --no-daemon 开关传递给 Gradle。但是,这样我就无法从守护进程功能中受益。有没有办法使用守护进程并在 Gradle 构建中仍然获得正确的构建号?
最佳答案
您使用的是 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.
您可以将 'BUILD_NUMBER'
作为系统属性 (-DbuildNumber=$BUILD_NUMBER
) 或 Gradle 项目属性 (-PbuildNumber=$BUILD_NUMBER
) 通过 Gradle 命令行来代替。
关于jenkins - 有没有办法将当前的 BUILD_NUMBER 从 Jenkins 构建传递到 Gradle 守护进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069361/