首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins ` `if (sh '...')`

Jenkins ` `if (sh '...')`
EN

Stack Overflow用户
提问于 2020-04-09 00:49:03
回答 2查看 38关注 0票数 0

如何让Jenkins在条件语句中运行sh命令?如果它拉出一个以'WIP‘开头的git提交,我希望它中止执行。

我的设想是:

代码语言:javascript
复制
stage('Build') {
  steps {
    // some steps ...
    script {
      if (sh "git log -1 --pretty='format:%B' | grep -q ^WIP") {
        currentBuild.result = 'ABORTED'
        return
      }
    }
    // more steps ...
  }
}

pretty我的管道报告“...but ')',found 'git log -1 --pretty=‘格式:%B’| grep -q ^WIP'”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-09 02:44:02

使用sh步骤的方式不会返回任何输出,sh(command)也不会返回任何输出。您需要使用sh(script: command, returnStdout: true)来获取外壳命令的输出。此外,您还需要从grep中删除-q参数,才能将任何输出返回到控制台。

代码语言:javascript
复制
stage('Build') {
  steps {
    // some steps ...
    script {
      if (sh(script:"git log -1 --pretty='format:%B' | grep ^WIP", returnStdout: true).trim()) {
        currentBuild.result = 'ABORTED'
        return
      }
    }
    // more steps ...
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-04-09 02:28:43

似乎是Groovy解析器的问题。只需将参数括在括号中:

代码语言:javascript
复制
if (sh("git log -1 --pretty='format:%B' | grep -q ^WIP"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61105806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档