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

如何在Jenkins中通过VPN拉取/克隆需VPN访问的GitLab代码仓库?

Jenkins通过VPN Access Manager连接GitLab配置指南

前置准备

  • 确认Jenkins构建任务运行的节点(主节点/对应从节点)已安装「VPN Access Manager」客户端,手动测试拨号后可以正常ping通GitLab的内网IP/域名、访问GitLab服务
  • 确认VPN账号、证书等凭证有效,无频繁过期、多设备登录限制
  • 准备好GitLab代码拉取凭证(SSH密钥/访问令牌/账号密码),VPN连通状态下可在节点本地正常克隆、拉取目标仓库

方案1:节点常驻VPN连接(最稳定,优先推荐)

  • 切换到Jenkins进程的运行用户操作,禁止使用root或个人用户配置VPN,否则配置不会对Jenkins生效
  • 打开VPN Access Manager客户端,配置对应VPN连接的开机自启、断线自动重连规则,将拨号凭证保存到系统凭证管理器,避免手动输入验证信息
  • 拨号成功后在Jenkins用户下执行连通性校验:
    访问web接口验证连通性:curl -v <你的GitLab服务地址>
    SSH协议拉取需额外验证:ssh -T git@<你的GitLab域名>,确认认证通过
  • 进入Jenkins后台正常配置GitLab仓库地址和拉取凭证即可,无需额外修改其他配置

方案2:构建任务临时拨号(适合VPN不允许长时间连接的场景)

  • 先确认VPN Access Manager支持命令行调用,在节点本地测试拨号、断开指令可正常执行,常用指令参考(不同版本客户端参数存在差异,以本地实际支持的指令为准):
    拨号指令:vpn-access-manager connect --profile <VPN配置文件名> --username <VPN账号> --password <VPN密码>
    断开指令:vpn-access-manager disconnect --profile <VPN配置文件名>
  • 将VPN账号密码添加到Jenkins凭证管理,类型选择「用户名 with 密码」,设置专属凭证ID,禁止明文写在构建脚本中
  • 修改Jenkins构建任务配置:
    1. 新增首个执行shell步骤,调用命令行拨号,拨号完成后添加10-30秒等待确保VPN路由生效,示例脚本:
      # 读取Jenkins存储的VPN凭证
      VPN_USER=${CREDENTIALS_USR}
      VPN_PWD=${CREDENTIALS_PSW}
      # 执行VPN拨号
      vpn-access-manager connect --profile GitLabVPN --username ${VPN_USER} --password ${VPN_PWD}
      # 等待VPN连接生效
      sleep 20
      # 校验GitLab连通性,失败直接终止构建
      curl --connect-timeout 10 <你的GitLab服务地址> || exit 1
      
    2. 配置正常的Git代码拉取步骤
    3. 新增构建后置执行步骤,无论构建结果是否成功都执行VPN断开指令,避免占用连接资源
  • Pipeline任务可将拨号、拉取代码、断开逻辑封装到对应stage中,通过withCredentials语法读取凭证即可

常见问题排查

  • 拨号成功但Jenkins拉取代码失败:优先检查Jenkins运行用户和拨号操作用户是否一致,其次确认GitLab地址为内网地址、拉取凭证配置正确,最后检查节点路由表,确认GitLab IP段走VPN网卡路由
  • 命令行拨号失败:检查指令参数是否正确、VPN账号是否有权限、是否触发多设备登录限制
  • SSH协议拉取失败:确认Jenkins用户~/.ssh目录下的私钥配置正确、GitLab已添加对应公钥,且known_hosts文件中已录入GitLab的公钥指纹,避免首次连接需手动确认的问题

内容的提问来源于stack exchange,提问作者ktgirish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:00:01