BitBucket Jenkins 不会自动构建
BitBucket Jenkins doesn't automatically build
在我的 Jenkins 上我配置了:
源代码管理
Git 存储库:https://bitbucket.org/username/project.git
凭据:username/password
生成器触发器
将更改推送到 BitBucket 时构建
在我的 BitBucket Webhooks 上:
http://Jenkins.URL:8080/bitbucket-hook
我尝试将一个小的更改推送到 .txt 文件,但 Jenken 不会自动构建。如果我手动点击"build now",显示成功
可能是什么问题?
在bitbucket仓库中,项目比较简单。我只有一个文本文件要测试。我认为只要我对文本文件进行任何更改,它就会触发 Jenkins 构建。
编辑:
在Jenkins的系统日志中,显示"Polling has not run yet."。但是在 Bitbucket Webhook 请求日志中,我可以看到所有的请求。
您是否标记了复选框:轮询 SCM?还要确保您安排了一个短时间来尽快检测存储库中的更改。
也许你的问题是你安排了很长时间,在你推送之后 Jenkins 等待一段时间来检测变化。
正如@Adrian 提到的,您仍然需要 select "Poll SCM"。这有点不直观,但是当 BitBucket webhook 向 Jenkins 发送请求时,Jenkins 将轮询所有引用发生更改的 BitBucket 存储库的作业的更改。您可以为轮询设置较长的时间间隔,例如@monthly,因为你不需要 Jenkins 的调度来触发轮询;网络挂钩将在进行更改后立即处理。
您不需要启用轮询 SCM..
您必须确保您的 Webhook(设置->Webhooks)指向您的 Jenkins bitbucket-hook
,如下所示:“https://ci.yourorg.com/bitbucket-hook/”。
注意最后一个“/”,没有它,构建将不会被触发。
这是一件烦人的事情,因为在发送请求时,无论有无,您都会从 Jenkins 获得 200 状态代码。
我也在做同样的事情,但我的 Jenkins 中没有 Bitbucket Plugin。
我在我的 Bitbucket 中使用 Jenkins Plugin。我已经在每个存储库上配置了 webhook,并指向简单的 Jenkins URL。
然后,在我需要的每项工作中,只需检查 "Poll SCM" with/without 时间表(不是必需的)。
这样做效果非常好,我避免在我的 Jenkins 中安装另一个插件。
使用 Jenkins 2.53 和 Bitbucket 插件 1.1.5,我必须先手动触发构建才能让 webhook 工作。
中的这一行让我感到震惊
If the job's SCM (git) detects that the remote repository has changes, THEN
在那之后,webhook 工作得很好。
你一定要注意
分支说明符字段并指定您要推送到的分支。
如果未检测到任何更改,Bitbucket 的 Jenkins 插件将不会启动作业。
您可以添加多个要观看的分支。
仅如官方文档所述如果作业的 SCM (git) 检测到远程存储库发生更改,那么它将调用构建。
因此,如果您将分支说明符保留为默认值 */master 并且您正在推送到不同的分支,那么该作业将不会执行。
- 转到 https://bitbucket.org
上的项目页面
- 设置 -> Webhook -> 点击 "Add webhook"
- 添加https://yourjenkinsserver.com/bitbucket-hook/
- 再推
这需要您的 Jenkisserver 有 bitbucket 插件。转到 https://yourjenkinsserver.com/bitbucket-hook/ 检查它 - 它会崩溃,但你会知道你安装了它。
在带有 Bitbucket 插件的 Jenkins 2.138.1 上遇到了同样的问题,问题是我必须启用 "Source Code Management" -> git,否则尽管出现了 webhook,它也不会做任何事情在 Jenkins 的日志中 (/var/log/jenkins/jenkins.log).
在尝试使用 BitBucket 插件之后,我设法让它工作了。
以下是我发现触发构建所必需的事情的摘要,但在插件的文档中并不明显:
- 确保您的 webhook 已启用
repository push
触发器。我认为 pull request created
/ updated
就足够了(建立在 PR 上是我想要的)但是 the plugin reacts only to push
.
- 将您的存储库 URL(在 Git 插件中)设置为
https://bitbucket.org/REPOSITORY_OWNER/REPOSITORY_NAME
。如果是 SSH url. ,插件将不会匹配它
- 您需要启用 SCM 轮询。插件本身不会提取更改。您可以将计划字段留空,这样只有在插件触发时才会轮询存储库。
希望对您有所帮助。如果仍然没有为您触发构建,请尝试 enabling logs 以下 类:
com.cloudbees.jenkins.plugins.BitbucketHookReceiver
com.cloudbees.jenkins.plugins.BitBucketTrigger
com.cloudbees.jenkins.plugins.BitbucketJobProbe
com.cloudbees.jenkins.plugins.BitbucketPayloadProcessor
com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMSource
我在这个问题上苦苦挣扎了很长时间,在 Jenkins 文档中找不到解决方案,我在 Cloudbees 支持网站上找到了 here 解决方案。
您只需要将这些两个 webhook 添加到您的 bitbucket 存储库中即可:
https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook
我为所有管道工作,甚至是多分支管道。
希望这对某人有所帮助 ;)
艾达
对于像我这样刚接触 jenkins
和 CI\CD
的人:
我们应该为每个要自动构建的存储库单独添加 webhook
s。
我正在尝试构建 一个项目,我将 jenkins url
作为 webhook
添加到 另一个项目 并且误以为 webhook
对一个 bitbucket 账户下的所有项目都是通用的。但事实并非如此。有时很容易被忽视的好小东西。
此外,我使用了选项: Build when a change is pushed to BitBucket
而不是 Poll SCM
,其他答案建议我们应该使用它,但是 Build when a change is pushed to BitBucket
选项对我有用。
我也遇到了这个问题,通过更新 jenkins 中的 bitbucket 插件解决了这个问题:
还要确保 webhook url 的格式正确并且末尾有“/”:
{JenkinsURL}/bitbucket-hook/
在我的例子中,这是通过将 Bitbucket 的分支选项(高级配置)设置为 Jenkins Webhook 来解决的 "Build All"。
我支持这里的声明,即我们不需要 "Build when a change is pushed to BitBucket" 的 POLL SCM 选项,但我们需要确保在 Bit bucket 中创建的 webhook 是正确的。
我在 BitBucket 中使用的设置是:
存储库设置 -> Webhooks
1. Title: <Anything>
2. URL: https://jenkins_server_ip:8443/bitbucket-hook/
3. Status: (Tick) Active
4. SSL / TLS: (Tick) Skip certificate verification (Not ticking this was causing no auto-trigger in my case)
5. Request History: (Untick) Enable request history collection
6. Triggers : (Tick) Repository push
希望对您有所帮助!
如果您尝试在 Bitbucket Cloud 中使用 webhook 并尝试在 AWS EC2 中托管的 Jenkins 中触发构建,您应该将来自 Bitbucket 的传出 IP 地址添加到您的安全组。 https://support.atlassian.com/organization-administration/docs/ip-addresses-and-domains-for-atlassian-cloud-products/
在我的 Jenkins 上我配置了:
源代码管理
Git 存储库:https://bitbucket.org/username/project.git
凭据:username/password
生成器触发器
将更改推送到 BitBucket 时构建
在我的 BitBucket Webhooks 上:
http://Jenkins.URL:8080/bitbucket-hook
我尝试将一个小的更改推送到 .txt 文件,但 Jenken 不会自动构建。如果我手动点击"build now",显示成功
可能是什么问题?
在bitbucket仓库中,项目比较简单。我只有一个文本文件要测试。我认为只要我对文本文件进行任何更改,它就会触发 Jenkins 构建。
编辑:
在Jenkins的系统日志中,显示"Polling has not run yet."。但是在 Bitbucket Webhook 请求日志中,我可以看到所有的请求。
您是否标记了复选框:轮询 SCM?还要确保您安排了一个短时间来尽快检测存储库中的更改。
也许你的问题是你安排了很长时间,在你推送之后 Jenkins 等待一段时间来检测变化。
正如@Adrian 提到的,您仍然需要 select "Poll SCM"。这有点不直观,但是当 BitBucket webhook 向 Jenkins 发送请求时,Jenkins 将轮询所有引用发生更改的 BitBucket 存储库的作业的更改。您可以为轮询设置较长的时间间隔,例如@monthly,因为你不需要 Jenkins 的调度来触发轮询;网络挂钩将在进行更改后立即处理。
您不需要启用轮询 SCM..
您必须确保您的 Webhook(设置->Webhooks)指向您的 Jenkins bitbucket-hook
,如下所示:“https://ci.yourorg.com/bitbucket-hook/”。
注意最后一个“/”,没有它,构建将不会被触发。
这是一件烦人的事情,因为在发送请求时,无论有无,您都会从 Jenkins 获得 200 状态代码。
我也在做同样的事情,但我的 Jenkins 中没有 Bitbucket Plugin。
我在我的 Bitbucket 中使用 Jenkins Plugin。我已经在每个存储库上配置了 webhook,并指向简单的 Jenkins URL。 然后,在我需要的每项工作中,只需检查 "Poll SCM" with/without 时间表(不是必需的)。
这样做效果非常好,我避免在我的 Jenkins 中安装另一个插件。
使用 Jenkins 2.53 和 Bitbucket 插件 1.1.5,我必须先手动触发构建才能让 webhook 工作。
中的这一行让我感到震惊If the job's SCM (git) detects that the remote repository has changes, THEN
在那之后,webhook 工作得很好。
你一定要注意 分支说明符字段并指定您要推送到的分支。
如果未检测到任何更改,Bitbucket 的 Jenkins 插件将不会启动作业。 您可以添加多个要观看的分支。
仅如官方文档所述如果作业的 SCM (git) 检测到远程存储库发生更改,那么它将调用构建。
因此,如果您将分支说明符保留为默认值 */master 并且您正在推送到不同的分支,那么该作业将不会执行。
- 转到 https://bitbucket.org 上的项目页面
- 设置 -> Webhook -> 点击 "Add webhook"
- 添加https://yourjenkinsserver.com/bitbucket-hook/
- 再推
这需要您的 Jenkisserver 有 bitbucket 插件。转到 https://yourjenkinsserver.com/bitbucket-hook/ 检查它 - 它会崩溃,但你会知道你安装了它。
在带有 Bitbucket 插件的 Jenkins 2.138.1 上遇到了同样的问题,问题是我必须启用 "Source Code Management" -> git,否则尽管出现了 webhook,它也不会做任何事情在 Jenkins 的日志中 (/var/log/jenkins/jenkins.log).
在尝试使用 BitBucket 插件之后,我设法让它工作了。 以下是我发现触发构建所必需的事情的摘要,但在插件的文档中并不明显:
- 确保您的 webhook 已启用
repository push
触发器。我认为pull request created
/updated
就足够了(建立在 PR 上是我想要的)但是 the plugin reacts only topush
. - 将您的存储库 URL(在 Git 插件中)设置为
https://bitbucket.org/REPOSITORY_OWNER/REPOSITORY_NAME
。如果是 SSH url. ,插件将不会匹配它
- 您需要启用 SCM 轮询。插件本身不会提取更改。您可以将计划字段留空,这样只有在插件触发时才会轮询存储库。
希望对您有所帮助。如果仍然没有为您触发构建,请尝试 enabling logs 以下 类:
com.cloudbees.jenkins.plugins.BitbucketHookReceiver
com.cloudbees.jenkins.plugins.BitBucketTrigger
com.cloudbees.jenkins.plugins.BitbucketJobProbe
com.cloudbees.jenkins.plugins.BitbucketPayloadProcessor
com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMSource
我在这个问题上苦苦挣扎了很长时间,在 Jenkins 文档中找不到解决方案,我在 Cloudbees 支持网站上找到了 here 解决方案。
您只需要将这些两个 webhook 添加到您的 bitbucket 存储库中即可:
https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook
我为所有管道工作,甚至是多分支管道。
希望这对某人有所帮助 ;)
艾达
对于像我这样刚接触 jenkins
和 CI\CD
的人:
我们应该为每个要自动构建的存储库单独添加 webhook
s。
我正在尝试构建 一个项目,我将 jenkins url
作为 webhook
添加到 另一个项目 并且误以为 webhook
对一个 bitbucket 账户下的所有项目都是通用的。但事实并非如此。有时很容易被忽视的好小东西。
此外,我使用了选项: Build when a change is pushed to BitBucket
而不是 Poll SCM
,其他答案建议我们应该使用它,但是 Build when a change is pushed to BitBucket
选项对我有用。
我也遇到了这个问题,通过更新 jenkins 中的 bitbucket 插件解决了这个问题:
还要确保 webhook url 的格式正确并且末尾有“/”:
{JenkinsURL}/bitbucket-hook/
在我的例子中,这是通过将 Bitbucket 的分支选项(高级配置)设置为 Jenkins Webhook 来解决的 "Build All"。
我支持这里的声明,即我们不需要 "Build when a change is pushed to BitBucket" 的 POLL SCM 选项,但我们需要确保在 Bit bucket 中创建的 webhook 是正确的。
我在 BitBucket 中使用的设置是: 存储库设置 -> Webhooks
1. Title: <Anything>
2. URL: https://jenkins_server_ip:8443/bitbucket-hook/
3. Status: (Tick) Active
4. SSL / TLS: (Tick) Skip certificate verification (Not ticking this was causing no auto-trigger in my case)
5. Request History: (Untick) Enable request history collection
6. Triggers : (Tick) Repository push
希望对您有所帮助!
如果您尝试在 Bitbucket Cloud 中使用 webhook 并尝试在 AWS EC2 中托管的 Jenkins 中触发构建,您应该将来自 Bitbucket 的传出 IP 地址添加到您的安全组。 https://support.atlassian.com/organization-administration/docs/ip-addresses-and-domains-for-atlassian-cloud-products/