github+jenkins+maven+docker自动化构建部署

前言

传统的开发、测试、部署方式,是由开发人员本机或打包机进行打包,将war包提交给测试人员部署,测试通过后,再由实施人员负责部署到预发、生产环境中。中间的衔接不连贯,容易出错,而且打包、部署存在重复的工作量。自动化构建部署(CICD)就是解决该问题,将从开发到部署的一系列流程变成自动化,衔接连贯,在构建失败时能够告知开发,构建成功后能够告知测试和实施人员。无论大中小公司,都应该有此流程。

我本人在前公司搭建了基于svn(git)+jenkins+maven的自动化构建部署结构,所出的war包部署在tomcat中。此架构仍然不可避免要安装jdk、tomcat、mysql、nginx等应用,而且需要配置环境变量,使用docker可解决上述问题,将所有服务打包成docker镜像,推送到docker registry中。docker的优点就不在这里赘述了
这里写图片描述

目标

最终目标:在linux系统中,搭建jenkins服务,定时(或githook)的方式从github上拉取maven工程,构建war包。使用docker构建image,推送到docker registry上。

我使用的是ubuntu系统,使用docker形式的jenkins,拉取github工程,gitlab同理,构建war包,再在tomcat镜像的基础上将war包进去,构成新镜像,推送到阿里的registry中,其他的registry(包括自建registry)同理。

为了更好的写这个教程,我逐步完成最终目标,将目标拆分成3个部分。
- 第一步:github代码服务器,提交maven项目
- 第二部:安装jenkins,拉取github工程,构建war包
- 第三步:构建的war包自动推送到tomcat服务器中
- 第四步:基于Dockfile将war包和tomcat镜像构建出新镜像推送到阿里云

PS:读者最好有linux使用经验,会编写shell脚本。

第一步 git代码服务器

这里以github为例,其他如svn、gitlab、码云等VCS也都大同小异。有时间我会补充私有的gitlab搭建方式。

暂时略过,这里先使用github上的公用工程,假装成自己的。
本人github可用于本例测试:https://github.com/njzcx/DataPlatform

第二步 jenkins集成

首先你需要有一台linux系统,我使用VMWare搭建的Ubuntu16的虚拟机(本人低配本,觉得VM比VB更快些,虚拟机磁盘最好使用固态,并多分些cpu和内存)。

有些命令没有时,要会使用apt-get install安装。

安装jenkins的docker版本(ps:docker版方便快捷)
打开终端,先把docker安装上
sudo apt install docker.io
使用docker安装jenkins,直接调用run命令,会自动pull镜像并运行

sudo docker run -d \
-p 8080:8080 \
-p 50000:50000 \
--name jenkins \
-u root \
-v ~/jenkins:/var/jenkins_home \
jenkinsci/jenkins:lts

8080端口是jenkins的端口,5000端口是master和slave通信端口(jenkins集群部署后期我再补充,本次为单机配置)。

顺便说一句,此镜像为jenkins原生,存在一些插件和配置问题,比如不能使用sudo,可根据原声镜像自行扩展,由于不影响此次目标,就不进行再构建了。

初次启动的时候,可以通过docker logs -f jenkins查看控制台的密码,通过这个密码登录系统。(~/jenkins的初始化文件也有密码)

启动后就可以通过127.0.0.1:8080访问jenkins了。输入密码,新建用户,安装默认插件。手动需要安装的插件有:
Maven Integration plugin:有了它在新建Job时才能有Maven项目可以选择
Deploy to container Plugin:将war包部署到tomcatshang
Publish Over SSH:通过ssh推送文件,并可以执行shell命令

插件安装完成后最好重启一下jenkins,有几率jenkins会不生效

还需要指定jenkins的jdk和maven,进入

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值