Jenkins-构建触发器-webhook

作者:c_chun 发布时间: 2025-11-12 阅读量:1 评论数:0

步骤 1:安装 Gitee 插件(如果仓库是GitHub,就安装GitHub仓库)

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

  1. 登录 Jenkins。

  2. 进入 Jenkins 管理界面 -> 插件管理

  3. 可用插件 标签页中,搜索 Gitee

  4. 找到 Gitee 插件并安装,安装完成后,Jenkins 会自动重启。

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

  1. 在 Jenkins 主页面,点击 新建任务

  2. 输入任务名称,选择 自由风格项目,然后点击 OK

  3. 在配置页面中,进行以下设置:

    • 源码管理 -> 选择 Git

    • 仓库 URL 中填写 Gitee 仓库的 HTTPS 地址(例如:https://gitee.com/username/repository.git)。

    • 如果需要身份验证(例如私人仓库),可以配置 Gitee 凭据。

  4. 构建触发器 部分,勾选 GitHub hook trigger for GITScm polling


步骤 3:获取公钥私钥,gitee设置公钥

第一步:宿主机生成密钥对(核心:私钥存宿主机,不泄露)

在服务器宿主机(不是容器内)执行以下命令,生成 SSH 密钥对(用于身份验证,比如容器内 Jenkins 拉取 Gitee 代码):

# 1. 生成RSA密钥对(-t指定算法,-b指定密钥长度,-f指定输出路径,-N空密码避免交互)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/jenkins_ssh_key -N ""

# 2. 查看生成的密钥对(确认生成成功)
ls ~/.ssh/

生成后文件说明:

  • ~/.ssh/jenkins_ssh_key:私钥(核心,需传给容器,严格保密,权限设为 600);

  • ~/.ssh/jenkins_ssh_key.pub:公钥(可公开,比如添加到 Gitee、GitLab 的 SSH 密钥配置中)。

关键:设置私钥权限(避免 SSH 报错 “权限太开放”)

chmod 600 ~/.ssh/jenkins_ssh_key  # 仅当前用户可读写,SSH强制要求
chmod 644 ~/.ssh/jenkins_ssh_key.pub  # 公钥可只读

第二步:将私钥传给容器(用 docker cp,简单直接)

假设你的容器名称是 jenkins(之前创建的 Jenkins 容器),在宿主机执行以下命令,把私钥拷贝到容器内指定目录:

# 1. 拷贝宿主机私钥到容器内(比如容器内目录:/root/.ssh/,与宿主机路径对应)
docker cp ~/.ssh/jenkins_ssh_key jenkins:/root/.ssh/

# 2. (可选)拷贝公钥到容器内(如果容器内需要用公钥做其他配置)
docker cp ~/.ssh/jenkins_ssh_key.pub jenkins:/root/.ssh/

# 3. 关键:设置容器内私钥权限(必须!否则SSH会拒绝使用)
docker exec jenkins chmod 600 /root/.ssh/jenkins_ssh_key
docker exec jenkins chmod 644 /root/.ssh/jenkins_ssh_key.pub

说明:

  • 容器内路径选 /root/.ssh/:因为 Jenkins 容器内默认用 root 用户运行,SSH 会优先读取该目录下的密钥;

  • 若容器内用户不是 root,需把路径改为对应用户的家目录(比如 /home/xxx/.ssh/),并切换用户设置权限。

第三步:将生成的公钥添加到Gitee

点击Gitee设置,找到SSH公钥,进入后添加公钥标题和公钥。

第四步:容器内使用私钥(验证是否可用)

进入容器,测试私钥是否能正常使用(比如连接 Gitee 验证):

# 1. 进入Jenkins容器
docker exec -it jenkins /bin/bash

# 2. 测试SSH连接(以Gitee为例,验证密钥是否生效)
ssh -i /root/.ssh/jenkins_ssh_key -T git@gitee.com

预期成功输出:

Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.

步骤4:添加Jenkins 凭据

点击Credentials下的添加,类型选择SSH Username with private key ,ID和Username可任取,方便识别即可。添加后保存。

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

勾选Gitee webhook 触发构建 ,记住URL的值,后面需要复制到Gitee上。

点击生成 Gitee WebHook 密码也要记录,后面需要复制到Gitee上。

步骤6:在 Gitee上配置 Webhook

进入仓库,点击管理,找到Webhooks并添加URL和密码

步骤7:测试连接

可点击测试,查看请求结果是否正确,请求成功后即表示每次仓库代码更新,Jenkins就会自动下载最新的仓库代码

评论