【问题标题】:Jenkins PowerShell Plugin parsing $env:BUILD_NUMBERJenkins PowerShell 插件解析 $env:BUILD_NUMBER
【发布时间】:2017-09-15 21:25:06
【问题描述】:

我正在尝试使用 Jenkins 上的 PowerShell 插件来构建我的蛋糕脚本。我想将 $env:BUILD_NUMBER 解析到 Cake 脚本中——这在 Windows 上的 PowerShell 窗口中运行良好:

.\build.ps1 -buildNumber=123

但是当在 Jenkins 的 PowerShell 插件中使用“相同的”(解析 123 时正常) - 它失败了。它不会将 $env:BUILD_NUMBER 的值解析为 Cake。我正在使用这个:

$bn = $env:BUILD_NUMBER;
cd D:\_Builds\Al.Common.Std.Interface\SolutionItems\
write-host $bn              //Just at test writing 123 OK
.\build.ps1 -buildNumber=$bn

在蛋糕脚本中,我使用$bn-value 作为 NuGet 版本号。但我收到以下错误:

C:\Program Files\dotnet\sdk\2.0.0\NuGet.targets(102,5): error : '1.0.0.$bn' is not a valid version string.

欢迎提出任何想法

【问题讨论】:

  • 用等号指定参数对我不起作用。如果您将脚本更新为使用.\build.ps1 -buildNumber $bn,是否会出现此问题?
  • Cake 似乎不喜欢这样 - 获取:正在运行构建脚本...指定了多个构建脚本。
  • 听起来内部版本号现在正在正确传递。如果您可以发布.\build.ps1 的内容,我们或许可以为您提供进一步的帮助。
  • 使用 --(2 个减号)解决问题,例如:.\build.ps1 --buildNumber=$bn。该死的花了我好几天。你把我引向了那个方向——谢谢你的时间。

标签: c# powershell jenkins plugins cakebuild


【解决方案1】:

当涉及到环境变量时,最好的解决方案可能是使用 Cake 开箱即用的 EnvironmentVariable 别名来读取它们。

var buildNumber = EnvironmentVariable("BUILD_NUMBER");

也就是说,为了从 Jenkins 获取内部版本号,Cake 实际上已经提供了一种开箱即用的方法,使用全局可用的 BuildSystem 属性别名,它提供了一个 Jenkins 属性来包装所有类型的有关您的 Jenkins 环境的信息,包括作为类型整数的 build number

Information("Running on Jenkins {0}, build number: {1}.",
    BuildSystem.Jenkins.IsRunningOnJenkins ? "Yes" : "No",
    BuildSystem.Jenkins.Environment.Build.BuildNumber
);

上面会输出类似 Running on Jenkins Yes, build number: 1. 如果你在 jenkins 上运行,Running on Jenkins No, build number: 0. 如果你不是。

现在,如果您仍想将问题作为参数传递,那么 PowerShell 参数的工作方式与其他 shell 稍有不同,我们只包装了最常见的参数。对于使用 ScriptArgs 参数的 build.ps1 引导程序脚本的其他参数,如下所示:

.\build.ps1 -ScriptArgs "--buildNumber=""$env:BUILD_NUMBER""" 

然后获取该参数可能看起来像这样

var buildNumber = Argument<int?>("buildNumber", 0);

Information("BuildNumber: {0} ({1})",
    buildNumber, buildNumber.HasValue);

如果指定了无效值,将输出BuildNumber: [NULL] (False),如果存在有效参数值,则输出类似BuildNumber: 1 (True)的内容(如果未指定值,则默认为0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多