繁体   English   中英

仅在推送到 master 时触发构建

[英]Trigger build only on pushes to master

我正在使用 Jenkins 和Github 插件我已经使用 GitHub 的 webhooks 集成了它,它就像一个魅力,除了每次将某些东西推送到存储库时都会触发构建。

有没有一种方法可以限制仅在对远程分支master进行更改时才构建?

行动计划

  • 打开Jenkins作业配置
  • 转到源代码管理部分
  • Git部分
    • 对于要构建的分支字段添加值* / master

这告诉Jenkins Job,只有在将某些东西推送到分支主机时才执行该作业。

图:显示仅用于构建分支主服务器的配置。

在此输入图像描述

使用带有when子句的管道作业是一个可能的选择。

这是一个示例,它从您的存储库中检查所有分支并使用git for-each-ref --sort=committerdate refs/remotes/扫描分支,以便查看最后更新的分支。 如果main最近更新过,则检查它并运行其他阶段。

def do_build = true

pipeline {
    agent any

    stages {
        stage('Checkout SCM') {
          steps {
            // checkout all branches
            checkout([$class: 'GitSCM',
              branches: [[name: '*/*']],
              userRemoteConfigs: [[credentialsId:  'YOUR_JENKINS_SSH_KEY', url: 'ssh://git@<YOUR-GIT-REPO-URL>']]])
            script {
              def last_git = sh (
                  script: 'git for-each-ref --sort=committerdate refs/remotes/',
                  returnStdout: true
              ).trim()
              do_build = last_git.endsWith("main")
            }
          }
        }
        stage('Build') {
          when {
            expression { do_build }
          }
          steps {
            echo "checkout main"
            checkout([$class: 'GitSCM',
              branches: [[name: '*/main']],
              userRemoteConfigs: [[credentialsId:  'YOUR_JENKINS_SSH_KEY', url: 'ssh://git@<YOUR-GIT-REPO-URL>']]])
            // DO OTHER STUFF ON MAIN BRANCH E.G. TESTS
          }
        }
    }
}

暂无
暂无

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

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