[英]Trigger build only on pushes to master
我正在使用 Jenkins 和Github 插件我已经使用 GitHub 的 webhooks 集成了它,它就像一个魅力,除了每次将某些东西推送到存储库时都会触发构建。
有没有一种方法可以限制仅在对远程分支master
进行更改时才构建?
使用带有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.