当前位置: 首页 > 面试题库 >

如何在Jenkins管道构建日志中禁用命令输出

洪宇定
2023-03-14
问题内容

我正在使用Jenkinsfile编写管道脚本。

有什么方法可以禁用在构建日志中打印执行的Shell命令吗?

这只是詹金斯管道的一个简单示例:

node{
  stage ("Example") {
    sh('echo shellscript.sh arg1 arg2')
    sh('echo shellscript.sh arg3 arg4')        
  }
}

在控制台日志中产生以下输出:

[Pipeline] node
Running on master in /var/lib/jenkins/workspace/testpipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
[testpipeline] Running shell script
+ echo shellscript.sh arg1 arg2  
shellscript.sh arg1 arg2
[Pipeline] sh
[testpipeline] Running shell script
+ echo shellscript.sh arg3 arg4
shellscript.sh arg3 arg4
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

基本上,我想禁用命令本身的打印。

+ echo shellscript.sh arg1 arg2
+ echo shellscript.sh arg3 arg4

问题答案:

默认情况下,Jenkins使用标志启动shell脚本-xe-x启用其他日志记录。-e如果其中的任何命令返回非零退出状态,则使脚本退出。要重置标志,我建议两个选项:

  1. 调用set +x脚本主体。
  2. 通过定制的shebang行,而无需-xsh('#!/bin/sh -e\n' + 'echo shellscript.sh arg1 arg2')

至于第二个选项,您可以定义一个包装函数以方便使用,它将在脚本之前添加自定义shebang,然后调用 sh

def mysh(cmd) {
    sh('#!/bin/sh -e\n' + cmd)
}


 类似资料:
  • 我正在本地可信环境中运行Jenkins,我正在尝试运行此管道。此Jenkinsfile已签入git。 最初几次运行构建时,我需要手动批准变更(Jenkins-

  • 问题内容: 我最近将bash执行命令重写为Jenkins管道。旧代码就像 现在,我使用管道脚本来包装命令,像这样 但是,我遇到了一个错误。当我尝试时,它会正确显示。所以我怀疑内部有问题。 在使用管道之前,命令在外壳执行中工作正常。因此,源代码安装在Jenkins服务器上,似乎管道脚本不知道源命令是什么。 如何在sh wrapd块中运行source命令? 问题答案: 替换为 请注意,第一个点后有一个

  • 问题内容: 我在本地受信任的环境中运行Jenkins,在其中尝试运行此管道。此Jenkinsfile被检入git。 运行构建的前几次,我需要手动批准更改(Jenkins-> Mange Jenkins->进程内脚本批准)。现在,我收到此异常,没有什么可以批准的。我要做的就是解析XML文件。这些安全检查能否完全绕过管道构建? 问题答案: 目前不可能。有针对此问题的公开门票https://issues

  • 我正在尝试从管道中自动创建Jenkins管道构建。 我有一个管道,它创建一个比特桶存储库并向其提交一些代码,包括一个Jenkinsfile。 我需要向此管道添加另一个步骤,然后为其创建管道生成,这将运行 Jenkinsfile 中的步骤。 我认为Jobs DSL应该能够处理这一点,但我找到的文档非常稀少,我仍然不完全确定是否有可能或如何做到这一点。 任何帮助都将不胜感激。我想生成的Pipeline

  • 问题内容: 通过使用詹金斯,我创建了一个“管道”类型的项目。然后将“ SCM管道”设置为。您可以检查我的GitHub存储库: 我想使用Jenkins管道构建docker映像。这是Jenkinsfile: Dockerfile也非常简单: 当我运行项目时。我收到以下错误: 这是完整的控制台输出 我检查了工作区: 测试 目录中什么都没有,但是Jenkinsfile和Dockerfile都在 test

  • 通过使用jenkins,我创建了一个“管道”类型的项目。我设置了“来自SCM的管道”来获取< code>Jenkinsfile。你可以查看我的GitHub库: 我想使用 Jenkins 管道来构建一个 docker 映像。以下是 Jenkinsfile: Dockerfile文件也非常简单: 当我运行这个项目时。我得到以下错误: 这是完整的控制台输出 我检查了工作区: 测试目录中没有任何内容,但J