有趣。您的问题似乎并未出现在您的脚本中,因为您已经解释了它在批处理作业中的作用。
我不知道你的管道是如何写的,但我会建议看看Stage, Lock and Milestone这可能是你需要的。
的阶段步骤是在管道中的主要组成部分,划分 步骤的管道进入明确的单位,并帮助可视化使用“舞台视图” 进步插件
我想你可以在您的管线中添加一个像这样的阶段块:
stage("Previous Step") {
// Some previous step
}
stage("Wait for Script Execution") {
// Call your script
bat 'powershell.exe -ExecutionPolicy Bypass "D:\\Test\\Deploymentscripts\\PowerShellScript\\FileTransfer.ps1 $env:EndMarket $env:Environment"'
}
stage("Next Step") {
// Script already finished its execution
}
但是没有您的管道信息只是一个猜测。此外,以提高你的脚本兼容性,避免“蝙蝠ExcutionPolicy”,并使用PowerShell plugin,与插件,你可以简化你的代码是这样的:
powershell -File your_script.ps1
编辑:我忘了提,你可以尝试不同的替代方案在Windows和Linux之间使用“scp”直接兼容的powershell和winscp lib,我正在谈论Cygwin。
使用Cygwin安装(与SCP),您可以使用scp,因为它是一个Linux框和一个bash脚本,而不是PowerShell的:
D:/cygwin-64/bin/run.exe /usr/bin/bash -lic \"/home/user/file.sh\"
在这种情况下,我运行一个脚本默默通过Cygwin的一个詹金斯内带有“运行Windows批处理”选项的项目。在脚本中,您可以添加shell命令和所需的scp指令。
它可能看起来有点复杂,但增加了更多的灵活性来执行Windows - Linux任务。
我在我的blog中详细了解了更多示例,您可能会觉得它很有用。
由于avvi提到你应该检查是否正在加载变量。
您需要在您的问题中没有给出的PowerShell脚本中解决此问题。这里有一个PowerShell/winscp.dll示例:https://winscp.net/eng/docs/library_powershell。正如在这个例子中,当传输成功时,'$ session'被清除('$ session.Dispose()'),你可以假设传输过程完成。 – iRon
你能分享你的管道配置吗? –