jenkins + ansible + docker 代码集成发布
一、环境搭建
1. 安装java
配java_home, /etc/profile
2.安装jenkins
下载war包,用 java -jar jenkins.war或者 把war包放tomcat的webapps下
http://ip:8080或者 http://ip:8080/jenkins
3.安装ansible
使用python安装
先安依赖yum -y install gcc gcc-c++ openssl-devel openssl
下载python包
tar xf python-3.5.2.tgz -c /usr/src/
cd /usr/src/python-3.5.2/
./configure --prefix=/usr/local/python/
make && make install
ln -s /usr/local/python/bin/python3 /usr/bin/python3
/usr/local/python/bin/pip3 install ansible
ln -s /usr/local/python/bin/ansible /usr/local/bin/
4.设置主机无密登录及hosts文件设置
mkdir -p /etc/ansible
vim /etc/ansible/hosts
cat /etc/ansible/hosts #ansible主机管理配置文件
[nginx] #被管理的主机组名称,比如nginx
weba ansible_ssh_host=192.168.200.132 ansible_ssh_port=22 ansible_ssh_user=root #第一台主机
webb ansible_ssh_host=192.168.200.138 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=666666 #第二台主机
如果我们已经设置了ssh免密钥了。那么就不需要写密码了。例如:weba
我们要是没有设置免密钥,那么就需要安装sshpass工具,并在/etc/ansible/hosts文件里写上主机的连接密码。例如webb
wget -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install sshpass
二、配置私有docker容器仓库
docker run -d -p 5000:5000 --name registry --restart=always --privileged=true -v /docker/registry:/var/lib/registry registry
vim /etc/docker/daemon.json,添加(在每一个客户机上同样要进行这一步骤)
{"insecure-registries":["192.168.1.30:5000"]},其中ip地址为设置为私有仓库服务器的ip地址
#重启服务
systemctl restart docker
三、配置jenkins
1.安装插件 ansible
2.创建项目
3.在构建中,添加ansible command
因为是测试,而且代码拉取打包涉及到开发使用ant打包工具,其中会使用build.xml文件,我不方便取得,所以我们采取了简化方式,加入我们已经取得了war包,我们简化拉取,打包为war包的步骤,为了构建docker镜像,我们采用ansible 把需要打包到tomcat中的war包和要生成镜像的dockerfile文件发给需要部署的服务器。
其中dockerfile 文件为docker.tomcat,
from tomcat:8
expose 8080
add ~/docker/smartmarket115c1.war /usr/local/tomcat/webapps/
cmd ['catalina.sh','run']
同时在jenkins 的系统管理 - 管理插件 - 更新 publish over ssh
在上图中配置好你要操作的远程服务器
回到项目构建,在构建步骤添加
在exec command 中填写你在远程服务器需要执行的脚本内容,
docker build -t tomcat_test -f ~/docker/docker.tomcat
其中 tomcat_test 为要构建的镜像名字, docker.tomcat 为dockerfile 文件的路径及名字
同时构建完成后我们在远程服务器启动容器,开放8080端口,
docker run -d -p 8080:8080 --name tomcat_test tomcat_test
我们在浏览器就可以访问 ip:8080/项目名,来访问我们已经在远程服务器上部署好的项目了。
以上 只是我的一些初步测试,后续我会结合k8s构建集群式的项目测试环境
推荐阅读
-
详解Springboot整合Dubbo之代码集成和发布
-
Jenkins+Docker持续集成的实现
-
基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境的详细教程
-
ASP.NET Core+Docker+Jenkins实现持续集成的完整实例
-
Centos7+Docker+Jenkins+ASP.NET Core 2.0自动化发布与部署的实现
-
jenkins + ansible + docker 代码集成发布
-
asp.netcore+jenkins+docker+svn+centos7.2 持续集成,每天凌晨获取最新代码打包发布
-
Android+Jenkins——从持续集成到测试发布
-
jenkins中集成sonar,使用findbug、pmd、checkstyle提升代码质量
-
devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线