构建Docker+Jenkins持续集成环境

docker和Jenkins不是什么新东西了,两者结合也不是什么稀奇的事情,也已经有很多Jenkins和docker相结合的文章,此文仅为自己的一点心得实践,如有不对的地方,欢迎大家纠正。

先贴上大致的流程图,逐步说明:

代码-Git:

并没有什么好说明的,就是简单的使用了Git作为版本控制工具而已,通用使用规范不在细说。
此步的产出:
Git分支特定版本号

Git-自动构建、自动构建-代码包:

做法也很通用了,将project的Git钩子同Jenkins结合,达到特定分支有push时机触发自动构建,将代码包从Git拉取并打包为代码包。

此步产出:
打包好的代码包:project.tar.gz

代码包-Docker镜像

在此步中,我们为每个project提供特定的测试环境,并且在此环境中执行项目代码镜像打包操作。在此步中,需要提前准备几样东西:

  1. 测试环境:我们这里为一台干净的服务器(不要再问好奢侈,有钱就是任性),部署docker环境;
  2. project的base镜像:对于一个成熟的项目,所依赖的环境是固定可知的,因此提前准备好其所依赖的base image是必要的。
    如,我们一个项目的base image的Dockerfile:
FROM centos:liuyanglong
MAINTAINER liuyanglong "[email protected]"
MAINTAINER version "online"

USER root
ADD php.ini /home/work/local/php/etc/
ADD php-fpm.conf /home/work/local/php/etc/

ONBUILD ADD project-code.tar.gz  /home/work/
ONBUILD ENTRYPOINT ["supervisord", "-c", "/etc/supervisord.conf", "-n"]

注意最下面的两行ONBUILD
而在每一次Jenkins的构建时,要做的仅仅是将代码包传入,并且执行docker build即可,此时build所使用的Dockerfile的内容只有一行:

From this_project_image:base

而执行build时只会根据base image中的两行ONBUILD执行两个命令:

ADD project-code.tar.gz  /home/work/
ENTRYPOINT ["supervisord", "-c", "/etc/supervisord.conf", "-n"]

注意:此步仅仅在测试服务器做了docker build操作,并没有执行docker pull!!

镜像打包完毕后,此步并没有结束!!

调用脚本,根据此构件号的版本docker image创建对应的容器,脚本的输出为其对应的访问方式,供QA同学测试使用。
这样,每个构建好的版本都有对应的测试环境,且互不冲突!
鄙人的脚本地址为:https://github.com/Liuyanglong/docker-tools/blob/master/create_docker

此步的产出:

  1. docker build成功的project image,如以构建号为image版本号,叫做: project_dev:530
  2. 此版本代码的测试环境地址,如:172.30.40.2

生成线上镜像

到上一步为止,测试构建环境已经结束,当QA同学确定要上线时,执行Jenkins的Promotion操作,这时触发 此步,将对应build版本对应的docker镜像推送到 私有docker registry。
所执行的操作自然为 :

docker tag project_dev:530  docker-registry.xxxxx.com/xxxxxxx/project_name:version
docker push docker-registry.xxxxx.com/xxxxxxx/project_name:version

此步产出:
push好的线上镜像

AB上线

此为最后一步,同样是执行promotion操作后最后所执行的步骤,调用内部接口,对线上应用执行AB上线

总结

上述就是在生产环境中的使用Jenkins和docker所构建的持续集成&自动部署的逻辑架构。

时间: 2024-10-12 16:51:31

构建Docker+Jenkins持续集成环境的相关文章

Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+jenkins的持续集成环境,并构建了基于maven的项目.这一节,我们继续扩展功能,增加对Nodejs的支持,实现nodejs项目构建.并打包成docker镜像和自动部署. 1. 配置Nodejs环境 1.1 安装nodejs插件 打开系统管理——管理插件——可选插件,搜索NodeJS,选择NodeJS Plugin安装 1.2 配置nodejs 版本 系统管理 —— 全局工具配置 —— NodeJ

Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果

为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 首先看,最终效果: 1.pom.xml build.plugins 增加: <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <ph

docker搭建gitlab+Jenkins持续集成环境

安装docker 此处省略一.使用docker安装gitlab docker pull gitlab/gitlab-ce:latest下载完成之后使用docker生成容器docker run -dit \-p 8443:443 \-p 8080:80 \-p 2222:22 \-p 9090:9090 \--name gitlab \--restart always \-v /home/gitlab/config:/etc/gitlab \-v /home/gitlab/logs:/var/lo

一步步部署基于Windows系统的Jenkins持续集成环境

如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境.之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一些问题,而大多数教程文档都是基于Mac或是Linux平台.为此很是头疼,经过一番摸索,终于走通了Windows平台下的一条路. 本CI系统流程:Dev提交代码,并merge到master分支-->Jenkns获取最新代码,开始构建(解析git触发响应,build solution,run automation,get result都在此步内完成)

jenkins持续集成环境搭建

持续集成的目的: 让我们每次更新了代码提交到 git 仓库后就自动运行构建新版本,自动部署 到测试环境,从而提高生产效率,告别重复的劳动 系统环境:CentOS6.5 .JDK SE 1.8.0_60 .Maven3.0.5.Jenkins2.4.1.Git(yum安装).Docker.docker-compose.gitlab maven.jdk.git.安装其他文章写过,再次略过. maven安装 jdk安装 git安装: yum -y install git gitlab安装: 1.如想使

Jenkins - 持续集成环境搭建

1. Jenkins 概述 Jenkins是一个开源的持续集成工具.持续集成主要功能是进行自动化的构建.自动化构建包括自动编译.发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件. 2. Jenkins功能 主要功能: l   代码库(svn/git等)代码发生变化后更新代码至jenkins工作目录 l   代码变化后启动编译或设置定时编译 l   输出编译结果,包括生成的目标文件 l   邮件通知构建结果 3. Jenkins构建过程 1. 向代码库提交代码,代码库变化触发构建

Git+Docker+Jenkins持续集成

组成: Git 作为版本控制库 Docker 搭建测试环境 Jenkins 作为持续集成服务 Jenkins实现CI(Continuous Integration)到CD(Continuous Delivery)的转换工具. 期望: 1.解决从开发–测试–上线等一系列环境统一及依赖问题 2.可实现不停服务发布上线和灰度(需要实现LB) 3.可实现发布回滚 4.方便devops及运维操作 思路: 客户或产品有新需求变更或者测试人员提出bug时,会提交事件到开发人员,开发人员得到通知,会对开发分支做

Jenkins持续集成环境部署

一.下载Jenkins Jenkins下载地址:https://jenkins.io/download/ 这里我们下载的是jenkins.war 二.启动Jenkins 在Linux下启动Jenkins有两种方式,一种是在jenkins.war的存放目录下使用命令java -jar jenkins.war启动,另外一种是把jenkins.war放在tomcat的webapps目录下,然后启动tomcat就可以了,如下图: 三.安装Jenkins 在浏览器中输入http://192.168.182

netcore + docker + jenkins 持续集成日志

要实现的目标 : 提交代码到github的master分支后, 触发webhook, jenkins从github上重新拉取代码=>编译=>打包成docker镜像=>重新发布 机器: centos 7.4 1. 安装git,jenkins,docker-ce git可以直接yum 安装 : yum install git -y 也可以安装新版本 参考文章:  https://linuxize.com/post/how-to-install-git-on-centos-7/ jenkins