一、Jenkins是什么
目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的开发团队应对如下挑战:
1、软件构建自动化:配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
2、构建可持续的自动化检查:CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力。
3、构建可持续的自动化测试:构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
4、生成后后续过程的自动化:当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。
Jenkins是一个可扩展的持续集成引擎。主要用于:持续、自动地构建/测试软件项目以及监控一些定时执行的任务。其拥有的特性包括:
1、易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
2、易于配置-所有配置都是通过其提供的web界面实现。
3、集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
4、生成JUnit/TestNG测试报告。
5、分布式构建支持Jenkins能够让多台计算机一起构建/测试。
6、文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
7、插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
CI系统基本结构图
该系统的各个组成部分是按如下顺序来发挥作用的:
1. 开发者检入代码到源代码仓库。
2. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
3. CI系统会在对应的工作区内执行构建过程。
4. (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
5. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
6. CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
二、Jenkins的安装与部署
1、下载yum源:
sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.repo
2、导入密钥:
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
3、安装Jenkins:yum install jenkins
4、启动前检查是否安装jdk:java -version(最好是1.8以上的)
5、修改配置文件:sudo vim /etc/init.d/jenkins
在candidates="路径后添加java路径/usr/java/jdk1.8.0_144/bin/java.(根据个人Java安装地址)
vi /etc/sysconfig/jenkins
找到JENKINS_PORT=“8080”(8080是Jenkins默认端口,若被占用课修改为其他空闲端口)
6、关闭防火墙
7、启动应用:sudo service jenkins start
三、Jenkins构建maven项目
1、插件安装
启动Jenkins服务以后便可登录浏览器访问,因为我们需要从git上拉取源码,所以要在Jenkins上安装相应的git插件,同时我们也需要安装maven类的插件来支持构建maven项目。
--》点击系统管理
--》点击管理插件
在可选插件中找到Git plugin和Maven Integration plugin插件并安装
插件安装完毕后重启Jenkins
2、新建maven项目
新建一个job
输入名称和项目类型
源码管理
在源码管理项中选择git并输入git地址并在Credentials中Add仓库登录账号密码,在下方分支选择中选择需要构建的项目分支
构建触发器
根据实际要求构建符合要求的触发器,此图中触发器Poll SCM的功能是每个一定时间便检查源码是否有更新,若有则自动构建。(*/60****含义是每隔60分钟检查一次git源码)
构建选项
在Root POM输入pom.xml则会默认为项目中的xml文件,若xml文件不在默认文件下,则需在该栏中填入文件所在具体目录。Goals and options为构建目标,输入maven命令,此处为把maven项目打成war包。
此时maven项目构建基本就完成,进入将maven项目生成docker镜像的步骤。
三、Docker镜像构建
1、docker配置
在Jenkins中安装相应的docker插件(docker-build-step)
在Host服务器上安装docker(1.12.6版本慎用)
配置docker的远程访问:
1、centos下修改docker的配置文件/usr/lib/systemd/system/docker.service
2、在[Service]的部分添加(此处是暴露的6732端口)
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6732 -H unix://var/run/docker.sock
3、docker重新读取配置文件并重启docker服务
# systemctl daemon-reload
# systemctl restart docker
进入Jenkins,选择系统管理--》系统设置--》Docker Builder
在Docker URL处填写暴露的端口tcp://10.10.184.150:6732 然后保存
这样Jenkins便可调用host服务器中的docker功能
2、创建Docker镜像
在Host服务器上构建一个基础镜像并运行
Dockerfile
FROM alpine:latest
MAINTAINER xxx [email protected]
ADD ./tomcat.tar /home/skycloud
RUN echo \ "https://mirrors.ustc.edu.cn/alpine/v3.6/main" >/etc/apk/repositories && \
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community" >> \ /etc/apk/repositories && \
cat /etc/apk/repositories && \
apk update && apk add openjdk8 &&chmod 777 \ /home/skycloud/tomcat/bin/*.sh
登录刚才创建的maven项目,在Post Step中编写脚本命令
此脚本的内容大致是构建镜像并push到仓库再通过远程操作启动镜像
最后可以选择构建完成进行邮件通知
保存后进入操作页面并点击立即构建
此时左下角会出现构建进度条,蓝色表示构建成功,红色表示构建失败,灰色表示构建未完成
构建结束后点击构建编号,进入结果查看界面,点击Console Output查看构建过程
这样就完成了利用Jenkins来够构建一个maven项目并将其制作成Docker镜像的工作。这个构建过程会根据你的触发器设置来不断实施,从而达到主监控软件开发流程,快速显示问题与部署的目的。保证开发人员以及相关人员省时省力提高开发效率。