乐趣区

关于docker:dockerjenkins实现自动化部署

背景

早上来到公司,咱们做的第一件事件就是从源码库签出最新的源码,而后进行单元测试,如果发现失败的测试,会找相干的共事一起调试,修复错误代码。接着回到本人的工作上来,编写本人的产品代码。忙到午饭时间,代码编写得差不多了,测试也通过了,开心地享受午餐,而后劳动。谁料 QA 小组又发过来了几个 bug,没方法,先本地重现再说,于是熟练地用 IDE 生成了一个 WAR 包,部署到 Web 容器下,启动容器。看到相熟的界面了,遵循 bug 报告,一步步重现了 bug,快下班的时候,bug 修好了,提交代码,在欢快中完结了一天的工作。认真总结一下,咱们会发现,除了编写源代码,咱们每天有相当一部分工夫花在了编译、打包和部署等繁缛且不起眼的工作上。如果咱们当初还手工这样做,那老本也太高了,于是有人用软件的办法让这一系列工作齐全自动化,使得软件的构建能够像全自动流水线一样,只须要一条简略的命令,所有繁缛的步骤都可能主动实现。

工具介绍


Jenkins 是一个开源软件我的项目,是基于 Java 开发的一种继续集成工具,用于监控继续反复的工作,旨在提供一个凋谢易用的软件平台,通过提供超过 1000 个插件来反对构建、部署、自动化,满足任何我的项目的须要。

Docker 是一个开源的利用容器引擎,让开发者能够打包他们的利用以及依赖包到一个可移植的容器中, 而后公布到任何风行的 Linux 机器或 Windows 机器上, 也能够实现虚拟化, 容器是齐全应用沙箱机制, 相互之间不会有任何接口。

Rancher 是一个开源的企业级容器治理平台。通过 Rancher,企业再也不用本人应用一系列的开源软件去从头搭建容器服务平台。Rancher 提供了在生产环境中应用的治理 Docker 和 Kubernetes 的全栈化容器部署与治理平台。

docker 装置

操作系统:centos7.5
应用官网装置脚本主动装置
装置命令如下:
curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun
也能够应用国内 daocloud 一键装置命令:
curl -sSL https://get.daocloud.io/docker | sh

应用 yum 命令装置
装置命令如下:
yum install -y docker
设置阿里仓库地址:
echo ‘{“registry-mirrors”: [“https://3laho3y3.mirror.aliyuncs.com”]}’ > /etc/docker/daemon.json
启动:systemctl start docker
设置开机自启:systemctl enable docker

rancher 装置

命令:
docker run -d –name rancher-server -p 8080:8080 –restart=unless-stopped -e DEFAULT_CATTLE_CATALOG_URL='{“catalogs”:{“library”:{“url”:”http://git.oschina.net/rancher/rancher-catalog.git”,”branch”:”k8s-cn”}}}’ rancher/server:stable && sudo docker logs -f rancher-server

-d(可选)在后盾运行容器(即“拆散”模式)并输入容器 ID。如果您不指定此选项,则在终端窗口中输入正在运行的此容器的 Docker 日志。
-p 8080:8080 映射(例如“公布”)rancher-server 容器的端口 8080 到主机上的端口 8080。第一个数字代表主机上的端口,而最初一个代表容器的端口。
-e DEFAULT_CATTLE_CATALOG_URL='{“catalogs”:{“library”:{“url”:”http://git.oschina.net/rancher/rancher-catalog.git”,”branch”:”k8s-cn”}}}’ 设置环境变量,默认的 rancher 商店地址国内拜访迟缓

Jenkins 装置

命令:
docker run \
-u root \
-d –name jenkins \
-p 8081:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean && sudo docker logs -f jenkins

-d(可选)在后盾运行容器(即“拆散”模式)并输入容器 ID。如果您不指定此选项,则在终端窗口中输入正在运行的此容器的 Docker 日志。
-p 8081:8080 映射(例如“公布”)jenkinsci/blueocean 容器的端口 8080 到主机上的端口 8081。第一个数字代表主机上的端口,而最初一个代表容器的端口。
-p 50000:50000(可选)将 jenkinsci/blueocean 容器的端口 50000 映射到主机上的端口 50000。
-v jenkins-data:/var/jenkins_home(可选,但强烈建议)映射在容器中的/var/jenkins_home 目录到具备名字 jenkins-data 的 volume。如果这个卷不存在,那么这个 docker run 命令会主动为你创立卷。如果您心愿每次重新启动 Jenkins(通过此 docker run … 命令)时放弃 Jenkins 状态,则此选项是必须的。如果你没有指定这个选项,那么在每次重新启动后,Jenkins 将无效地重置为新的实例。
-v /var/run/docker.sock:/var/run/docker.sock(可选 /var/run/docker.sock 示意 Docker 守护程序通过其监听的基于 Unix 的套接字。该映射容许 jenkinsci/blueocean 容器与 Docker 守护过程通信,如果 jenkinsci/blueocean 容器须要实例化其余 Docker 容器,则该守护过程是必须的。如果运行申明式管道,其语法蕴含 agent 局部用 docker

Jenkins 装置过程






Jenkins 插件装置



1、在系统管理中的插件治理;
2、而后点击选插件,在右上角输出 Git Parameter 和 Publish Over SSH,找到 Git Parameter 和 Publish Over SSH 后点击左下方的的间接装置

Publish Over SSH 配置


Maven 配置文件设置


Jenkins 配置一个自在格调的我的项目


1、登录 jenkins,点击新建工作

2、输出工作名称,而后有两项抉择,一是抉择构建一个自在格调的软件我的项目,确定即可;二是克隆已有我的项目,输出该项目名称,确定即可。
3、创立胜利后会关上该工作的配置页面,如果抉择的是 2 中的第二个选项,则曾经有克隆指标工作的配置项,在此基础上进行批改即可。配置项页面阐明如下:
(1)General:git 项目选择参数化构建过程,填写内容参考下图;svn 我的项目可不填写此项;
(2)源码治理:git 项目选择 git,svn 项目选择 svn,填写我的项目地址以及有权限的用户名和明码。
(3)构建触发器:可不填。
(4)构建环境:可不填。
(5)构建:(此步骤为 maven 打包)点击减少构建步骤,抉择调用顶层 maven 指标,maven 版本抉择 mm(事后设置),指标抉择打包命令即可,个别为 clean package,如果是多环境配置,则须要加上环境参数如 -Pdemo;
(6)构建后操作:(此步骤为上传 war 及执行部署命令)点击增加构建后操作步骤,抉择 Send build artifacts over SSH,抉择我的项目部署指标服务器(要提前配置,目前已配置好),并按如下填写部署属性及部署命令。多节点可屡次增加构建后操作。
命令示例:
停掉 tomcat 的 docker 容器
docker stop tomcat_sdso
备份以后 war 包
mv /home/gcuser/dockercompose/sdso/tomcat/webapps/*.war /home/gcuser/dockercompose/sdso/tomcat/webapps/sdso.war.date +%Y%m%d%H%M%S
将上传过去的 war 包拷贝到指标门路,此处为 tomcat 的 docker 容器中 webapps 目录映射到主机上的目录
mv /home/gcuser/sdso.war /home/gcuser/dockercompose/sdso/tomcat/webapps/sdso.war
启动 tomcat 的 docker 容器
docker start tomcat_sdso

配置项 -General

配置项 - 源码治理

配置项 - 构建

配置项 - 构建后操作

jenkins 手动触发构建

退出移动版