该文主要介绍如何从零开始利用Jenknis实现自动化构建项目镜像,并建立且启动相关容器。预备知识(git,docker,shell)。全文分两部分,分别采用无参数自动化构建和含用户指定参数的两种构建方式进行部署举例说明。git
1、根据解析git提交日志内容实现自动化部署docker
一、总体实现流程概述shell
大体为首先git提交代码更新,提交更新后触发jenknis(这里为执行指定脚本),从提交注释中解析本次提交是否发版,提交注释规则此处约定为: ,提交说明,版本号,是否发版(是:1,否:0), 注:‘,’为分隔符。根据解析出的发版标识,若是发版则执行构建镜像,并利用docker-compose建立并启动容器,不然则退出。浏览器
二、方案具体实现工具
为了作到每次更新只须要拉取代码部分,因此先将项目须要用到的软件包,工具类等构建到基础镜像中,以后在更新时只须要下载最新版代码,引用以前构建好的基础包便可构建出可用的完整项目镜像。在此例中以构建的kettle基本运行环境做为基础镜像:日志
kettle:basic部署
编写执行构建镜像的shell脚本源码
脚本总体思想:it
根据jenknis的更新日志获取git提交注释内容,并解析本次提交是否发版,版本号等信息,核心代码以下:自动化
利用拉取下来的Dockerfile文件,进行镜像构建,核心代码以下:
将制做好的镜像上传到私有库,核心代码以下:
中止现有容器,并启动新容器,核心代码以下:
至此构建脚本编写完成。
经过浏览器登陆Jenknis主页
新建任务,选择构建一个自由风格的软件项目
输入项目名称和相关描述,选择所需的额外配置,如丢弃旧的构建等
在这里的高级选项下, 能够指定自定义的工做空间,如本例须要构建镜像,则此处应该填写构建镜像的根目录
配置源码管理:
这里是有git管理源码,配置相应的远程仓库地址、用户名与密码、分支节点
构建触发器(即触发任务运行的动做)
这里使用Poll SCM(为定时控件,规则为 * * * * * 依次对应分钟、小时、日、星期、月),事例为每分钟执行一次
构建
点击增长构建步骤(构建动做完成时所作的动做),运行指定脚本,本例为利用shell脚本进行镜像的构建以及对应容器的建立和启动。
构建后操做(整个构建终止后所作的动做)
常见的可选择在构建失败后发送邮件到指定地址。
至此整个任务构建完成。
三、任务维护
经过面板左侧提供的功能对任务进行跟踪,查看。
修改记录:记录了全部的修改历史明细
工做空间:查看项目路径下的全部文件
构建历史:构建历史选择任意一次构建,能够查看构建日志
经过点开的历史构建面板,点选终端输出,能够查看构建的详细过程。(若是构建失败,会包含构建的具体错误)