本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建、发布到仓库\并部署上线。

0. 前置条件

服务器安装docker,并启动docker swarm

注意docker启动时,需要开启tcp端口

1.Jenkins 安装

1.1 命令行启动:

安装比较简单,直接运行

docker run -p 8080:8080 -p 50000:50000 -d  -v /home/jenkins-home-docker:/var/jenkins_home  jenkins/jenkins:lts

运行后查看日志,获取token,打开ip:8080,输入token,安装常用插件

1.2 使用swarm集群管理工具

在services里,添加服务

2.Jenkins 插件安装

我们需要一些插件支持

  • Docker plugin : 提供docker 构建和发布
  • SSH plugin : 提供通过SSH在远程主机执行命令,用于部署服务
  • maven plugin: 支持maven

系统管理-插件管理里进行安装即可。

2.1 docker 配置

“系统管理-系统设置-云” 里新增

注意docker host url需要加上tcp://

2.2 ssh主机 配置

“系统管理-系统设置-SSH remote hosts” 里配置SSH远程主机

2.3 配置下email

在系统设置里直接设置,配置下smtp

2.4 配置jdk、maven

在系统管理-全局工具配置里设置JDK自动安装

maven同样配置即可

3.Jenkins 项目配置

3.1 新建项目

我们是maven项目,选择maven

3.2 配置源码管理

首先配置源码,可以是git或者svn,项目组用的是svn

3.3 配置触发器

配置自动构建,勾选POLL SCM,配置5分钟检查一次,当svn发生变化时,会自动启动构建

3.4 配置Build

简单的maven项目,构建使用pom.xml,执行package -DskipTests

3.5 配置Post Steps

Post Steps是指构建完成执行的步骤,我们会实现构建docker,发布docker和部署服务

3.5.1 配置docker

点击add post-build step,选择Build/publish docker image:

选择cloud为先前配置的docker-cloud,image填写私服发布地址,勾上push image。

这样配置,构建完成后会自动push到私服。

3.5.2 配置远程部署

我们使用docker stack来部署服务

首先,编写docker-compose.yml

version: "3"
services:backend:image: 192.168.86.8:5000/allinone-service-cicddeploy:replicas: 1restart_policy:condition: on-failureports:- "8007:8006"networks:- webnet
networks:webnet:

保存到docker服务器,比如/root/allinone/allinone-service/allinone目录

然后,添加post-build step:

选择配置好的远程docker主机:

填入命令:

cd /root/allinone/allinone-service/allinone
docker stack down allinone-cicd
docker stack deploy -c docker-compose.yml allinone-cicd
  • docker stack down 将原先服务下线
  • docker stack deploy -c 重新部署服务

4 开始构建

4.1 手动构建

回到工程,点击立即构建,第一次构建会自动下载jdk,maven,会比较慢

等待一会,构建成功:

9e70992ebc17: Pushing [===============================================>   ]  42.66MB/45.02MB
9e70992ebc17: Pushing [=================================================> ]  44.96MB/45.02MB
9e70992ebc17: Pushing [==================================================>]  45.02MB
9e70992ebc17: Pushed
latest: digest: sha256:5df6c97d6173527bc92ddc436fcef063069cd1cd3d0da8a0c74d2238443ae4d6 size: 1582
Docker Build Done
[SSH] script:cd /root/allinone/allinone-service/allinone
docker stack down allinone-cicd
docker stack deploy -c docker-compose.yml allinone-cicd[SSH] executing...
Removing service allinone-cicd_backend
Removing network allinone-cicd_webnet
Creating network allinone-cicd_webnet
Creating service allinone-cicd_backend[SSH] completed
[SSH] exit-status: 0Finished: SUCCESS

如果配置了邮件通知,会收到构建成功邮件。

4.2 自动构建

SVN提交一个变更,等几分钟,查看Subversion Polling Log,已经有记录了,发现已经自动构建了一个版本

完美!


