Jenkins 使用 Build Trigger 时

Jenkins when with Build Trigger

我在我的 jenkins 中有一个多分支工作,我有一个从我的 github 到我的 jenkins 的 webhook 设置,它发送每个拉取请求更改并发表评论。

我想要做的是让 github 发送拉取请求更改用于索引目的,但不要 运行 工作,除非开发人员添加评论 'test'在 github 拉取请求的评论中。

这是我的 Jenkinsfile,

pipeline {
  agent { label 'mac' }
  stages {
    stage ('Check Build Cause') {
      steps {
        script {
           def cause = currentBuild.buildCauses.shortDescription
           echo "${cause}"
        }
      }
    }
    stage ('Test') {
      when {
        expression {
          currentBuild.buildCauses.shortDescription == "[GitHub pull request comment]"
        }
      }
      steps {
        sh 'bundle exec fastlane test'
      }
    }
  }
}

所以我希望如果触发器不是 GitHub pull request comment,则不要 运行 任何东西。我已经试过了,但没有用。我已经尝试打印 currentBuild.buildCauses.shortDescription 变量并打印 [GitHub pull request comment],但我的 when expression

仍然不会 运行

我该怎么做?谢谢

所以实际上问题是因为 currentBuild.buildCauses.shortDescription return ArrayList 而不是普通字符串。

我真的不认为这是一个数组 [GitHub pull request comment],所以我设法用数组索引解决了这个问题。

currentBuild.buildCauses.shortDescription[0]

这 return 正确的构建触发器 GitHub pull request comment。所以对于同样遇到这个问题的任何人,这就是我解决它的方法

pipeline {
  agent { label 'mac' }
  stages {
    stage ('Test') {
      when {
        expression {
          currentBuild.buildCauses.shortDescription[0] == "GitHub pull request comment"
        }
      }
      steps {
        sh 'bundle exec fastlane test'
      }
    }
  }
}