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

本文介绍如何通过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-cicd
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    ports:
      - "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: 0

Finished: SUCCESS

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

4.2 自动构建

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

完美!


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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LeoXu的博客

解决问题“Parsing Data for android-23 failed Unsupported major.minor version 51.0”

我是在 Eclipse 里面把 Android 工程中 project.properties 配置文件的 target 配置从 android-15 改成了 a...

1012

Go微服务,第10部分:集中式日志记录

在Go微服务博客系列的这一部分中,我们将介绍基于Logrus,Docker Gelf日志驱动程序和“作为服务的日志记录” Loggly服务的Go微服务的日志记录...

3384
来自专栏Vamei实验室

Java网络01 Tomcat初次尝试

Tomcat是一套开源软件,它由Apache Software Foundation(ASF)开发,用于实现Java Servlet和JavaServer Pa...

2069
来自专栏黑泽君的专栏

安装最新版本的Oracle公司的虚拟机软件 VirtualBox + 安装虚拟机 Windows XP 系统 + 安装 Oracle 11g 软件 + 出现 ERROR: ORA-12541: TNS

  VirtualBox的下载链接:https://www.virtualbox.org/wiki/Downloads

1971
来自专栏哈雷彗星撞地球

Mac下Jenkins+SVN+Xcode构建持续导出环境1 安装Jenkins2 安装Jenkins插件3 Xcode以及开发证书设置4 配置构建项目

每一次新版本要发布,都被测试部门催成狗,测试部也耐不住了,想自己打包,研发只管提交代码,听到这个消息,还是很开心的,终于不用打包了。跟同事折腾Jenkins三天...

762
来自专栏Android机动车

Jenkins实现Android自动打包

14年在给天天酷跑团队做sdk的算是第一次接触到Jenkins,当时有种乡下孩子进城的感觉,被jenkins流弊的体验所折服,只需要一个按钮点一下就坐等出包,不...

1242
来自专栏IMWeb前端团队

Nodejs进阶:核心模块net入门与实例讲解

模块概览 net模块是同样是nodejs的核心模块。在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服...

2926
来自专栏Java开发

INTELLIJ IDEA插件安装(阿里的编码约束)

在项目中,有的小伙伴第一次使用IDEA进行开发,想装开发插件(编码约束,lombk等)不知如何下手,下面小编就以安装Alibaba Java Coding Gu...

1382
来自专栏Django中文社区

搭建开发环境

本教程使用的开发环境 本教程写作时开发环境的系统平台为 Windows 10 (64 位),Python 版本为 3.5.2 (64 位),Django 版本为...

3665
来自专栏ImportSource

使用Spring Boot开发一个Spring Mobile程序

1. 概述 Spring Mobile是一个基于Spring Web MVC框架扩展的一个针对不同移动终端的应用开发框架。通过它我们在适配不同终端方面,就不用费...

4867

扫码关注云+社区