作者:Jadepeng
出处:jqpeng的技术记事本--http://www.cnblogs.com/xiaoqi
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境相关推荐

  1. docker 应用系列(一)--- 一步步搭建虚拟机 docker 环境 附有 vue-cli + nginx 应用

    小剧场 测试:裤裆你这页面刷新就白屏啊,怎么了啊,而且你看这 network,怎么这些 js 这么大啊,很耗流量而且加载速度还很慢诶. 我:嗯,大佬说的是,页面刷新白屏是因为没有服务器没有配置找不到资 ...

  2. docker 应用系列(一)--- 一步步搭建虚拟机 docker 环境 附有 vue-cli + nginx 应用...

    小剧场 测试:裤裆你这页面刷新就白屏啊,怎么了啊,而且你看这 network,怎么这些 js 这么大啊,很耗流量而且加载速度还很慢诶. 我:嗯,大佬说的是,页面刷新白屏是因为没有服务器没有配置找不到资 ...

  3. 服务器网站集成环境哪个好,如何搭建Web服务器之集成环境

    WEB服务器简介 WEB服务器,即网站服务器,也称为WWW(WORLD WIDE WEB)服务器,是指驻留于因特网上某种类型计算机的程序.主要功能是提供网上信息浏览服务.目前最主流的三个Web服务器是 ...

  4. 【LittleVGL】Windows环境下利用CodeBlocks搭建LittleVGL的PC模拟器环境配置问题

    本章目的:   1.在学习使用LittleVGL构架搭建GUI图形界面时,使用CodeBlocks IDE集成开发环境来配置和测试GUI系统.   2.解决在搭建LittleVGL环境时遇到的问题   ...

  5. 阿里云java mysql环境_阿里云搭建centos java mysql nginx环境

    1.上传下载 yum install lrzsz sz下载 rz上传 2.安装压缩命令 yum install -y unzip zip; 3.安装java rpm -ivh jdk-8u161-li ...

  6. 在windows上模拟linux环境,Windows下使用NCL(Cygwin模拟Linux环境)

    参考自:http://bbs.lasg.ac.cn/bbs/thread-37043-1-1.html 1.下载 所需文件均可在此下载:http://yunpan.cn/cQsvAEe3Axs2Z   ...

  7. 搭建Jenkins+SpringBoot+Docker的微服务持续集成框架

    前言 近一.两年,SpringBoot和Docker可以说非常的火热啊,而早在2015年的时候我就弄过一下Docker,不过由于职位和跳槽等种种原因,2016年就很少搞了,不过现在再捡起来也是很容易的 ...

  8. 从服务器基础环境配置到搭建Docker+Gitlab+Gitlab Runner,完整介绍Spring Boot项目的持续集成与持续交付具体实现!

    1. 序言 在大学的课程学习,非常注重团队协作的培养,在企业开发中,团队协作开发项目的场景更是甚多.另外,在当下的热门技术栈中,微服务开发模式.前后端分离开发模式逐渐盛行,Spring Boot.VU ...

  9. docker环境下使用gitlab,gitlab-runner 为 NetCore 持续集成

    环境 Centos7.6 安装应用docker,docker-compose (我的Centos是用Hyper-V跑的分了8G的内存,阿里云2G根本跑不起来gitlab) 为了保证我的Centos环境 ...

最新文章

  1. mysql5.7用declare声明失败_我可能会失败,但我不会一直失败。
  2. 从前台页面取参数到sql的like中比较时参数的预处理
  3. 【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 | 源码分析 )
  4. caffe教程翻译:在caffe上训练与测试数据
  5. java ftp 判断目录存在_java判断ftp目录是否存在的方法
  6. 您的API是什么情况?
  7. 创建 SSH Keys
  8. libusb的交叉编译
  9. 从超融合到全面云化,深信服云计算战略与品牌双升级
  10. CocosCreator2.3.1切换场景出现Failed to load scene ‘xxx‘ because ‘xxx‘ is already being loaded问题的解决方案
  11. 转:java生成EXCEL表格(POI vs JXL)
  12. Raki的读paper小记:Rational LAMOL: A Rationale-Based Lifelong Learning Framework
  13. VC知识库大讲堂C++系列教程(目前最新)
  14. 网易视频云:为何说张三丰是个优秀的程序员?
  15. python3下使用有道翻译网页版实现翻译功能~~~附源码
  16. 麦肯锡:释放智能网联汽车数据全生命周期价值​潜力
  17. OSI七层模型——数据链路层
  18. C++笔试笔记1(4399 西山居 深信服 剑心互娱 快手)
  19. PHP面试要点——MQ消息队列
  20. 燃烧的远征java(一)-开发环境:JDK1.6+tomcat5.5

热门文章

  1. BZOJ1001[BeiJing2006]狼抓兔子——最小割
  2. 如何释放 DB_RECOVERY_FILE_DEST_SIZE
  3. Docker持续部署图文详解
  4. Java任务调度框架Quartz
  5. 《电子基础与维修工具核心教程》——2.6 节点分压原理
  6. IOS开发 使用CGContextRef绘制文字时的设置
  7. iOS 项目中用到的一些开源库和第三方组件
  8. JS把函数当作参数传递
  9. 当数据库结构改变时,需要将数据库删除再创建
  10. Android projects on Github