代码构建发布系统-jenkins实战
实验环境准备:
- 准备3台机器(centos7及以上)
- 硬件:
Jenkins >=1G(联网)(目的是为了下载插件)
Gitlab >=1G(联网)(目的是为了下载插件)
Tomcat >=1G
- 主机配置信息
172.16.20.10 node1.xkops.com node1 #role: jenkins
172.16.20.20 node2.xkops.com node2 #role: gitlab
172.16.20.30 node3.xkops.com node3 #role: tomcat
- 关闭firewalld和selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's;Enforcing;diabled;g' /etc/selinux/config
一、 传统代码构建发布流程
- 研发获取软件包(test.war)
- 部署jdk/tomcat
[root@node3 ~]# rpm -ivh jdk-8u65-linux-x64.rpm
[root@node3 ~]# tar xf apache-tomcat-8.0.45.tar.gz -C /usr/local/
[root@node3 ~]# cd /usr/local/apache-tomcat-8.0.45/
[root@node3 apache-tomcat-8.0.45]# rm -rf webapps/*
- 部署war包,启动服务
[root@node3 apache-tomcat-8.0.45]# cp /root/test.war webapps/
[root@node3 apache-tomcat-8.0.45]# bin/startup.sh
- 浏览器访问
二、 互联网代码构建发布流程
•通过docker部署代码托管系统(gitlab)
- 在node2上安装docker相关软件
[root@node2 ~]# yum -y install docker
- 启动docker服务
[root@node2 ~]# systemctl start docker
- docker基本操作
•查看镜像信息
[root@node2 ~]# docker images
•下载镜像
[root@node2 ~]# docker pull centos
- 导入镜像
•导入镜像
[root@node2 ~]# docker load < gitlab-ce.tar
•更改镜像标签
[root@node2 ~]# docker images
[root@node2 ~]# docker tag ab61 gitlab
- 修改ssh服务端口(22 –> 10086)
- 启动gitlab容器
docker run --detach
--hostname node2.xkops.com
--publish 443:443 --publish 80:80 --publish 22:22
--name gitlab
--restart always
--volume /srv/gitlab/config:/etc/gitlab
--volume /srv/gitlab/logs:/var/log/gitlab
--volume /srv/gitlab/data:/var/opt/gitlab
gitlab
•gitlab/git操作
- 浏览器访问gitlab,修改root密码
用户名:root 密码设置:admin888
- 创建用户(tivens)
- 创建组(test)
- 创建组项目
- 在node1上克隆test项目,并上传程序代码。
[root@node1 ~]# yum -y install git.x86_64 ##自己添加
[root@node1 ~]# git config --global user.name "运维人员01"
[root@node1 ~]# git config --global user.email "tivens@xkops.com"
[root@node1 ~]# git clone git@172.16.20.20:test/test.git
克隆前,需要将密钥设置好
设置密钥: cat ~/.ssh/id_rsa.pub
将内容复制到
[root@node1 ~]# cd test/
[root@node1 test]# cp /tmp/test/* -r .
[root@node1 test]# git add .
参考图
[root@node1 test]# git commit -m 'add program files'
将创建的文件保存到本地仓库
[root@node1 test]# git push -u origin master
将文件上传至gitlab上
- 浏览器访问172.16.20.20,查看项目代码。
•如何手动构建代码
- 在node1上克隆代码
[root@node1 ~]# cd /opt
[root@node1 opt]# git clone git@172.16.20.20:test/test.git
- 安装jdk
[root@node1 ~]# rpm -ivh jdk-8u65-linux-x64.rpm
- 安装maven工具(这个工具的作用?)
[root@node1 ~]# tar -xf apache-maven-3.5.0-bin.tar.gz -C /usr/local/
创建mvn.sh 文件,目的设置环境变量文件
[root@node1 ~]# cat /etc/profile.d/mvn.sh
export PATH=/usr/local/apache-maven-3.5.0/bin:$PATH
echo "export PATH=/usr/local/apache-maven-3.5.0/bin:$PATH" > /etc/profile.d/mvn.sh
[root@node1 ~]# source /etc/profile.d/mvn.sh
- 使用maven构建代码
[root@node1 ~]# cd /opt/test/
[root@node1 test]# mvn clean package //目的作用看下文 卡了!
执行顺序:
1、使用清理插件:maven-clean-plugin:2.5执行清理删除已有target目录(版本2.5);
2、使用资源插件:maven-resources-plugin:2.6执行资源文件的处理(版本2.6);
3、使用编译插件:maven-compiler-plugin:3.1编译所有源文件生成class文件至targetclasses目录下(版本3.1);
4、使用资源插件:maven-resources-plugin:2.6执行测试资源文件的处理(版本2.6);
5、使用编译插件:maven-compiler-plugin:3.1编译测试目录下的所有源代码(版本3.1);
6、使用插件:maven-surefire-plugin:2.12运行测试用例(版本2.12);
7、使用插件:maven-jar-plugin:2.4对编译后生成的文件进行打包,包名称默认为:artifactId-version,比如本例生成的jar文件:rtp-front-1.0-SNAPSHOT,包文件保存在target目录下(这个生成的包不能在命令行中直接执行,因为我们还没有入口类配置到Manifest资源配置文件中去,后续会阐述)。
备注:
不管是compile、package还是install等前三个步骤都是必不可少的。
- 构建后的代码产物
[root@node1 test]# ls target/test.war
•CI/CD工具部署使用(jenkins)
- 在node1上进行操作,安装tomcat
[root@node1 ~]# tar xf apache-tomcat-8.0.45.tar.gz -C /usr/local/
[root@node1 ~]# cd /usr/local/apache-tomcat-8.0.45/
[root@node1 apache-tomcat-8.0.45]# rm -rf webapps/*
- 安装部署jenkins,启动tomcat服务
[root@node1 apache-tomcat-8.0.45]# cp /root/jenkins.war ./webapps/
[root@node1 apache-tomcat-8.0.45]# bin/startup.sh
- 浏览器访问
http://172.16.20.10:8080/jenkins/
- 安装完成后的界面
cat /root/.jenkins/secrets/initialAdminPassword 查询首次登录密码
进入后,修改admin用户密码
- 安装插件
点击系统管理-> 管理插件 –> 可选插件
问题1:无法安装插件
问题2:把原来的tomcat删除后,重启tomcat,以及重启虚拟机,jenkins一直无法启动;是因为删除后,原来的端口还在使用着,致使无法再次启动,此错误是由于8080端口被占用,
改变端口再次执行,
java -jar jenkins.war --httpPort=$HTTP_PORT, 例如java -jar jenkins.war --httpPort=1080
启动成功;
后打开浏览器,输入http:/localhost:1080,即可看到jenkins的页面
Maven Integration plugin (MVN集成插件)
Publish Over SSH
- Global Tool Configuration
- 系统设置
- 添加git用户密码
- 新建一个maven项目,并配置构建,发布参数。
- 浏览器访问