Jenkins配置Mercurial SSH仓库及通知功能遇克隆错误求助
问题定位与解决步骤
1. 先修复仓库地址错误
从你提供的错误日志能看到,Jenkins执行的命令把完整的克隆命令填成了仓库地址,Mercurial插件只需要纯仓库SSH URL,不需要带hg clone和本地路径:
hg --config ******** clone --rev default --noupdate "hg clone ssh://mercurial@XXXXX.XXXXX.com/repositories/XXXXX /home/XXXXX/mi-repo" /var/lib/jenkins/workspace/TestRepo
操作:
- 打开TestRepo项目的配置页面
- 找到Mercurial仓库配置项,将仓库URL修改为纯SSH地址:
ssh://mercurial@XXXXX.XXXXX.com/repositories/XXXXX - 保存配置后尝试构建,先排除地址错误问题
2. 配置Jenkins的SSH密钥(解决权限/验证问题)
你本地终端能正常克隆,但Jenkins默认以jenkins用户运行,不会使用你个人用户的.ssh密钥,需要把密钥配置到Jenkins用户环境中:
步骤1:复制密钥到Jenkins用户的.ssh目录
- 切换到jenkins用户:
sudo su - jenkins - 创建并配置
.ssh目录权限:mkdir -p ~/.ssh && chmod 700 ~/.ssh - 复制你的私钥文件到该目录,设置正确权限:
cp /path/to/your/id_rsa ~/.ssh/ chmod 600 ~/.ssh/id_rsa - 添加远程仓库主机指纹到
known_hosts,避免首次连接的确认提示:ssh-keyscan XXXXX.XXXXX.com >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts - 退出jenkins用户:
exit
步骤2:全局配置Mercurial的SSH参数
- 进入Jenkins全局配置(Manage Jenkins -> Global Tool Configuration)
- 找到Mercurial配置区域,在「Additional configuration parameters」中添加:
该配置会让Mercurial使用jenkins用户下的私钥完成SSH连接。ui.ssh=ssh -i /var/lib/jenkins/.ssh/id_rsa
3. 配置邮件与Slack通知
邮件通知配置
- 进入Manage Jenkins -> System Configuration
- 找到「Extended E-mail Notification」:
- 配置SMTP服务器、端口、邮箱账号密码等认证信息
- 设置默认收件人、邮件主题及内容模板
- 在项目配置中添加「Editable Email Notification」构建后操作,触发条件选择「Success」,指定通知收件人
Slack通知配置
- 进入Manage Jenkins -> System Configuration
- 找到「Slack」配置区域:
- 填入Slack团队域名、API令牌(从Slack工作区创建机器人获取)
- 设置默认通知频道
- 在项目配置中添加「Slack Notification」构建后操作,勾选「Send Notification when build is successful」
内容的提问来源于stack exchange,提问作者Luis M. Corral
相关产品推荐
相关产品推荐

