同福

使用Dockerfile基于centos7镜像搭建jenkins环境【20210726】

介绍

介绍

jenkins在持续集成工作当中起到的作用,简单一句话就是:手动转自动。一般情况下,如果没有jenkins工具,我们要发版上线功能的流程是:从版本库检出最新代码 》部署到灰度机器 》进行自动化测试 》将灰度机器连接Nginx。这里面的每一个环节都需要人员去一步一步操作,即便有脚本辅助,还是会有风险,而且时间成本高。

使用jenkins工具把这一系列的事情都自动完成,并记录构建记录,就可以大大降低发版风险,提高发版效率。

镜像

tag

直接从hub上搜索jenkins找到的official版本的是3年前的,然后福哥通过它安装之后发现插件完全不能用。经过一番折腾,发现官网推荐的镜像是jenkins/jenkins,但是jenkins/jenkins却没有official标签,这让官方强迫症的福哥好一番为难。既然这个是官方提供的链接,应该没有问题的,就是它了!

jenkins/jenkins不是按照版本号分版本的,福哥就选择了centos7这个版本,刚好我们的TFLinux也是cento7。

home/topic/2021/0725/10/86f9f61ec95128e0875f596e37f820ab.png

jenkins的官方地址是jenkins.io,可以通过jenkins-ci.org进入,主页是这样的~~

https://www.jenkins.io/zh/

home/topic/2021/0725/11/415216fc0479677437350cd675adf672.png

结构

照例我们先把镜像拉取下来,然后启动一个容器,看看里面都有什么,弄明白了自己才好捣鼓啊!

拉取镜像

docker pull jenkins/jenkins:centos7

启动临时容器

docker run -tid --name jenkins -h jenkins -p 8680:8080 jenkins/jenkins:centos7

切入临时容器

docker exec -ti jenkins /bin/bash

查看结构

进入容器后,全局查找一番。

bash-4.2$ find / -iname "*jenkins*"
find: '/run/cryptsetup': Permission denied
/usr/share/jenkins
/usr/share/jenkins/jenkins.war
/usr/bin/jenkins-plugin-cli
/usr/local/bin/jenkins.sh
/usr/local/bin/jenkins-support
/tmp/hsperfdata_jenkins
find: '/root': Permission denied
/opt/jenkins-plugin-manager.jar
/var/spool/mail/jenkins
find: '/var/lib/yum/history/2020-11-13/2': Permission denied
find: '/var/lib/yum/history/2020-11-13/1': Permission denied
find: '/var/lib/yum/history/2020-11-13/4': Permission denied
find: '/var/lib/yum/history/2020-11-13/3': Permission denied
find: '/var/lib/machines': Permission denied
find: '/var/cache/ldconfig': Permission denied
/var/jenkins_home
/var/jenkins_home/secrets/org.jenkinsci.main.modules.instance_identity.InstanceIdentity.KEY
/var/jenkins_home/secrets/jenkins.model.Jenkins.crumbSalt
/var/jenkins_home/war/WEB-INF/update-center-rootCAs/jenkins-update-center-root-ca-2
/var/jenkins_home/war/WEB-INF/update-center-rootCAs/jenkins-update-center-root-ca
/var/jenkins_home/war/WEB-INF/update-center-rootCAs/jenkins-update-center-root-ca.txt
/var/jenkins_home/war/WEB-INF/update-center-rootCAs/jenkins-update-center-root-ca-2.txt
/var/jenkins_home/war/WEB-INF/lib/commons-jexl-1.1-jenkins-20111212.jar
/var/jenkins_home/war/WEB-INF/lib/commons-jelly-1.1-jenkins-20120928.jar
/var/jenkins_home/war/WEB-INF/lib/jenkins-core-2.303.jar
/var/jenkins_home/war/WEB-INF/lib/json-lib-2.4-jenkins-2.jar
/var/jenkins_home/war/WEB-INF/lib/commons-httpclient-3.1-jenkins-2.jar
/var/jenkins_home/war/WEB-INF/lib/jenkins-stapler-support-1.1.jar
/var/jenkins_home/war/META-INF/JENKINS.SF
/var/jenkins_home/war/META-INF/maven/org.jenkins-ci.main
/var/jenkins_home/war/META-INF/maven/org.jenkins-ci.main/jenkins-war
/var/jenkins_home/war/META-INF/JENKINS.RSA
/var/jenkins_home/war/images/jenkins.png
/var/jenkins_home/war/images/jenkins.svg
/var/jenkins_home/war/images/jenkins-header-logo-v2.svg
/var/jenkins_home/war/images/jenkins-redbg.png
/var/jenkins_home/.java/fonts/1.8.0_292/fcinfo-1-jenkins-RedHat-7.9.2009-en.properties
/var/jenkins_home/jenkins.telemetry.Correlator.xml
find: '/proc/tty/driver': Permission denied

浏览器测试

打开浏览器,访问默认网页http://192.168.2.68:8680/。

home/topic/2021/0725/11/c31b3de92dff6278e2e501978b1afb33.png

停止临时容器

docker stop jenkins

删除临时容器

docker rm jenkins

Dockerfile

福哥发现jenkins基本不需要自己改什么东西,所以编写Dockerfile就简单多了!

Dockerfile

一个非常标准的Dockerfile配置文件,只有一个EXPOSE将8080端口暴露出来而已。

FROM jenkins/jenkins:centos7

MAINTAINER Andy Bogate
MAINTAINER tongfu@tongfu.net
MAINTAINER https://tongfu.net/dockerfile
MAINTAINER 2021/7/25
MAINTAINER v1.0.0

EXPOSE 8080

总结

今天福哥教给了童鞋们使用Dockerfile去搭建jenkins环境的方法,使用Dockerfile安装jenkins非常非常的省心~~

jenkins的官网以前是jenkins.org,后来大概是域名被抢注了吧,官网换成了jenkins.io,通过jenkins-ci.org可以进入,童鞋们不要弄错了!