本文最后更新于 2024-01-26,文章内容可能已经过时。

背景:
 
    最近项目上需要使用外部的私有仓库,jenkins-slave 无法访问这个repo.test.com 仓库,从而无法打包,网络环境需要走代理的网络才行
 

一、部署tinyproxy代理

找一台能访问repo.test.com 的机器,安装部署上tinyproxy
# centos
yum install tinyproxy

 

或者

 

# ubuntu
sudo apt install tinyproxy

 

 #修改配置文件
vim /etc/tinyproxy/tinyproxy.conf
搜索并修改以下配置

 

# 注释掉这一行
# Allow 127.0.0.1
# 修改端口号
Port 9888

 

 
#修改完了保存退出,重启服务:
systemctl restart tinyproxy
 
 
#日志文件的路径:
/var/log/tinyproxy/tinyproxy.log
查看日志 :tail -f /var/log/tinyproxy/tinyproxy.log
 
 
客户端代理设置:

 

export http_proxy=http://X.X.X.X:9888
 
取消代理:
unset http_proxy
 

二、测试代理是否可用

登录到jenkins-slave 那台机器上,手动设置代理
export http_proxy=http://X.X.X.X:9888
测试能否ping 通仓库地址
ping  repo.test.com
#发现可以ping通
 

三、修改maven 配置文件settings.xml

#我这边是yum直接安装的manven, 配置文件的路径在/etc/maven 下
添加代理配置如下:

<settings> 
   ...
   <proxies>
      <proxy>
         <id>my-proxy</id>
         <active>true</active>
         <protocol>http</protocol>
         <host>XX.XX.10.117</host>
         <port>9888</port>
          <nonProxyHosts>*.aliyun.com|*.maven.org</nonProxyHosts>
         <!--
         <username>shihuan</username>
         <password>123456</password>    
         -->
      </proxy>
    </proxies>
   ...
</settings>
proxies下可以有多个proxy元素,如果你声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明 了一个id为my-proxy的代理
active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http;

当然,最重要的 是指定正确的主机名(host元素)和端口(port元素);

nonProxyHost元素用来指定哪些主机名不需要代理,可以 使用 | 符号来分隔多个主机名。此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不要通过代理。

 

上述XML配置中我注释掉了username、password、 几个元素,当你的代理服务需要认证时,就需要配置username和password。
 

四、打包测试

 
 
友情提醒: 为了代理的安全,建议开启白名单的机制【允许指定的IP 可以访问代理地址】 同时开启代理服务的认证,输入用户名,密码加强验证