当前位置: 首页 > 知识库问答 >
问题:

当通过Jenkins管道中的shell脚本运行ansible playbook时,echo输出被缓冲,不会实时显示

邓浩漫
2023-03-14
def paramMode = "${params.mode}"
def paramClientCode = "${params.client_code}"
def paramPrevCodeDropID = "${params.prev_code_drop_id}"
def paramCodeDropID = "${params.code_drop_id}"
def paramReleaseID = "${params.release_id}"
def paramConfigZipVer = "${params.config_zip_ver}"
def paramEmailIDs = "${params.email_ids}"

node {
    stage('one-click') {
        node ('nodeName') {
            git url: "gitURL", branch: "runParallel", credentialsId: "stash_id"
            echo sh (returnStdout: true, script: """
            ./runansible.sh ${paramMode} -h ${paramClientCode} -c ${paramCodeDropID} -r ${paramReleaseID} -v ${paramConfigZipVer} -e ${paramEmailIDs} -p ${paramPrevCodeDropID}
            """)

        }

    }

}

共有1个答案

郑俊材
2023-03-14

我认为您想要的已经是sh的默认行为,但是您已经使用returnstdout:true禁用了它。这会导致捕获并返回输出,而不是打印输出。然后使用echo打印它。

来自sh的文档:

returnStdout(可选)

如果选中,则任务的标准输出将作为step值作为字符串返回,而不是打印到生成日志中。(标准错误(如果有)仍将打印到日志中。)

因此,不要echo sh(returnstdout:true,...),只尝试sh(...)

 类似资料:
  • 问题内容: 我能够运行以下shell脚本,但无法从Jenkins管道代码运行。 尝试1。 输出: 尝试2: 尝试过sh“”“ 输出 : 美元符号后的非法字符串体字符;解决方案:要么转义文字美元符号,要么将值表达式括起来 有人能帮我吗? 问题答案: 这应该工作。 您还需要在调用下面的新subshel​​l时转义$

  • 问题内容: 我正在尝试从Jenkins管道中的文件运行Powershell脚本。 我已经阅读了本文,该文章显示了如何运行输入到管道中的Powershell脚本,但是我无法从文件中运行脚本。 我努力了: 和各种组合,但无法弄清楚该如何做。 问题答案: 很快就弄清楚了,该行应该已经阅读

  • 问题内容: 我正在尝试提取git分支并在我的Jenkinsfile中提交信息,如下所示: 我想以后像这样打印它: 我没有得到真正的价值,而是这样: 我做错了什么,如何正确获取需要的值? 编辑:不,建议的重复项不是答案,因为我知道用于检索所需信息的shell命令。我的问题是信息传递给我的方式,而不是。 问题答案: 这个完整的管道对您有用吗?使用管道插件2.4为我工作。

  • 例如,我的脚本将使用生成大量输出。我知道我可以通过将其作为

  • 问题内容: 是否有任何聪明的方法可以通过ssh在远程主机上运行本地Bash功能? 例如: 是的,我知道这行不通,但是有办法实现吗? 问题答案: 您可以使用该命令通过来使功能在远程计算机上可用。有多个选项,具体取决于您要如何运行远程脚本。 要在远程主机上使用该功能: 更好的是,为什么还要麻烦管道: 或者,您可以使用HEREDOC: 如果要发送脚本中定义的所有函数,而不仅仅是发送,请像这样使用: 说明

  • 我在Hue中使用oozie编辑器调用一个bash shell脚本。 我使用了工作流中的shell操作,并在shell命令中的不同选项下面进行了尝试: null 无法运行程序“sec_test_oozie.sh”(在目录“/data/hadoop/yarn/local/usercache/user/appcache/application_1399542362142_0086/container_1