JENKINS服务部署与插件反向代理加速下载方案

不建议说明:

本方法已失效;本篇博文中的内容,仅供兴趣研究使用。

前言:

关键字:Jenkins、Nginx、自动化运维、镜像加速;

Jenkins是一款目前比较热门的由Java编写的开源的持续集成工具,基于其开源的性质以及强大的插件库,国内IT公司在部署DveOps系统时,经常会选用Jenkins作为系统的CI[持续集成]部分。对Jenkins服务,在服务部署上实际并没有什么可以说,基本就是JAVA环境的搭建,再加上使用"java"命令运行一个基于JAVA的"war"应用包,Jenkins服务就已经搭建成功了。另外,基于JAVA的特性,使用这种方式部署的服务,基于上不会产生错误的可能,无论你的服务器上的CPU的指令是基于ARM还是X86架构。

总体上来说,Jenkins是非常友好的,但很多时候,这种友好只能适用于非国内Jenkins的用户身上。国内用户使用Jenkins服务的痛点,永远在于插件的安装与更新上,尽管有清华开源镜像源这样强大的公众服务器,但基于Jenkins对插件下载与安装的安全保证措施,很多时候,即使我们在Jenkins上设定了插件安装/更新的服务器地址为清华的镜像源,也依然无法从清华的镜像源中下载插件[实际上还是从国外网站下载插件]。关于产生上述情形的原因,网上已有很多解释的文章了,本处也就不重复论述了。

于是,博主在寻求一种稳定的更新插件的方法,这是本文的重点~是的,博主也从网上搜索了大量的关于插件加速下载的文章,而让人无语的是,网上永远不缺那些错误的博文,一个无实质作用的插件加速方法,竟然在无数次转发后占满的搜索引擎的索引页面。博主不得感叹,不知道在什么时候时起,复制粘贴别人的文章进行发布成为了技术提升的手段,而非实际的操作与测试。还好,这个世界上还是存在真正的高手的,博主在通过不同的关键字,从搜索引擎中搜索了数天,终于找到了一个插件加速在国内可用的真正方案,也再次感叹,在这一个浮燥的网络时代中,网络上,真正的高手总被那些夸夸其谈的所谓技术人员所湮没……

另注:本文所提供的下载文件 --> jenkins_nginx.tar.gz

一、硬件与软件环境

本教程在以下环境下搭建测试通过!

  • 主硬件 :精英 LIVA X  [X86架构,你可以用任何PC代替]

  • 主机环境 :Docker [19.03.12]

  • 操作系统 :Debian 10

  • Jenkins版本 :2.235.3

  • 测试日期:2020年07月30日

二、Jenkins部署

关于Jenkins服务的部署,对于传统的安装方法,请参阅官方文档,本处简单说明一下传统的安装方法:1、在服务品上部署好JAVA环境;2、下载名为"jenkins.war"的JAVA应用包;3、执行"java -jar jenkins.war"命令即可部署到一个完整的Jenkins服务;

传统的Jenkins服务的部署方式不是博主的使用方法,因为博主只是在做这些服务的前期测试,而并非用于生产环境[博主也不可能有这么多服务器],所以博主更倾向于使用DOCKER。不过,实际上也有另外一个原因,那就是插件下载的加速方案需要用到Nginx去作反向代理。对于这种多服务的组合应用,很多时候需要多次测试配置才可以产生一个稳定的可使用状态,在调整配置那些配置文件时,经常需要重启以及文件创建,博客可不想把自己的系统搞得乱七八糟,即使博主已经做了系统备份。当然,你也可以不使用DOCKER环境去部署这些服务而直接部署在本地主机上,这完全是没问题的,这种方式下想实现快速部署,那么你可能需要使用到Ansible,这是题外话了……

以下为DOCKER环境下,选用Jenkins官方镜像部署Jenkins服务的方法;关于DOCKER的安装我写过了,DOCKER使用国内镜像源加速下载的方法也写过了[应该写过吧],本处也就不再次重复了;

以上介绍了在Docker环境下,Jenkins服务的部署方法,当然,这些东西毫无意义~我们真正在意的是插件下载的的稳定加速方法~

三、利用NGINX实现插件加速下载[镜像篇]

插件加速下载最简单的方法是使用国际代理,仅需要在Jenkins服务的配置页面设定一下代理服务器的地址与端口即可。但显然,并不是所有人都能拥有或搭建一个速度尚可的国际代理服务器,使用国内Jenkins插件镜像源实现插件的下载与更新,对大部分人来说,可能是更实在的选择。本示例将介绍如何建立自己的镜像文件,并使用Jenkins的清华镜像源,实现Jenkins插件在国内的加速下载。

本处介绍一下原理,首先,在Jenkins服务的WEB配置页面中指定插件的下载/更新地址为清华的镜像源["https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json"],再利用NGINX服务的反向代理功能,在插件真正下载时,修改了插件的实际下载地址[下载地址指向清华的镜像源],实现插件下载加速,用黑客一点的话来说,就是域名劫持~也许你有疑问,为什么要使用NGINX?为什么网上大部分关于JENKINS插件下载的加速方案均有修改下载/更新地址为清华镜像源,而这一种方式就无法实现插件下载的加速?关于这些问题,见本博文最后的参考文章链接。

