GitHub push操作 触发Jenkins构建 配置webhook

882 阅读3分钟

配置 Jenkins 和 GitHub 的 Webhook 以便在 GitHub 上有代码推送时自动触发 Jenkins 构建的过程可以通过以下步骤完成。我们将分为两部分来讲解:在 Jenkins 上配置在 GitHub 上配置 Webhook

1. 在 Jenkins 上配置 Webhook

步骤 1:安装 GitHub 插件

首先,确保 Jenkins 安装了 GitHub 插件,以便它可以与 GitHub 进行交互。

  1. 登录 Jenkins。
  2. 进入 Jenkins 管理界面 -> 插件管理
  3. 可用插件 标签页中,搜索 GitHub
  4. 找到 GitHub 插件并安装,安装完成后,Jenkins 会自动重启。

步骤 2:创建一个 Jenkins Job(自由风格项目)

  1. 在 Jenkins 主页面,点击 新建任务
  2. 输入任务名称,选择 自由风格项目,然后点击 OK
  3. 在配置页面中,进行以下设置:
    • 源码管理 -> 选择 Git
    • 仓库 URL 中填写 GitHub 仓库的 HTTPS 地址(例如:https://github.com/username/repository.git)。
    • 如果需要身份验证(例如私人仓库),可以配置 GitHub 凭据。
  4. 构建触发器 部分,勾选 GitHub hook trigger for GITScm polling

步骤 3:配置 Jenkins 的 GitHub 凭据(如果需要)

如果你使用的是私有 GitHub 仓库,Jenkins 需要配置 GitHub 的凭据。

  1. 进入 Jenkins 管理界面 -> 凭据
  2. 系统 下,点击 全局凭据
  3. 选择 添加凭据,输入 GitHub 的用户名和密码(或者使用个人访问令牌,推荐方式)。
  4. 保存并在 Jenkins 项目配置中的 Git 仓库 URL 中选择该凭据。

步骤 4:配置 Jenkins 接收 GitHub Webhook 触发

确保 Jenkins 可以接收到来自 GitHub 的 Webhook 事件。

  1. 确认 Jenkins 端口和 URL 设置

    • 如果你在本地运行 Jenkins,确保你的机器可以访问 Jenkins。你需要知道 Jenkins 的公共 IP 或域名,特别是在防火墙或代理服务器后面的情况下。
    • 如果 Jenkins 运行在本地,并且没有外部访问权限,考虑使用像 ngrok 这样的工具进行端口转发,将本地服务暴露到互联网上。
  2. 启用 Jenkins 的远程触发功能: 进入 Jenkins 管理界面 -> 系统设置 -> 找到 GitHub 部分,启用 GitHub Webhook API

2. 在 GitHub 上配置 Webhook

步骤 1:生成 GitHub Webhook URL

确保 Jenkins 可以从 GitHub 接收到 Webhook 事件。你需要确保 GitHub 可以访问 Jenkins。通常,Webhook 的 URL 是:

http://<your-jenkins-domain>/github-webhook/

如果 Jenkins 是本地运行的,确保使用外部可访问的 URL。

步骤 2:在 GitHub 上配置 Webhook

  1. 登录到 GitHub,进入你的仓库。
  2. 点击 Settings -> Webhooks
  3. 点击 Add webhook
  4. Payload URL 字段中,输入 Jenkins 的 Webhook URL(如 http://<your-jenkins-domain>/github-webhook/)。
  5. Content type 选择 application/json
  6. Which events would you like to trigger this webhook? 选择 Just the push event(当有 push 操作时触发)。
  7. 勾选 Active
  8. 点击 Add webhook 完成配置。

3. 测试配置

  1. 在 GitHub 仓库中进行代码提交。
  2. Jenkins 应该会收到 GitHub 发来的 Webhook 通知,并自动触发构建。

监控和调试

  • 如果 GitHub Webhook 配置不正确,GitHub 会在 Webhook 设置页面显示错误日志。
  • 在 Jenkins 构建页面中查看构建日志,确保一切正常。

额外提示

  • 安全性:你可以配置一个 secret 密钥来确保只有 GitHub 发来的 Webhook 请求可以被 Jenkins 接受。在 GitHub Webhook 配置页面中设置一个密钥,并在 Jenkins 中配置相应的密钥。
  • Jenkins Polling vs Webhook:Webhooks 是更高效的选择,因为它们在代码变化时会立即触发 Jenkins,而不需要定时轮询 GitHub。

结论

通过以上步骤,你可以成功地配置 Jenkins 和 GitHub Webhook,使得每次有代码推送到 GitHub 仓库时,Jenkins 会自动触发构建任务。