詹金斯没有在分支创建/删除上开始新的构建

Posted

技术标签:

【中文标题】詹金斯没有在分支创建/删除上开始新的构建【英文标题】:Jenkins not starting a new build on branch creation/deletion 【发布时间】:2016-10-18 06:58:29 【问题描述】:

想法: 每次推送到 git repo 时,都应该启动新的 Jenkins 任务构建。如果更改为:

已创建新分支 - Jenkins 将获取源代码,进行一些设置并运行 Docker 容器,可以在其中测试此分支等。 新推送 - Jenkins 应该重建源代码 分支已删除 - Jenkins 应删除已构建的文件、删除 DB、关闭容器等。

设置:

带有指向 Jenkins URL 的 webhook 的 BitBucket 存储库 Jenkins 使用 BitBucket 插件在本地服务器上运行,任务是“在将更改推送到 BitBucket 时进行构建”

问题:

当创建/删除分支时,BitBucket webhook 会触发,Jenkins 正在处理请求(到目前为止,一切都很好)。

在 Jenkins 日志中,我看到: “收到提交挂钩通知...”但“BitBucket Hook Log”屏幕显示如下:

    Polling SCM changes on master
Using strategy: Default
[poll] Last Built Revision: Revision 
.....
.....
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repositories
 > git config remote.origin.url ...
Fetching upstream changes from ...
 > git --version # timeout=10
using .gitcredentials to set credentials
 > git config --local credential.username ....
 > git config --local credential.helper store --
 > git -c core.askpass=true fetch --tags --progress ... +refs/heads/*:refs/remotes/origin/*
 > git config --local --remove-section credential # timeout=10
Polling for changes in
Seen branch in repository ....
Done. Took 6.6 sec
No changes

所以基本上是说没有变化,作业没有运行。 如果我进行了代码更改并将该更改推送到 BitBucket,该作业将按预期开始并且运行良好。

任何想法如何强制 Jenkins 在分支创建/删除时开始新构建?

【问题讨论】:

我在 Github 上遇到了同样的问题,每当创建新分支时,webhook 都会获取 [create] 请求,但 Jenkins 不会触发构建。 Github 日志最后显示“无更改”。但是,如果我确实推送了新创建的分支,那么 Jenkins 就会进行构建。你找到解决办法了吗? 从 git 来看这是有道理的——创建一个分支只会创建一个新的元信息,但最后一次提交是一样的。您需要单独处理分支创建的分支名称。 【参考方案1】:

我已经发布了一个新版本的 bitbucket-plugin (v1.1.30),它允许在接收到新的分支被创建事件时进行构建

【讨论】:

以上是关于詹金斯没有在分支创建/删除上开始新的构建的主要内容,如果未能解决你的问题,请参考以下文章

选择要在 Jenkins 中构建的分支

Xcode 服务:选择 Git 分支

Git分支管理——创建合并删除分支

Git分支管理——创建合并删除分支

将更改推送到特定分支时不会触发多分支管道

在推送之前丢弃 Mercurial 中的本地分支