要利用NGINX实现插件加速下载,首先要存在NGINX服务,Jenkins官方提供的"jenkins/jenkins:2.235.3-lts-alpine"镜像默认只部署了Jenkins服务,所以在考虑我们的真正需求后,我们就必需对"jenkins/jenkins:2.235.3-lts-alpine"进行一些修改操作,修改的内容大概为:为镜像安装NGINX服务、设定NGINX配置文件、修改镜像启动脚本[加入NGINX服务的启动]、修改"hosts"文件用于域名劫持[需要配合NGINX服务实现];以上的四个操作,本示例会利用一个DockerFile文件完成镜像的构建,所以第一步,我们需要先写好NGINX的配置文件[这份文件需要复制至镜像内,所以需要先设定好];

1、创建并配置NGINX配置文件[ 参考命令:touch nginx.conf && nano nginx.conf ],以下为"nginx.conf"文件的配置内容:

以上"nginx.conf"文件的配置,基本和默认生成的"/etc/nginx/nginx.conf"文件相同,但还是应所使用的基础镜像文件的实际情况[jenkins/jenkins:2.235.3-lts-alpine],进行了一些配置项的修改,大概为:修改了NGINX服务的运行用户、禁用了NGINX的日志功能、解除的文件上传大小的限制、启用了GZIP压缩功能;当然,当中最重要的修改就是加入了"server"块,见上面代码中的关于"server"块的说明;

2、编写DockerFile文件,[ 参考命令:touch jenkins_nginx.df && nano jenkins_nginx.df ],以下为"jenkins_nginx.df"文件的配置内容:

以上DockerFile文件的编写,到底做了什么,这不在本示例的说明范围内,毕竟这不是篇关Docker的文章,但博主也尽可能的作了一些简单说明。以上DockerFile文件中,比较可能需要产生变化的是"RUN"部分,毕竟这是对镜像内的文件进行了一系列的操作;而更更可能产生变化的是第六行[即向默认的启动脚本中增加NGINX服务的启动项],这是对镜像的默认启动脚本的修改,日后若官方对镜像中脚本进行了修改,那么本处的修改将可能引发不可预期的错误,若日后官方的镜像真的修改了此启动脚本造成了本项修改无效/错误,请依据自己的SHELL知识修改此行的命令;

3、当以上两份文件创建完成后,我们就可以生成自己的镜像文件了,并利用新生成的镜像去部署Jenkins服务的容器了,相关命令如下:

注意:以上代码并没有任何错误,但严重不建议以复制粘贴的方式创建相关文件,建议下载本文所提供的文件然后进行修改;下载链接 --> jenkins_nginx.tar.gz

原因:使用复制粘贴的方式复制配置至文件内,所有空格的前面将可能存在不可见的字符"M-BM-",造成文件不可用,这是字符编码的问题~若必需使用复制粘贴方式,请务必手动替换掉配置项中的所有空格!!!或使用以下命令过滤掉所有"M-BM-"字符~

四、利用NGINX实现插件加速下载[使用篇]

为什么有使用篇,原因是:即使本处已经利用了本文中的方法,安装了NGINX服务并修改了一些相应的文件实现了对"mirrors.jenkins-ci.org"域名进行了劫持[劫持到"https://mirrors.tuna.tsinghua.edu.cn/jenkins/"],但Jenkins的默认"jenkins.war"应用包中默认的插件安装/更新源是"https://updates.jenkins.io/update-center.json",所以当我们初次部署Jenkins服务时,是没办法使用插件加速下载的,所以正确的使用方法如下[包含了一些常用的额外操作]:

1、利用新建的镜像创建并部署Jenkins服务;

2、在浏览器上通过"http://192.168.100.250:8080"访问JENKINS服务[IP地址按自己实际情况填写];注意:JENKINS服务创建初始的服务程序文件可能需要较长时间,请耐心等待;

3、JENKINS服务相关文件创建完成时,需要输入初始化密码以进行JENKINS服务的配置[见下图];

JENKINS服务部署与插件反向代理加速下载方案

4、通过以下命令获取初始化密码并从WEB界面填入,之后进入插件配置界面;

JENKINS服务部署与插件反向代理加速下载方案

5、插件安装选项选择"选择插件来安装"[不要选择"安装推荐的插件",此时并不能加速插件的下载],并点击"无"表示不安装任何插件,确认末选择任何插件的情况下,然后点击"安装"进入下一步;

JENKINS服务部署与插件反向代理加速下载方案

JENKINS服务部署与插件反向代理加速下载方案

6、配置管理员用户的用户名与密码;本示例指定了用户名与密码均为:admin;选择"保存并完成"进入下一步;

JENKINS服务部署与插件反向代理加速下载方案

7、配置JENKINS服务的URL地址,保持默认值即可,点击"保存并完成"进入下一步后,选择"开始使用Jenkins";

8、以管理员登录JENKINS服务并配置插件的更新源为清华的插件源;默认值为"https://updates.jenkins.io/update-center.json",替换为"https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json";

JENKINS服务部署与插件反向代理加速下载方案

9、在进行完上述操作后,已经可以通过域名劫持的方法来进行插件的下载/安装了,而且,镜像是通用的[当然还是区分ARM与X86架构的],当需要在其它服务器上部署JENKINS服务时,只需要利用这个镜像重复上述使用操作即可;

10、附图:为JENKINS默认建议安装的插件列表;

JENKINS服务部署与插件反向代理加速下载方案

五、参考文章

参考文章:《jenkins 插件下载加速最终方案

六、结语

无~END~

JENKINS服务部署与插件反向代理加速下载方案:等您坐沙发呢!

发表评论

表情
还能输入210个字