如何在我的 Powershell 脚本中使用 Jenkins 变量
Posted
技术标签:
【中文标题】如何在我的 Powershell 脚本中使用 Jenkins 变量【英文标题】:How to use a Jenkins variable in my Powershell Script 【发布时间】:2014-08-09 02:52:06 【问题描述】:我通过PowerShell
编写了一个简单的脚本来收集一些文件并将它们压缩到一个文件夹中,我们称之为Script.ps1
。我想让脚本在每次 Jenkins 进行新构建时运行,但是我也希望 zip 文件的名称是 BUILD_NUMBER
。
如何在PowerShell
中创建一个变量,即 Jenkins 当前的内部版本号?目前,我在配置的执行 shell 部分中调用 Script.ps1
。
【问题讨论】:
【参考方案1】:我不熟悉 Jenkins,但我相信 BUILD_NUMBER
是一个环境变量。
要在 PowerShell 中访问它,请使用 $env:BUILD_NUMBER
例如如果使用 7-zip
7z.exe a "$env:BUILD_NUMBER.zip" C:\Build\Path
【讨论】:
我刚刚在 Jenkins 中尝试过,效果非常好。谢谢! 谢谢!我不知道为什么您的解决方案标有绿色复选标记。这是真正的解决方案。【参考方案2】:您可以向Script.ps1
添加参数。只需在脚本顶部使用Param
:
Param( $BuildNumber ) #must be first statement in script
# your current script goes here
然后您可以调用脚本传递 BUILD_NUMBER
作为 Jenkins 的参数。带参数调用Powershell脚本参考this question。
【讨论】:
【参考方案3】:您也可以使用 Powershell 插件,请参阅 here。
它允许您直接在 Jenkins 的文本框中输入 PowerShell 命令。
然后您可以使用可用的环境变量(请参阅插件的文档)。用法有点神秘:
(Get-Content ./Sources/SlmMachineControl/GUI/Project1.rc).replace("`"FileVersion`", `"1.0.0.0`"" ,"`"FileVersion`" `"2.3.$($env:BUILD_NUMBER).0`"") | Set-Content ./Sources/SlmMachineControl/GUI/Project1.rc
还要注意双引号的转义。花了我好一阵子:)
【讨论】:
以上是关于如何在我的 Powershell 脚本中使用 Jenkins 变量的主要内容,如果未能解决你的问题,请参考以下文章
在 PowerShell 脚本中访问 Windows 任务凭据
如何仅在 VS 2012 中的 Web 部署发布任务之前执行 PowerShell 脚本?