博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Docker+Jenkins+GitHub搭建持续集成环境
阅读量:3748 次
发布时间:2019-05-22

本文共 2186 字,大约阅读时间需要 7 分钟。

 

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

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

下图是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.warwget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gztar -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

      浏览器访问,稍等几分钟

 到解锁界面先修改一下配置,防止下一步卡在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 Dockerfileecho "FROM openjdk:latest" >> Dockerfileecho 'MAINTAINER charle "charle.wenqiang.qq.com"' >> Dockerfileecho "COPY ./target/demo*.jar /data/demo.jar" >> Dockerfileecho "ENTRYPOINT java -jar /data/demo.jar" >> Dockerfile#初始化Dockerfiledocker 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:$vesiondocker 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_idfi#删除上个版本容器docker run -dit -p 8011:8011 --name demo$vesion registry.cn-shenzhen.aliyuncs.com/charlezone/demo:$vesion#启动新版本容器

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

 

转载地址:http://libsn.baihongyu.com/

你可能感兴趣的文章
C++ Primer Plus 编程练习5
查看>>
mybati SQL动态语句报错:org.apache.ibatis.exceptions.PersistenceException
查看>>
mybatis 分页插件的版本不同 :java.lang.ClassCastException: com.github.pagehelper.PageHelper.....
查看>>
学习数据库视频笔记1------附上视频地址:https://www.bilibili.com/video/BV1fx411X7BD
查看>>
学习数据库视频笔记2------附上视频地址:https://www.bilibili.com/video/BV1fx411X7BD
查看>>
学习数据库视频笔记3------附上视频地址:https://www.bilibili.com/video/BV1fx411X7BD
查看>>
linux基础操作入门笔记,附学习视频:https://www.bilibili.com/video/BV1Sv411r7vd
查看>>
使用springboot搭建学习JSON
查看>>
使用springboot搭建的环境学习ajax
查看>>
SpringBoot启动流程及其原理
查看>>
刚学习springboot遇到的坑:ositive matches: AopAutoConfiguration matched: - @ConditionalOnProperty
查看>>
springboot整合druid出现yml配置中问题
查看>>
springboot 整合JDBC、Druid
查看>>
springboot 中 yml 配置注入:原理解释
查看>>
springboot整合MyBatis
查看>>
2021-05-18
查看>>
python学习第一天(自用)
查看>>
操作系统1
查看>>
操作系统2
查看>>
2021-05-28
查看>>