当从jenkinsfile调用Docker powershell时,它会继续执行,并且作业不会终止。
pipeline {
agent {
docker {
image 'mcr.microsoft.com/azure-powershell'
args "--mount type=bind,src=/opt,dst=/opt -i -t --entrypoint=''"
}
}
stages {
stage('PwShell') {
steps {
powershell(returnStdout: true, script: 'Write-Output "PowerShell is mighty!"')
}
}
}
}发布于 2021-11-22 09:20:15
由于您没有提供任何日志详细信息,因此很难将错误定位为卡住的原因。通常,对于Jenkins声明性管道,如下所示-
pipeline {
agent {
docker { image '...abc.com' }
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}当管道执行时,Jenkins将自动启动指定的容器并执行其中定义的步骤:
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
[guided-tour] Running shell script
+ node --version
v14.15.0
[Pipeline] }
[Pipeline] // stage
[Pipeline] }由于您在这些步骤中停留在PowerShell行中,这意味着没有正确设置这些步骤。
如果检查此Microsoft PowerShell Support for Pipeline文档,您会发现默认情况下,returnStdout返回默认编码为UTF-8的标准输出流。并且写输出 cmdlet返回输出流。
您应该能够通过按照如下所示的代码片段更改PowerShell行来解决问题。
steps {
def msg = powershell(returnStdout: true, script: 'Write-Output "PowerShell is mighty!"')
println msg
}有关PowerShell步骤的更多详细操作,请查看上述同一文档的example部分。我还建议阅读此Using Docker with Pipeline文档以获取更多信息。
https://stackoverflow.com/questions/70013670
复制相似问题