我正在尝试从Jenkins管道中的文件运行Powershell脚本。
我已阅读this,其中显示了如何运行输入管道的PowerShell脚本,但我无法从文件中运行脚本。
我试过了:
powershell returnStatus: true, script: '-File build.ps1'
和各种组合,但无法弄清楚如何做到这一点。
答案 0 :(得分:16)
不久之后想出来,该行应该已经读过了
powershell returnStatus: true, script: '.\\build.ps1'
答案 1 :(得分:1)
@bic的答案很好,对我有很大帮助。如果您需要传递变量而又不想在脚本中使用环境变量 ,那么我发现的最好方法是使用两层(声明性语法):
writeFile file: 'tempFile.ps1', text: "${libraryResource 'psScript1.ps1'}"
powershell './tempFile.ps1 -someArg $env:someArg'
因此,您正在将一个包含脚本内容的临时文件写入本地目录。然后,您直接使用powershell
调用脚本,并将vars注入到调用中。
我同意在脚本中使用环境变量会更方便。您必须牢记一些模式:
environment
块中设置的script
块中进行操作。我通常在('init')
阶段将它们全部设置好。然后,您应该能够在管道中的任何地方使用和 并修改这些var,以及从其衍生的任何子脚本。如果您有很多env var,我建议将它们旁路到外部groovy库中。
pipeline {
...
stage('init') {
steps {
script {
env.myVariable = 'some value'
}
}
}
...
when
条件评估期间不会设置它们。同样,仅凭我的经验,我可能是错的。
stage('A') {
environment {
stageEnvVar = 'another value'
}
steps {
...
}
}
这是我在Jenkins env vars上找到的最佳参考:https://e.printstacktrace.blog/jenkins-pipeline-environment-variables-the-definitive-guide/