前言
本教程实战演示基于 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
1 2 3 4 5
| # docker exec -it tomcat8 /bin/bash
# cat /root/.jenkins/secrets/initialAdminPassword
|
安装 Jenkins 插件
解锁后会跳转到 “自定义 Jenkins” 页面,页面中选择哪种方式来安装插件都不会对后续操作有太大影响;因为有需要的插件可以在后续有针对性地安装,本文选择 “安装推荐的插件”。
创建 Jenkins 管理员用户
根据页面提示创建管理员用户,表单填写完后点击”Save and Continue” 按钮保存设置,这里的管理员用户区别于 Jenkins 自动创建的 admin 用户。
配置 Jenkins 实例
一般使用默认的 Jenkins URL 即可。
登录 Jenkins 管理后台
浏览器输入 Jenkins 管理后台的登录地址,填写上面创建的管理员或者 admin 账号和密码即可登录。如果登录后的页面只显示空白页面,可以尝试重启 Tomcat 服务器再访问 URL:http://127.0.0.1:8888/jenkins/login
Jenkins 支持中文界面
Manage Jenkins –> Manage Plugins –> Available –> 搜索关键字”Local” –> 选中 Local 插件进行安装,建议安装完之后手动重启 Tomcat 服务器。
Jenkins 开启用户注册功能
Manage Jenkins –> Configure Global Security –> 勾选”Allow users to sign up” –> 点击”Save” 按钮保存设置。如果是处于学习或者测试阶段,还可以勾选 “Anyone can do anything”,这样更方便测试 Jenkins 的功能。出于安全考虑,生产环境下记得取消勾选此项。
Jenkins 全局工具配置
Manage Jenkins –> Global Tool Configuration –> 指定 Maven 的配置文件路径、JDK 的安装路径、Maven 的安装路径 –> 点击”Save” 按钮保存设置。不要选择自动安装,因为上面已经手动安装并配置好 Maven、Oracle JDK。
安装 deploy to container 插件
到此为止,基于 SVN + Jenkins + Maven + JDK + Docker 的 CI/CD 环境已经搭建完成。
下篇:Jenkins 入门教程之三 Jenkins 与 SVN 持续集成实战