【问题标题】:How to avoid job triggers when pushing inside job?推内部工作时如何避免工作触发?
【发布时间】:2021-04-14 13:44:34
【问题描述】:

我有 Jenkins Pipeline 工作,它使用带有令牌的 Generic Webhook Trigger。在我拥有的管道脚本内部:

sh '''
    git add .
    git commit -m "Update..." || true
    git push origin main
'''

如何防止工作触发器从管道内推送?目前我总是有双重触发。

【问题讨论】:

    标签: jenkins github jenkins-pipeline


    【解决方案1】:

    我相信有两种选择:

    1. 您禁用了 webhook
    2. 使用 when 条件

    我认为你不想做第一个,所以对于第二个,有when 条件。

    // lines skipped for brevity
    stage('myStage') {
      when {
        triggeredBy cause: 'UserIdCause'
      }
    
      steps {
        sh '''
          git add .
          git commit -m "Update..." || true
          git push origin main
        '''
      }
    }
    

    这只会在用户按下Build 按钮时运行。但是,如果您想通过 webhook 事件运行 Job 并且仍然有更改存储库的步骤(从而导致另一个更改、另一个 webhook 事件等),您可能可以使用来自管道的特定消息提交像Jenkins automated commit,然后在第二个 webhook 事件中,检查提交消息(假设这是可能的,IDK)并且如果它是自动的,则不要运行该步骤。

    我希望第一个解决方案对您有所帮助,因为它更优雅且易于操作。在我的流水线中,我只让 Jenkins 推送到我的 GitHub 存储库,当我正在做一个发布或其他事情时。不是在通常的构建上。

    【讨论】:

      猜你喜欢
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多