前言
本教程实战演示基于 SVN + Jenkins + Maven + JDK + Docker 搭建 CI/CD 环境,其中 SVN 基于 Debian 镜像手动安装,而 Jenkins、Maven、JDK 则基于 Tomcat 镜像手动安装。如果仅为了快速体验使用 Jenkins 的功能,可以直接 Pull Jenkins 官方的 Docker 镜像,然后创建并启动 Docker 容器来体验 Jenkins 相关功能,此时可忽略下面教程中的大部分操作步骤。
Docker 环境安装与配置
基于 Docker 搭建 SVN 服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # docker pull debian
# docker run -it -p 9126:80 -p 4690:3690 --name svn-httpd \ -v /container/svn-server:/var/lib/svn \ -d debian
# docker exec -it svn-httpd /bin/bash
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# ctrl + p + q
# docker commit -a "clay@gmail.com" -m "commit jenkins-svn-httpd image" svn-httpd clay/jenkins-svn-httpd:1.0
|
基于 Docker 搭建 Tomcat 服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| # docker pull tomcat:8
# docker run -p 8888:8080 --name tomcat8 \ -v /container/tomcat8/logs:/usr/local/tomcat/logs \ -d tomcat:8
# docker exec -it tomcat8 /bin/bash
# apt-get -y update # apt-get -y upgrade # apt-get -y install git vim htop telnet net-tools
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# vim /usr/local/tomcat/conf/tomcat-users.xml <tomcat-users> <role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="123456" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/> </tomcat-users>
# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
# exit
# docker restart tomcat8
# docker commit -a "clay@gmail.com" -m "commit jenkins-server image" tomcat8 clay/jenkins-server:1.0
|
Tomcat 容器内安装与配置 Oracle JDK、Maven
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
# docker exec -it tomcat8 /bin/bash
# wget -P /usr/local --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3a%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk8-downloads-2133151.html; oraclelicense=accept-securebackup-cookie;" "https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk1.8.0_201-linux-x64.tar.gz"
# tar -xvf /usr/local/jdk1.8.0_201-linux-x64.tar.gz
# wget -P /usr/local/ http://mirrors.shu.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
# tar -xvf /usr/local/apache-maven-3.6.0-bin.tar.gz
# rm /usr/local/jdk1.8.0_201-linux-x64.tar.gz # rm /usr/local/apache-maven-3.6.0-bin.tar.gz
# ln -s -f /usr/local/jdk1.8.0_201/bin/java /usr/bin/java # ln -s -f /usr/local/jdk1.8.0_201/bin/javac /usr/bin/javac
# vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_201 JRE_HOME=/usr/local/jdk1.8.0_201/jre CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASSPATH PATH
MAVEN_HOME=/usr/local/apache-maven-3.6.0 PATH=$PATH:$MAVEN_HOME/bin export MAVEN_HOME PATH
# source /etc/profile
# mvn -version # java -version # javac -version
# docker commit -a "clay@gmail.com" -m "commit jenkins-server image" tomcat8 clay/jenkins-server:1.1
|
Tomcat 容器内安装 Jenkins
Jenkins 本质是一个 Java 开发的 Web 项目,官方发布方式有 War 文件、Native 包、安装程序、Docker 镜像,Jenkins 官方下载页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| # docker exec -it tomcat8 /bin/bash
# wget -P /usr/local/tomcat/webapps https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.150.2/jenkins.war
# vim /usr/local/tomcat/conf/server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
# exit
# docker restart tomcat8
http://127.0.0.1:8888/jenkins
http://localhost:8888/jenkins/log/all
|
解锁 Jenkins
![jenkins-install-unlock]()
1 2 3 4 5
| # docker exec -it tomcat8 /bin/bash
# cat /root/.jenkins/secrets/initialAdminPassword
|
安装 Jenkins 插件
解锁后会跳转到 “自定义 Jenkins” 页面,页面中选择哪种方式来安装插件都不会对后续操作有太大影响;因为有需要的插件可以在后续有针对性地安装,本文选择 “安装推荐的插件”。
![jenkins-install-plugin]()
![jenkins-install-plugin2]()
创建 Jenkins 管理员用户
根据页面提示创建管理员用户,表单填写完后点击”Save and Continue” 按钮保存设置,这里的管理员用户区别于 Jenkins 自动创建的 admin 用户。
![jenkins-install-create-admin]()
配置 Jenkins 实例
一般使用默认的 Jenkins URL 即可。
![jenkins-install-instance-config]()
登录 Jenkins 管理后台
浏览器输入 Jenkins 管理后台的登录地址,填写上面创建的管理员或者 admin 账号和密码即可登录。如果登录后的页面只显示空白页面,可以尝试重启 Tomcat 服务器再访问 URL:http://127.0.0.1:8888/jenkins/login
![jenkins-install-login]()
Jenkins 支持中文界面
Manage Jenkins –> Manage Plugins –> Available –> 搜索关键字”Local” –> 选中 Local 插件进行安装,建议安装完之后手动重启 Tomcat 服务器。
![jenkins-local-language]()
![jenkins-local-language2]()
Jenkins 开启用户注册功能
Manage Jenkins –> Configure Global Security –> 勾选”Allow users to sign up” –> 点击”Save” 按钮保存设置。如果是处于学习或者测试阶段,还可以勾选 “Anyone can do anything”,这样更方便测试 Jenkins 的功能。出于安全考虑,生产环境下记得取消勾选此项。
![jenkins-allow-register]()
![jenkins-allow-register2]()
Jenkins 全局工具配置
Manage Jenkins –> Global Tool Configuration –> 指定 Maven 的配置文件路径、JDK 的安装路径、Maven 的安装路径 –> 点击”Save” 按钮保存设置。不要选择自动安装,因为上面已经手动安装并配置好 Maven、Oracle JDK。
![jenkins-global-config]()
![jenkins-global-config2]()
![jenkins-global-config3]()
安装 deploy to container 插件
![jenkins-install-deploy-plugin]()
到此为止,基于 SVN + Jenkins + Maven + JDK + Docker 的 CI/CD 环境已经搭建完成。
下篇:Jenkins 入门教程之三 Jenkins 与 SVN 持续集成实战