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构建集群式的项目测试环境
jenkins + ansible + docker 代码集成发布的更多相关文章
- 使用Jenkins与Docker持续集成与发布NetCore项目(实操篇)
使用Jenkins与Docker持续集成与发布NetCore项目(教程一) 原文地址:https://www.cnblogs.com/Jackyye/p/12588182.html 基本环境 该教程的 ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(13. 部署Jenkins/Maven实现代码自动化发布)
1. 简介 Jenkins: 官方网站:https://jenkins.io/ 下载地址:https://jenkins.io/download/ war包下载:http://mirrors.jenk ...
- Jenkins+SVN+tomcat持续集成发布
有代码更新后重新打包到tomcat再发布,是不是很烦? 看了下面的东西你就不会烦了. SVN或者git等代码版本控制工具不说了,如果是本地开发,也可以安装一个svn server端 jenkins下载 ...
- Jenkins+.Net Core+Git集成发布 - SkyMallCore快速开发平台
准备工作:安装 Jenkins+java 直接百度安装,在此忽略 dotnet sdk(iis部署已经安装) 一:windows 部署到IIS 首先搭建IIS,站点应用程序池选择 ‘无托管代码’ 安装 ...
- git+jenkins jar包代码的发布加新建项目
1.本地仓库 java开发 把代码上传上来 ,问一下他要上传到的主机ip , 分支 2.本地 , 设置-->仓库 更新数据,让他同步到南阳gitlab, 若没有这个项目,需要创建相同名字的项目 ...
- asp.netcore+jenkins+docker+svn+centos7.2 持续集成,每天凌晨获取最新代码打包发布
运行环境: centos7.2服务器或则虚拟机 可以是腾讯云也可以是内网服务器,(如果是内网服务器需要用frp做内网穿透,这样才可以通过外网访问该服务器) svnserver 来托管代码 一.安装je ...
- jenkins+maven+docker集成java发布(一)自动发布
JAVA项目持续集成发布 标签(空格分隔): java jenkins 微服务中持续集成自动发布是很重要的一个环节,将不同的模块应用自动部署到一台或者N台服务器中如果采用人工部署的方式不太现实 git ...
- 使用Docker搭建Jenkins+Docker持续集成环境(自动化构建发布部署)
本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...
- jenkins+maven+docker集成java发布(二)#远程发布
jenkins+maven+docker集成java发布(一)中写了在Jenkins服务器自动部署业务,那需要将java项目部署到其他服务器怎么操作 这里需要依赖插件Publish Over SSH ...
随机推荐
- .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇) .
该文主要介绍如何借助iTextSharp在C# 2.0中制作PDF文件,本文的架构大致按照iTextSharp的操作文档进行翻译,如果需要查看原文,请点击一下链接:http://itextsharp. ...
- Python实例---利用正则实现计算器[FTL版]
import re # 格式化 def format_str(str): str = str.replace('--', '+') str = str.replace('-+', '-') str = ...
- 乘风破浪:LeetCode真题_002_Add Two Numbers
乘风破浪:LeetCode真题_002_Add Two Numbers 一.前言 这次的题目是关于链表方面的题目,把两个链表对应节点相加,还要保证进位,每个节点都必须是十进制的0~9.因此主要 ...
- swift 数组部分排序
数组自带排序函数,如果想实现部分排序,先对数组进行部分截取,然后对截取部分替换位排序好的子序列 var nums = [,,,,,,] var sub = nums[...] nums.replace ...
- 类库文件引用web服务报错解决方法-在 ServiceModel 客户端配置部分中,找不到引用协定的默认终结点元素
由于需求,需要改造原有应用,因原有应用是写在console下面的,现在需要开放至web下, 想到BIZ层应用代码都是一样的,又不想在web下在添加引用,而重复写代码,故将原有的console下的服务和 ...
- Codeforces Round #440 (Div. 2)【A、B、C、E】
Codeforces Round #440 (Div. 2) codeforces 870 A. Search for Pretty Integers(水题) 题意:给两个数组,求一个最小的数包含两个 ...
- BZOJ3224:普通平衡树(Splay)
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相 ...
- gluoncv faster_rcnn 参数修改
https://github.com/dmlc/gluon-cv/blob/master/gluoncv/model_zoo/faster_rcnn/faster_rcnn.py 对你选用的模块,修改 ...
- jmeter接口测试3-正则表达式提取器的使用
正则表达式的用处很多,最基础的用法 1,断言 2,传参(关联) 例子 1.http请求 2正则表达式提取,想要提取列表列中id,一遍打开列表页 如果是1,每次就会取相同的值!匹配数字的权限高于模板$0 ...
- IntelliJ IDEA SVN无法正常使用问题
SVN checkout时候会出现错误:Cannot run program "svn" (in directory "E:\Projects"): Creat ...