我们正在为我们的CD使用具有多分支配置的管道插件。 我们检查了Jenkins文件,它可以使用git。
git url: "$url",credentialsId:'$credentials'
作业正常,但在将更改推送到github时不会自动触发。 我已正确设置GIT Web挂钩。
有趣的是,当我进入multibranch作业的一个分支并点击" View Configuration"时,我看到"当一个更改被推送到Github"未经检查。没有办法检查它,因为我无法修改作业的配置(因为它来自父级)并且父级中没有相同的选项。
任何想法如何解决这个问题?
答案 0 :(得分:6)
对于声明式管道,请尝试:
pipeline {
...
triggers {
githubPush()
}
...
}
对我来说,这启用了复选框“ GITScm轮询的GitHub挂钩触发器”,但实际上并不需要轮询。这需要GitHub插件。
答案 1 :(得分:5)
我找到了一种检查复选框的方法"将更改推送到Github"时构建。
这条线就行了:
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
我认为需要进行民意调查以使其发挥作用。如果不需要民意调查会很好。
这是一个Jenkinsfile
示例,实现了这个:
#!/usr/bin/env groovy
node ('master'){
stage('Build and Test') {
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
checkout scm
env.PATH = "${tool 'Maven 3'}/bin:${env.PATH}"
sh 'mvn clean package'
}
}
答案 2 :(得分:1)
如果您使用Stash作为示例,您可以注册一个Post-Receive WebHook,您必须在其中插入您的URL表格Jenkins,如:http://jenkinsHost:9090/git/notifyCommit?url=ssh://git@gitHost:1234/test.git
在你的jenkins工作中,你必须至少设置Build触发器" Poll SCM"。 并设置例如5分钟的轮询时间。 这还可以为您的multibranch项目配置启用自动分支索引。
答案 3 :(得分:1)
使用轮询会增加延迟 - 构建开始所需的时间,从而完成回馈结果。
在我看来,基本的插件具有较低的抽象级别,所以我切换到Github Organization Folder插件,这取决于所有插件并设置组织挂钩以触发构建分支和/或拉请求。
答案 4 :(得分:1)
对于声明性管道,请尝试以下操作:
pipeline {
agent any
triggers {
pollSCM('') //Empty quotes tells it to build on a push
}
}
答案 5 :(得分:0)
在开始之前,我想强调一下,到目前为止我还没有Jenkins的经验,因此可能会有一堆更好的解决方案。
简而言之,我想要实现的目标:
我是如何实现这一目标的?
pipeline {
agent any
stages {
stage('build') {
steps {
dir('test1') {
git branch: BRANCH_NAME, url: 'git@bitbucket.org:user/test1.git', credentialsId: 'credentials_id'
}
sh('build_process')
}
}
}
}

我遇到的问题是您无法为管道设置Bitbucket挂钩
我向Jenkins添加了Bitbucket Branch Source Plugin
我在分支来源'中选择了Bitbucket。在设置工作时
我添加了凭据并勾选了自动注册webhook
扫描多分支流水线触发器'如果不以其他方式运行,我会勾选一个复选标记,间隔为1分钟
我在我的Bitbucket仓库中添加了一个webhook
我更新了所有插件,重新启动了Jenkins并准备好了
我安装的其他插件:Bitbucket Plugin,Pipeline插件。希望这对某些人有帮助,在没有Bitbucket Branch Source插件的情况下经过几个小时的努力,我确实设法解决了这个问题。
答案 6 :(得分:-2)
node{
stage('Build and Test') {
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('* * * * *')])])
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx-xxx-xxxx[your credentails Id]', url: 'https://github.com/git']]])
echo 'Build and Test has been done'
}
}