詹金斯 - powershell 输出
Jenkins - powershell output
我有一个调用 Powershell 脚本的 jenkins 管道步骤:
stage('Run script') {
steps {
script {
powershell(
returnStdout: true,
script: '''
. $env:WORKSPACE\Script.ps1
Invoke-Script'''
)
}
}
}
Invoke-Script
函数依次在单独的进程中执行 jar 文件:
...
$javaCommand = 'C:\Program Files\Java\jre1.8.0_261\bin\java'
$args = @("-jar", "D:\Test\MyTest.jar")
$process = Start-Process $javaCommand -ArgumentList $args -NoNewWindow -PassThru
Wait-Process -InputObject $process -ErrorAction SilentlyContinue
...
jar
文件简单愚蠢,只有几行 logger.error
行来证明这个概念。问题是,当我直接从 Powershell
会话 PC
运行 Invoke-Script
时,我会在 Powershell
控制台中看到所有输出。但是当我 运行 在 Jenkins
中使用相同的代码时,我在 Jenkins
控制台中看不到该输出。
关于它为什么会这样以及如何让我的 Jenkins
将信息输出到它的控制台的任何想法。
P.S。 jar
文件的修改不是选项,因为实际上,我无法更新它(第三方)并且 MyTest.jar
只是这里的示例
删除 returnStdout: true
即可。现在我在 Jenkins 控制台日志中看到 powershell script
和 MyTest.jar
输出
我有一个调用 Powershell 脚本的 jenkins 管道步骤:
stage('Run script') {
steps {
script {
powershell(
returnStdout: true,
script: '''
. $env:WORKSPACE\Script.ps1
Invoke-Script'''
)
}
}
}
Invoke-Script
函数依次在单独的进程中执行 jar 文件:
...
$javaCommand = 'C:\Program Files\Java\jre1.8.0_261\bin\java'
$args = @("-jar", "D:\Test\MyTest.jar")
$process = Start-Process $javaCommand -ArgumentList $args -NoNewWindow -PassThru
Wait-Process -InputObject $process -ErrorAction SilentlyContinue
...
jar
文件简单愚蠢,只有几行 logger.error
行来证明这个概念。问题是,当我直接从 Powershell
会话 PC
运行 Invoke-Script
时,我会在 Powershell
控制台中看到所有输出。但是当我 运行 在 Jenkins
中使用相同的代码时,我在 Jenkins
控制台中看不到该输出。
关于它为什么会这样以及如何让我的 Jenkins
将信息输出到它的控制台的任何想法。
P.S。 jar
文件的修改不是选项,因为实际上,我无法更新它(第三方)并且 MyTest.jar
只是这里的示例
删除 returnStdout: true
即可。现在我在 Jenkins 控制台日志中看到 powershell script
和 MyTest.jar
输出