将版本号添加到 Jenkins 构建工件

Adding version number to Jenkins build artifact

我奉命将 dotnet 构建从 Bamboo 迁移到 Jenkins。我使用 Freestyle 作业 运行 powershell 脚本,使用 PowerShell 插件并成功构建它。但是我需要将版本号添加到构建的工件中。 Bamboo 作业使用: ~\.dotnet\tools\dotnet-lambda.exe package -pl $fullDir -f "netcoreapp3.1" -o Payment.${bamboo.majorVersion}.${bamboo.minorVersion}.${bamboo.revisionVersion}.${bamboo.buildNumber}.zip

我进入 Jenkins 配置并在全局属性中创建名为 buildNumber、majorVersion、minorVersion 和 revisionVersion 的环境变量,为其赋值,在 Freestyle 作业的构建部分,我使用了: ~\.dotnet\tools\dotnet-lambda.exe package -pl $fullDir -f "netcoreapp3.1" -o Payment.${env.majorVersion}.${env.minorVersion}.${env.revisionVersion}.${env.buildNumber}.zip

但是构建的工件的名称是:Payment.....zip

  1. 如何传递变量值?
  2. 有没有办法自动增加 revisionNumber 和 buildNumber,而不是硬编码?

我对 Bamboo 和 Jenkins 都很陌生。任何帮助都会非常有帮助。

问候 拉梅什

就我个人而言,我不会在全局范围内配置这些东西,因为它们看起来是特定于工作的。尽管如此,

安装 Environment Injector plugin。您现在有两个选择:
常规选项卡
[ X ] 为 运行

准备环境

构建环境选项卡
[ X ] 将环境变量注入构建过程

设置“Properties Content”(这是一个环境变量)。

在您的 shell 步骤中(无需以 ${env....} 开头):

执行Shell步:

#!sh -
echo ${FOO}.${BUILD_NUMBER}
echo ${LABEL}

输出:

[EnvInject] - Loading node environment variables.
[EnvInject] - Preparing an environment for the build.
[EnvInject] - Keeping Jenkins system variables.
[EnvInject] - Keeping Jenkins build variables.
[EnvInject] - Injecting contributions.
Building in workspace C:\Users\jenkins\.jenkins\workspace\Foo
[EnvInject] - Executing scripts and injecting environment variables after the SCM step.
[EnvInject] - Injecting as environment variables the properties content 
FOO=bar

[EnvInject] - Variables injected successfully.
[Foo] $ sh - C:\Users\jenkins\AppData\Local\Temp\jenkins281351632631450693.sh
bar.8
Finished: SUCCESS

您还会在执行 Shell 步骤的底部看到 link 到 ${JENKINS_URL}/env-vars.html,其中列出了 shell 脚本可用的变量,其中包括 BUILD_NUMBER;用它代替 buildNumber.

该插件还支持 Global and the Node level 上的相同配置。 您还可以使用单独的构建步骤在作业步骤之间注入/更改变量(我们使用它来为 SonarQube 步骤设置特定的 JAVA_HOME)。

您还会在每个构建日志的左侧看到一个 [环境变量] 按钮,用于检查您 运行 使用的内容(见下文)。


如果您添加 Build With Parameters plugin 那么在触发作业时系统会提示您提供变量值,这些变量可以以相同的方式使用而无需重新配置作业(它不会记住它们,但是您会在每个构建日志的左侧看到一个 [Parameters] 按钮,用于检查您 运行 使用的内容。


Version Number plugin可以提供更大的灵活性,比如说你想自动增量而“BUILD_NUMBER”选项限制太多,它提供了一个变量BUILDS_ALL_TIME,可以使用上面的定义的变量或硬编码常量来聚合版本标签并可选择地控制它递增(例如:仅在成功构建时递增)。例如:

[ X ] 为 运行
准备环境 属性内容
FOO=bar

[ X ] 创建格式化版本号
环境变量名称 [ BUILD-${FOO}.${BUILDS_ALL_TIME} ]
跳过比[成功]

差的构建

执行Shell步:

#!sh -
echo ${FOO}.${BUILD_NUMBER}
echo ${LABEL}

输出:

[Foo] $ sh - C:\Users\jenkins\AppData\Local\Temp\jenkins4160554383847615506.sh
bar.10
BUILD-bar.2