主要内容
持续集成(CI)和持续交付(CD)
在介绍jenkins之前,有两个概念需要了解,它们是持续集成和持续交付/部署。
- 持续集成
一个成熟的产品发布之前,需要经过几个阶段:开发 -> 构建 -> 测试,这些阶段中,每个开发人员在自己的电脑上进行开发,最后推送到中央代码仓库。在产品正式发布之前,需要对这个仓库的代码进行合并调试,确保产品的稳定性。在自动化工具出现之前,代码集成总是出现在产品发布之前的一个步骤,并且需要人为干预。
而如果使用了自动化工具,我们可以在产品开发的过程中不断进行集成,这是一个边开发边集成的过程,大大提高了代码的容错率,可以及早发现代码中的错误,提高代码的开发效率。
-
持续交付
当然,持续集成通过,并不是说代码没有问题,只能说代码通过了编译构建阶段,一些运行时错误,必须在类生产环境中才能被发现,交付的目的就是为了发现这些错误。
持续部署就是指代码的每一次提交都进行部署测试的过程,持续部署和持续集成的目的一样,都是为了及早发现错误。
-
持续部署
持续部署是把完成上一个步骤之后的产品自动发布到最终的生产环境中去。一般来说,持续部署对于很多企业来说都是可选的,因为难点是在集成和交付过程,通过了这两个阶段,部署相对来说较为轻松。
什么是jenkins
简单来说,jenkins是使用java语言开发的CI/CD工具,它简单易用,插件众多,功能强大。
安装jenkins
jenkins可以作为一个单独的服务运行,也可以作为tomcat的一个程序运行。jenkins包括长期支持版本和每周构建版本,可以根据自己的需要下载。目前长期支持版本为2.121.2,每周构建版本为2.135。由于jenkins基于java开发,因此需要系统中安装java运行环境。
centos7中通过yum安装jenkins
1 2 3 4 |
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install jenkins |
通过rpm安装
jenkins提供了二进制安装包,因此使用rpm安装也十分方便
1 2 |
rpm -Uvh https://pkg.jenkins.io/redhat-stable/jenkins-2.121.2-1.1.noarch.rpm |
运行jenkins
jenkins安装成功之后,在/usr/lib/jenkins
目录下面有一个名为jenkins.war
的文件,运行jenkins只需要这个文件即可。
1 2 |
java -jar /usr/lib/jenkins/jenkins.war |
这种方式运行的jenkins是一个前台进程,关闭了控制台进程就结束,因此建议通过守护进程的方式运行jenkins
1 2 3 |
systemctl enable jenkins #运行jenkins开机启动 systemctl start jenkins #启动jenkins |
默认jenkins会监听8080端口,因此在浏览器里面输入http://localhost:8080 即可访问jenkins页面。
如果使用tomcat运行jenkins,只需要把jenkins.war文件放到tomcat的webapps
目录,然后启动tomcat即可。
配置jenkins
- 第一次运行,需要先解锁jenkins
输入
/var/lib/jenkins/secrets/initialAdminPassword
中的初始密码,按继续。 -
接下来就是选择安装插件
如果对jenkins不太熟悉,建议选择第一个:安装推荐的插件。选择之后jenkins就会下载相关的插件进行安装。
-
创建用户
这个过程并不是必须的,如果不想创建其他用户,可以选择使用admin账户继续,不过建议创建一个保存并完成之后,还可以选择性地设置jenkins的url,我们跳过这个步骤的设置。
使用jenkins
创建第一个自由风格任务
登录后会看到和下面类似的面板
点击新建任务,跳到下面的画面
输入任务名称,选择构建一个自由风格的软件项目
,然后确定后,跳转到项目配置,我们主要看构建
选项
根据项目类型,选择不同的构建方式,由于我们现在没有项目,作为演示,选择执行shell
,选择后会出现一个文本框,输入将要执行的命令:
完成后保存,这样就创建了一个自由风格的构建任务。现在我们尝试构建这个任务
在Build History中可以看到这个正在构建的任务,里面的信息包括:
1. 构建的日期
2. 第几次构建
3. 构建是否成功。成功为蓝球,失败为红球
点击编号前面的蓝球/红球,可以进入到任务的控制台输出
创建基于代码管理的任务(git scm)
具体过程如下:
- 创建一个自由风格的任务,名称为git-demo
-
源码管理
选项里面选择Git,填写仓库地址,由于是一个公共的项目,因此不需要添加授权。 -
增加构建步骤
在构建选项中添加构建步骤,由于该项目基于maven,因此选择
调用顶层maven目标
,jenkins提供了内置的maven支持,因此我们不需要另外安装,如果确实有需要,可以自行安装不同的版本。在出现的文本框中填写maven的目标,完成后保存。
创建好任务之后就可以尝试构建,点击任务面板的立即构建,构建过程如下:
- git把仓库的代码克隆到本地工作空间,路径为
/var/lib/jenkins/workspace
- maven下载依赖
- 执行构建目标,分别是clean和compile
使用构建触发器
自由风格的软件项目包含5种类型的触发器,如图所示
我们将要说的是第二个:GitHub hook trigger for GITScm polling,该选项的作用是,当github代码仓库有变动,马上执行任务的构建。使用这个功能,需要通过下面的几个步骤
- 勾选GitHub hook trigger for GITScm polling
-
到系统管理 -> 系统设置 -> GitHub -> 高级 -> 打开Override Hook URL,然后保存
-
到github.com的项目设置下面,添加一个webhook,地址是上一步中设置的url
添加这个地址到github的目的是让github发送事件给jenkins,例如push、delete、add等,这里只监听push事件。
配置完毕,当我们修改代码,提交到GitHub的时候,GitHub就会马上发送事件给jenkins,jenkins接收到这个事件就会自动开始构建任务。通过/var/log/jenkins/jenkins.log中的日志可以看到对应的变动:
1 2 3 4 5 6 7 8 |
信息: Received PushEvent for https://github.com/tangino/game-of-life from 192.30.252.44 ⇒ http://185.205.12.227:8080/github-webhook/ 七月 31, 2018 3:20:18 下午 org.jenkinsci.plugins.github.webhook.subscriber.DefaultPushGHEventSubscriber$1 run 信息: Poked git-demo 七月 31, 2018 3:20:19 下午 com.cloudbees.jenkins.GitHubPushTrigger$1 run 信息: SCM changes detected in git-demo. Triggering #2 七月 31, 2018 3:20:36 下午 hudson.model.Run execute 信息: git-demo #2 main build action completed: SUCCESS |
转载请注明:Pure nonsense » jenkins入门