【问题标题】:Console output of "Powershell" Jenkins step appears with delay“Powershell”Jenkins 步骤的控制台输出出现延迟
【发布时间】:2018-08-13 09:15:31
【问题描述】:

我有一个 Jenkins 管道。其中一个步骤是 powershell,它执行一个 powershell 脚本。该脚本包含多个Echo 语句,这些语句应告知脚本执行情况。

我希望Echo 发出的文本会立即出现在 Jenkins 作业的控制台中。

问题是它们确实出现但延迟了。我的印象是输出被推迟,直到脚本完成它的工作。但这使得那些 echo 调用毫无用处。

我怎样才能让我用 Echo 编写的内容立即出现在 Jenkins 作业的控制台中?

其实 Jenkins 作业直到最近才使用 windows bat,然后所有的 echo 调用立即出现在 Jenkins 中。然后我改用Powershell(因为我想并行做一些事情),现在遇到问题了。

我已经阅读了许多可以使用的 CmdLet(Write-VerboseWrite-Information 等)并尝试了它们,但效果是一样的:输出出现但延迟了。 Jenkins 作业中不允许写入主机,通常被认为不太适合该任务。

感谢您的任何提示。

【问题讨论】:

    标签: powershell output jenkins-pipeline


    【解决方案1】:

    Echo 只是 Powershell 中的一个别名,实际上它不运行 bash 'echo' 命令,它运行的是 CMDLet。 使用命令:Get-Alias | ? {$_.name -like "echo*"} 你可以看到,使用 Witch CMDLet 代替“写入输出”。 要列出所有别名,您可以运行 Get-Alias

    使用 .Net 方法尝试输出:

    [system.console]::WriteLine("My Output")
    

    【讨论】:

    • 感谢您的建议,但没有帮助。我试过这样:[Console]::WriteLine("Hello")[Console]::Out.Flush() 但是根本没有输出(在 Jenkins 中)。
    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多