Jenkins 参数 Release 与 Staging

Jenkins parameter Release versus Staging

我在刚刚设置的 Jenkins 中创建了一个自由式作业(最新版本)。

我给它加了参数。其中之一是 ReleaseType 的 Options 选择,其中包含 Staging 和 Release 选项。

其中一个构建步骤是在网站上传到时在服务器上执行远程命令。它使用执行 Windows 批处理命令构建步骤。

这是命令行(具有通用性):

sexec myuser@mysite.com -pw=mypassword -cmd="PowerShell -Command ""C:\batch\bvCopyFast.ps1 C:\inetpub\mysite${ReleaseType}\siteLoad C:\inetpub\mysite${ReleaseType}\site""

基本上我正在执行一个 powershell 命令,该命令使用 Robocopy 将文件从上传文件夹复制到站点的实际发布文件夹。

如您所见,我需要将 ${ReleaseType} 替换为实际值。问题是当它被执行时,它并没有进行替换。我只是在命令中使用了那个字面值,但它不起作用。

如果您使用 -Command 参数,则意味着您将在后面的引号之间编写原始 PowerShell 代码(允许您可以调用脚本)。

PowerShell -Command "Get-Date; pause;"

要调用 PowerShell 脚本文件,您应该使用:

PowerShell -File "Your-Script.ps1 -Parameter1 Argument1 -Parameter2 Argument2"

https://docs.microsoft.com/en-us/powershell/scripting/components/console/powershell.exe-command-line-help?view=powershell-6

我会编写一个 PowerShell 脚本,接受您的根路径和 releaseType 作为参数并执行它。

Param($rootPath,$releaseType)
{
   robocopy "$($rootPath)$($releaseType)\siteLoad" "$($rootPath)$($releaseType)\site"  
}

我从未使用过 Jenkins,所以我希望它能像我预期的那样工作!

sexec myuser@mysite.com -pw=mypassword -cmd=""PowerShell -File 'C:\batch\newScript.ps1' -RootPath 'c:\inetpub\mysite' -ReleaseType {ReleaseType}""