繁体   English   中英

无法理解 `sh !` 在 Jenkins 管道代码中的作用

[英]unable to understand what `sh !` does inside a Jenkins pipeline code

我有一个 Jenkins 管道代码

stages {
    stage('Monitoring logs') {
       steps {
          script {
              sh '! grep "wow" output.log
                 }
              }
          }
      }

有人可以解释一下这部分代码是做什么的 -> sh '! grep "wow" output.log' sh '! grep "wow" output.log'以及如果在output.log找到 "wow" 字符串,它会对管道执行的执行或状态产生什么影响?

我知道grep "wow" output.log将在output.log搜索 "wow" 字符串,但我不知道什么会sh '! grep "wow" output.log' sh '! grep "wow" output.log'做什么?

  1. 如果output.log包含wow ,则grep "wow" output.log成功(退出 0),否则失败(退出非 0)。

  2. ! 否定退出代码(0 变为 1;非 0 变为 0)。

  3. Jenkins 的sh函数运行一个 shell 脚本并在非 0 退出代码上抛出一个异常,这将使管道失败。 *

因此,如果output.log包含wow则管道将失败。

*通过使用-e选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM