搭建Jenkins,配合github实现CI/CD
背景:
近几年CI/CD盛行,但具体是什么?怎么用?内心是模糊的。公司内部有现成的CI/CD平台,但个人想自己摸索了解一番,于是便开始了探索。
目的:
本文的目的在于通过自己搭建Jenkins,实现CI/CD,从而加深对CI/CD的理解,便于日后运用于项目实践中。当前实现的效果时,编写完自动化脚本后,提交代码后,github hook触发jenkins构建,构建后执行脚本并发送邮件通知。
一、CI/CD是什么?(一个流程)
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。
CI 持续集成(Continuous Integration)
CD 持续交付(Continuous Delivery)
CD 持续部署(Continuous Deployment)
简而言之,CI/CD就是一个流程,用于实现应用开发中的高度持续自动化和持续监控
用自己的话理解:CI/CD 就是开发童鞋合并各个模块的代码后,触发自动化测试,验证新版本是否可用。测试通过后,自动快速部署一个全新的可用的版本。本文仅仅是验证合并代码后,自动触发自动化测试,验证是否可用。具体如下图:

二、Jenkins是什么?
可以去jenkins官网学习。官网介绍:Jenkins是开发自动化服务的领袖,为项目提供了上百个支持构建、部署和自动化的插件

1、Jenkins安装:
注意:jenkins依赖java环境,目前要求是java 11以下

1.1 JDK 11安装
安装后命令行执行:java --version确认版本是否正确,如下图:

1.2 Jenkins采用war形式安装

下载后,运行命令启动jenkins
java -jar jenkins.war
然后浏览器打开:localhost:8080 并根据向导设置密码。此时jenkins便已安装完成!

注意:若不记得jenkins安装目录,可通过以下命令找到jenkins.war,并启动jenkins
mdfind -name jenkins.war
java -jar jenkins.war
三、Jenkins实战
1、新建任务


2、配置github


注意这里需要添加github的账号密码。


3、增加构建步骤,执行shell脚本:(这里是执行我们项目接口自动化的脚本)



保存后,第一个job就构建完成了!
点击立即构建,效果如图:


4、github hook配置
上面是手动触发构建,要实现github提交代码触发构建,需要在github上配置hook,具体操作如下:


注意:这里的url不能是本地url(127.0.0.1或localhost这种),必须是公网地址哦。由于本人实在本地搭建怼jenkins且本人无服务器,为了实现这个功能,搜索了ngrok这个神器!!!
5、ngrok使用

简而言之,就是将本地 Web 服务器暴露给 Internet!让外网可以访问到本地服务。使用也很简单,下载ngrok并解压到执行目录后,直接执行命令:
ngrok http 8080
效果如图:

紧接着,github中webhook的playload url就可以填写这个ngrok的公网地址了哦


截止到目前,github提交自动触发jenkins构建就已经完成了!!!
四、Jenkins邮件通知
任务构建执行完后,想查看构建和执行情况怎么办?Jenkins 邮件通知来搞定!
1、下载邮件插件,路径:系统管理-》插件管理下,搜索E-mail notification,找到:Extended E-mail Notification 下载后重启jenkins
2、进行邮件通知配置,路径:系统管理-》全局配置下,找到Extended E-mail Notification。注意这里需要准确填写端口号,发送者邮箱以及密码。注意这里的密码不是邮箱的登陆密码哦,而是邮箱中的授权码,具体如图:



如果任务中没有另外设置收件人,则使用系统设置的收件人
3、通过测试邮件发送接收,验证邮件配置是否正确。

4、添加构建后操作步骤


添加Recipient List

5、触发方式选择:Always(实际根据自身需要配置哈)

点击保存后,点击立即构建,查看控制台信息,可以看到已经在发送邮件了。

如果想要更丰富的邮件报告,可以研究下邮件模板哦!