基于Docker+Jenkins+GitHub搭建持续集成环境

 

一、为什么做持续集成、怎么做持续集成

搭建持续集成环境的目的,就是为了将部署流程规范化、自动化,节省人力、时间、稳定部署。

下图是Docker+Jenkins+GitHub的基本部署结构图。

  • 开发者提交代码到git
  • jenkins检测到版本更新,触发构建
  • 构建任务:下载代码、maven打包、docker构建镜像、上传镜像库、重启镜像

  下面开始逐步实现:

   使用的服务器系统是centos7

二、部署jenkins

   1、没有jdk的,先安装jdk

yum install java-1.8.0-openjdk.x86_64

   2、下载jenkins和tomcat,解压tomcat

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
tar -zxvf apache-tomcat-8.5.42.tar.gz

    3、把jenkins.war放入tomcat/webapps,启动tomcat

mv jenkins.war apache-tomcat-8.5.42/webapps/
sh apache-tomcat-8.5.42/bin/startup.sh

    4、配置jenkins

      浏览器访问http://x.x.x.x:8080/jenkins,稍等几分钟

 到解锁界面先修改一下配置,防止下一步卡在loding

        (/启动jenkins用户的根目录/.jenkins/updates/default.json  把第一行的google改成baidu,保存)

然后再解锁

使用cat命令,查看红色字体路径的文件内容,在password输入框,输入该内容,点击提交

后面的插件安装可安装,可不安装;初始化用户最好创建一个。

最后到工作界面,就完成了jenkins的安装

三、构建任务-编译打包

1、点击create new jobs创建任务

2、写上名字,选择自由风格,OK

3、在git中,填写github项目的url,点击add,添加凭证(用户名和密码)

4、保存任务后,点击Build Now,构建一次,可以看到下方#1是蓝色,表示从github下载代码成功了。

可以在这里查看日志

5、添加一个编译步骤,写入clean install ,实现maven打包

先安装maven,yum install maven

再运行任务,从日志中,可以看出,打包成功

四、构建任务-构建镜像

添加一个shell步骤

jar包名:demo-0.6.jar ,其中0.6是版本号,先取出版本号,当作后面的镜像版本。

pkname=$(ls target/| grep demo |head -n 1)
vesion=${pkname%.*}
vesion=${vesion#*-}
echo $vesion
#获取版本号

rm Dockerfile
echo "FROM openjdk:latest" >> Dockerfile
echo 'MAINTAINER charle "charle.wenqiang.qq.com"' >> Dockerfile
echo "COPY ./target/demo*.jar /data/demo.jar" >> Dockerfile
echo "ENTRYPOINT java -jar /data/demo.jar" >> Dockerfile
#初始化Dockerfile

docker build -t="charle/demo:$vesion" .
#基于dockerfile构建镜像

 

五、构建任务-上传镜像到仓库

镜像库可以用DockerHub、阿里云、私有库等,这里用的是阿里云。

因为要用到版本号,脚本就写到上个步骤的shell里。

docker login --username=XXXX@qq.com --password=XXXX registry.cn-shenzhen.aliyuncs.com
#登录仓库
docker tag charle/demo:$vesion registry.cn-shenzhen.aliyuncs.com/charlezone/demo:$vesion
docker push registry.cn-shenzhen.aliyuncs.com/charlezone/demo:$vesion
#上传镜像

六、构建任务-更新docker容器

因为要用到版本号,脚本还是写到上上个步骤的shell里。

docker_id=$(docker ps | grep demo| awk '{print $1}')
if [ "$docker_id" != "" ]; then
   docker rm -f $docker_id
fi
#删除上个版本容器

docker run -dit -p 8011:8011 --name demo$vesion registry.cn-shenzhen.aliyuncs.com/charlezone/demo:$vesion
#启动新版本容器

从代码更新,到服务更新就已经完成了。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值