You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需Bitbucket Webhook与定时任务,如何自动触发Jenkins任务?

无需Webhook与定时任务触发Jenkins构建的方案

以下几种方案均无需暴露本地Jenkins到公网,也不用定期轮询,完全基于主动触发逻辑实现:

1. 本地Git预推送钩子触发

在开发者的本地Git仓库配置pre-push钩子,每次执行git push时自动调用Jenkins API触发构建。这种方式依赖开发者机器能访问内网Jenkins,无需对Jenkins做公网暴露。

配置步骤:

  • 进入本地项目的.git/hooks目录,创建无后缀的pre-push文件
  • 写入bash脚本(根据你的Jenkins信息修改参数):
#!/bin/bash
# Jenkins 配置
JENKINS_INTERNAL_URL="http://你的内网Jenkins地址:端口"
TARGET_JOB="你的任务名称"
JENKINS_USER="你的Jenkins账号"
JENKINS_API_TOKEN="你的Jenkins API Token"

# 调用远程构建API
curl -X POST "$JENKINS_INTERNAL_URL/job/$TARGET_JOB/build" \
  --user "$JENKINS_USER:$JENKINS_API_TOKEN" \
  -H "Content-Type: application/x-www-form-urlencoded"
  • 赋予脚本执行权限:chmod +x .git/hooks/pre-push

为了让团队统一使用,可以把钩子文件放在项目根目录的hooks文件夹(提交到仓库),然后在项目文档中说明执行cp hooks/pre-push .git/hooks/完成安装。

2. 内网Bitbucket Pipeline触发

如果你的Bitbucket使用自托管构建代理(部署在内网,可访问本地Jenkins),可以在bitbucket-pipelines.yml中添加推送后触发步骤:

pipelines:
  default:
    - step:
        name: Trigger Jenkins Build
        script:
          - curl -X POST "http://内网Jenkins地址:端口/job/你的任务名称/build" \
              --user "$JENKINS_USER:$JENKINS_API_TOKEN"

这里的JENKINS_USER和JENKINS_API_TOKEN可以在Bitbucket的项目私有环境变量中配置,避免硬编码敏感信息。代码推送后,内网代理会主动调用Jenkins API,无需开放Jenkins端口到公网。

3. 按需触发SCM Polling(无定时轮询)

Jenkins的SCM Polling支持手动触发检查,而非定时轮询。具体操作:

  • 在Jenkins任务配置中,勾选「Poll SCM」但不设置Cron表达式
  • 在本地Git钩子或Bitbucket Pipeline中,调用pollSCM API触发一次代码检查:
curl -X POST "http://内网Jenkins地址:端口/job/你的任务名称/pollSCM" \
  --user "$JENKINS_USER:$JENKINS_API_TOKEN"

这种方式仅在有代码推送时才触发Jenkins检查代码变更,避免了定时轮询的无效请求,同时实现自动构建。

安全提示

  • 务必使用Jenkins API Token而非账号密码,Token可在用户设置页面生成,且可限制仅拥有触发指定任务的权限
  • 在Jenkins全局安全配置中设置「IP访问控制」,仅允许内网IP访问API接口
  • 敏感信息(如API Token)不要硬编码,使用环境变量或密钥管理工具存储

内容的提问来源于stack exchange,提问作者Igor-Potapov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 06:07:38