在 Gradle 中,如何将 Jenkins 内部版本号附加到 Jenkins 管道中的工件版本?
In Gradle, how can I append Jenkins build number to artifact version in a Jenkins pipeline?
Gradle v7.3.3
在我的 gradle.properties
文件中,我将工件版本设置为 2.0
gradle.properties
-----------------
version=2.0
现在,当我进行 Jenkins 构建时,我想将构建号附加到该版本,并发布后续工件。也就是说,我希望神器是
com.company.com:myproject:2.0.<build_number>
我试过了
sh "./gradlew :myproject:clean :myproject:build -x test -PartifactBuildNumber=$env.BUILD_NUMBER -p myproject"
sh "./gradlew publish -x build -x test -PartifactBuildNumber=$env.BUILD_NUMBER -p myproject"
但当然在工件版本中只有 Jenkins 内部版本号,而不是所需的 2.0.<BUILD_NUMBER>
。有没有一种优雅的方法可以做到这一点
您有两个简单的选择来实现您想要的:
第一个选项是将 gradle.properties
(使用 readProperties)读取到管道中的本地映射中,将版本更新为新值,然后写回文件。
例如:
// Read the properties file and update the version
def props = readProperties file: 'gradle.properties'
props.version = "${props.version}.${env.BUILD_NUMBER}"
// Write back the updated properties file
def content = props.collect{ "${it.key}=${it.value}".join('\n')
writeFile file: 'gradle.properties', text: content
// Run your commands
您现在可以 运行 所有常规 shell 命令,并且将使用更新版本。
第二个选项是读取 gradle.properties
,从中提取版本并在您的管道中构建一个新的版本变量,该变量将传递给 shell 命令。
例如:
// Read the properties file and update the version
def props = readProperties file: 'gradle.properties'
def newVersion = "${props.version}.${env.BUILD_NUMBER}"
// Use the newVersion parameter in your shell steps
sh "./gradlew :myproject:clean :myproject:build -x test -PartifactBuildNumber=${newVersion} -p myproject"
sh "./gradlew publish -x build -x test -PartifactBuildNumber=${newVersion} -p myproject"
如果您有其他步骤依赖于您无法通过更新版本的版本,那么第一个选项可能会适合您,但是如果您可以通过该版本,则第二个选项更容易并且不会'不需要对文件进行任何回火。
Gradle v7.3.3
在我的 gradle.properties
文件中,我将工件版本设置为 2.0
gradle.properties
-----------------
version=2.0
现在,当我进行 Jenkins 构建时,我想将构建号附加到该版本,并发布后续工件。也就是说,我希望神器是
com.company.com:myproject:2.0.<build_number>
我试过了
sh "./gradlew :myproject:clean :myproject:build -x test -PartifactBuildNumber=$env.BUILD_NUMBER -p myproject"
sh "./gradlew publish -x build -x test -PartifactBuildNumber=$env.BUILD_NUMBER -p myproject"
但当然在工件版本中只有 Jenkins 内部版本号,而不是所需的 2.0.<BUILD_NUMBER>
。有没有一种优雅的方法可以做到这一点
您有两个简单的选择来实现您想要的:
第一个选项是将 gradle.properties
(使用 readProperties)读取到管道中的本地映射中,将版本更新为新值,然后写回文件。
例如:
// Read the properties file and update the version
def props = readProperties file: 'gradle.properties'
props.version = "${props.version}.${env.BUILD_NUMBER}"
// Write back the updated properties file
def content = props.collect{ "${it.key}=${it.value}".join('\n')
writeFile file: 'gradle.properties', text: content
// Run your commands
您现在可以 运行 所有常规 shell 命令,并且将使用更新版本。
第二个选项是读取 gradle.properties
,从中提取版本并在您的管道中构建一个新的版本变量,该变量将传递给 shell 命令。
例如:
// Read the properties file and update the version
def props = readProperties file: 'gradle.properties'
def newVersion = "${props.version}.${env.BUILD_NUMBER}"
// Use the newVersion parameter in your shell steps
sh "./gradlew :myproject:clean :myproject:build -x test -PartifactBuildNumber=${newVersion} -p myproject"
sh "./gradlew publish -x build -x test -PartifactBuildNumber=${newVersion} -p myproject"
如果您有其他步骤依赖于您无法通过更新版本的版本,那么第一个选项可能会适合您,但是如果您可以通过该版本,则第二个选项更容易并且不会'不需要对文件进行任何回火。