一、Jenkins 简介
1、什么是CI/CD
-
CI (持续集成)
持续集成是一种软件开发实践, 即团队开发成员经常集成他们的工作, 通常每个成员每天至少集成一次, 也就意味着每天可能会发生多次集成, 每次集成都通过自动化的构建(包括编译, 发布,自动化测试)来验证, 从而尽快的发现集成错误, 持续集成并不能消除Bug, 而是让它们非常容易发现和改正
-
CD (持续交付)
持续交付在持续集成的基础上, 将集成后的代码部署到更贴近真实运行环境的[类生产环境]中进行更多的测试来更早的发现问题。
比如我们完成单元测试后, 可以把代码部署到连接数据库的Staging环境中更多的自动化集成测试, 如果代码没有问题, 可以继续手动部署到生产环境中。
-
常用得持续集成工具
- Jenkins
- Atlassian Bamboo
- CircleCI
- GitLab CI
- JetBrains TeamCity
- ThoughtWorks GoCD
- ThoughtWorks Snap
2、Jenkins
Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成
- Jenkins优点
- 开源免费
- 跨平台, 支持所有平台
- master/ slave 支持分布式自动化测试
- Web形式的可视化的管理页面
- 安装配置简单
- Tips及时快速的帮助
- 插件支持丰富(近2000)
二、Jenkins 部署
1、环境需求
不少于256M内存,不低于1G磁盘,JDK版本>=8 (openjdk也可以)
- 安装jdk
# 安装openjdk
sudo apt-get install openjdk-8-jdk
以下操作基于Ubuntu 18.04
2、安装Jenkins
-
添加存储库密钥
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - # 添加密钥后,系统将返回OK -
将Debian包存储库地址附加到服务器的sources.list
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list -
执行Update
sudo apt-get update -
安装Jenkins及依赖
# 安装最新版本 sudo apt-get install jenkins # 安装指定jenkins版本 sudo apt-get install jenkins=2.138.1
3、启动Jenkins
-
使用systemctl启动jenkins
sudo systemctl start jenkins -
查看Jenkins运行状态
sudo systemctl status jenkins如果Jenkins正常运行将返回下图 (active):
4、设置Jenkins
Jenkins成功运行之后, 将开启8080端口(可在配置文件更改), 我们在浏览器输入 ip:8080, 即可访问到Jenkins页面
-
输入原始密码
首次访问Jenkins会看到下图, 提示你输入Jenkin原始密码:
从途中提示可以看到原始密码存放在 /var/lib/jenkins/secrets/initialAdminPassword 文件, 在终端中输入
sudo cat /var/lib/jenkins/secrets/initialAdminPassword获取密码后复制到浏览器密码表格中. -
安装插件
输完密码之后会跳转到安装插件得界面, 选择第一个安装建议的插件:
点击安装之后等待插件安装完成:
-
创建用户
插件安装完成之后会跳转到创建新用户的界面:
虽然可以使用上面的原始密码作为admin用户登录, 但建议新建一个用户
用户创建完成之后, 会提示 Jenkins is ready!, 点击Start using Jenkins 进入到Jenkins界面
到此, Jenkins就部署完成了
三、创建第一个构建任务
1、创建任务
-
点击Jenkins首页的新建:
-
输入任务名, 选择自由风格的项目, 点击确认:
2、配置任务
任务创建之后, 进入到配置界面,可以看到配置界面主要有六部分组成: General、源码管理、构建触发器、构建环境、构建、构建后操作
-
General
配置一些任务的基本信息, 名称、描述、旧版本管理等
-
源码管理
配置你的代码仓库, 配置用户名密码(私有仓库), 选择分支:
-
构建触发器
-
触发远程构建 (例如,使用脚本)
该选项会提供一个接口,可以用来在代码层面触发构建
-
Build after other projects are built
在某个项目构建之后构建
-
Build periodically
周期性的构建。很好理解,就是每隔一段时间进行构建。日程表类似 linux crontab书写格式。如下图的设置,表示每隔30分钟进行一次构建
-
GitHub hook trigger for GITScm polling
当有更改push到gitlab代码仓库,即触发构建。后面会有一个触发构建的地址,一般被称为webhooks。需要将这个地址配置到gitlab中,webhooks如何配置后面介绍。这个是常用的构建触发器
-
Poll SCM
该选项是配合上面这个选项使用的。当代码仓库发生改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发生改动
-
-
构建环境
构建环境就是构建之前的一些准备工作
-
构建
构建步骤, 这里有很多选项, 如执行windows批命令、执行shell命令、使用Ant构建工具等, 按需选择
-
构建后操作
构建之后的操作, 常用的就是打开报告, 发生构建结果到邮箱等操作, 按需选择配置
3、构建任务
任务创建成功之后, 在任务界面, 点击 Build Now 即可开始构建当前任务.
4、更换主题
Jenkins默认的主题比较老了, 我们使用 Simple Theme 插件来实现主题更换
1、安装Simple Theme 插件
在Jenkins插件管理里搜索 Simple Theme, 点击安装
2、生成自定义主题css文件
打开 afonsof.com/jenkins-mat… 网站, 选择自己想要的颜色, 并上传logo之后, 点击下载
将下载的css文件上传到jenkins_home目录下的userContent/material/下(没有material请自行创建),如: workspace/userContent/material/jenkins-material-theme-green.css
3、选择主题
Jenkins 系统设置里选择 Theme 选择 CSS URL, 配置css文件url:
点击保存之后刷新页面, 主题切换成功