jenkins教程
标签(空格分隔): jenkins CI/CD 持续集成 持续部署 持续交付
作者:杨贤宾
日期:2019-01-16
一、CI/CD介绍
1.持续集成(Continuous Integration ,CI)
概念:
持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
目的:
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
需要具备的条件:
- 全面的自动化测试。这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也极其重要;
- 灵活的基础设施。容器,虚拟机的存在让开发人员和 QA 人员不必再大费周折;
- 版本控制工具。如 Git,CVS,SVN 等;
- 自动化的构建和软件发布流程的工具,如 Jenkins,flow.ci;
- 反馈机制。如构建/测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本.
流程:
- 提交
- 测试(第一轮)
- 构建
- 测试(第二轮)
- 部署
- 回滚(出现问题)
2.持续交付(Continuous Delivery,CD)
概念:
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中。给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
目的:
持续交付用来确保让代码能够快速、安全的部署到产品环境中,它通过将每一次改动都提交到一个模拟产品环境中,使用严格的自动化测试,确保业务应用和服务能符合预期。
持续交付的好处:
- 快速发布。能够应对业务需求,并更快地实现软件价值。
- 编码->测试->上线->交付的频繁迭代周期缩短,同时获得迅速反馈;
- 高质量的软件发布标准。整个交付过程标准化、可重复、可靠,
- 整个交付过程进度可视化,方便团队人员了解项目成熟度;
- 更先进的团队协作方式。从需求分析、产品的用户体验到交互 设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费。
3.持续部署(Continuous Deployment,CD)
概念:
持续部署(continuous deployment)是持续交付的下一步或者说更高阶段,指的是代码通过评审以后(或者是通过自动化测试以后),自动部署到生产环境。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。它也可以被称为“Continuous Release”。 大多数的公司如果没有制度的约束或其它条件的影响,都应该以持续部署为目标。
目标:
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
有很多的业务场景里,一种业务需要等待另外的功能特征出现才能上线,这使得持续部署成为不可能。虽然使用功能切换能解决很多这样的情况,但并不是每次都会这样。所以,持续部署是否适合你的公司是基于你们的业务需求——而不是技术限制。
4.组成(DevOps)
「持续集成(ContinuousIntegration)」、「持续交付(Continuous Delivery)」和「持续部署(Continuous Deployment)」提供了一个优秀的 DevOps 环境,对于整个团队来说,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分。
二、实例介绍
1.实例效果
- 程序自动部署
- 环境一键部署
2.搭建环境准备
- centos
- MySQL
- github账号(码云gitee账号)
- java开发工具
3.流程介绍
- Jenkins基础知识
- 应用服务器准备(部署项目介绍)
- Jenkins自动化部署任务开发
- 代码修改&一键发布测试环境
三、Jenkins基础知识
启动安装:
在官网上下载war包,然后本地安装java环境变量
java -jar jenkins.war #启动war包
- 启动后配置Jenkins初始化密码
- 安装推荐建议的插件(时间可能较长)
- 创建用户
- finish
Jenkins插件安装(可选插件)
- rebuilder
- safe restart
Jenkins安全配置
系统管理 > 全局安全配置 > 用户配置 > 安全矩阵
四、应用部署服务器准备
部署于centos中(java环境)(Windows环境同理)
- 确定IP可以访问
- 确定登录用户密码,能够远程链接
- 关闭防火墙
1.安装并配置git
yum -y install git
git version #查看git版本,确定是否安装成功
2.git初始化设置
git config --global user.name "杨贤宾"
git config --global user.email "yangxbjy@163.com"
#生成授权证书(可一路回车默认)
ssh-keygen -t rsa -C "yangxbjy@163.com"
#连接码云,查看是否正常
ssh git@gitee.com
3.maven配置
- 安装并配置maven
- 下载并解压
- 修改配置文件
vim /etc/profile
新增
export MAVEN_HOME=/root/apache-maven-3.6.0
export PATH=$MAVEN_HOME/bin:$PATH
执行配置文件的修改
source /etc/profile
查看maven是否成功配置
mvn -version
4.tomcat配置
安装配置TOMCAT
chmod a+x -R . #赋予权限
5.jenkins节点配置(可选)
将Linux注册到Jenkins上(部署从节点,可选)
回到节点列表,点击节点,然后启动节点(根据日志查看启动情况)
6.新建测试任务
接着回到Jenkins主页,新建测试任务(打印IP信息)
然后查看任务的执行日志
7.准备测试项目
准备好一个简单的maven web项目,提交到gitee上
8.jenkins安装gitee插件
前往 Manage Jenkins -> Manage Plugins -> Available
右侧 Filter 输入: Gitee
下方可选列表中勾选 Gitee(如列表中不存在 Gitee,则点击 Check now 更新插件列表)
点击 Download now and install after restart
8.jenkins配置gitee插件
1.添加码云链接配置
- 前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections
- 在 Connection name 中输入 Gitee 或者你想要的名字
- Gitee host URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)
- Credentials 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins
- Domain 选择 Global credentials
- Kind 选择 Gitee API Token
- Scope 选择你需要的范围
- Gitee API Token输入你的码云私人令牌,获取地址:
https://gitee.com/profile/personal_access_tokens
- ID, Descripiton 中输入你想要的 ID 和描述即可。
- Credentials 选择配置好的 Gitee APIV5 Token
- 点击 Advanced ,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持),并可设置链接测超时时间(适您的网络环境而定)
- 点击 Test Connection 测试链接是否成功,如失败请检查以上 3,5,6 步骤。
配置成功后如图所示:
2.源码管理配置
(不介绍,可无)
3.触发器配置
前往任务配置的触发器构建: Configure -> Build Triggers 选项卡
Enabled Gitee triggers
勾选您所需要的构建触发规则,如Push Event
,Opened Merge Request Events
,勾选的事件会接受WebHook,触发构建。目前支持触发事件有:- Push Events :推送代码事件
- Opened Merge Request Events :提交 PR 事件
- Updated Merge Request Events :更新 PR 事件
- Accepted Merge Request Events :接受/合并 PR 事件
- Closed Merge Request Events :关闭 PR 事件
- Approved Pull Requests : 审查通过 PR 事件
- Tested Pull Requests :测试通过 PR 事件
- Enable [ci-skip]
该选项可以开启支持
[ci-skip]指令,只要
commit message中包含
[ci-skip]`,当前commit 即可跳过构建触发。 Ignore last commit has build
该选项可以跳过已经构建过的 Commit 版本。Allowed branches
可以配置允许构建的分支,目前支持分支名和正则表达式的方式进行过滤。Secret Token for Gitee WebHook
该选项可以配置 WebHook 的密码,该密码需要与码云 WebHook配置的密码一致方可触发构建。- 注意:若 PR 状态为不可自动合并,则不触发构建。
4.构建后配置
前往任务配置的构建后配置: Configure -> Post-build Actions 选项卡
构建结果回评至码云
- 点击 Add post-build action 下拉框选择:Add note with build status on Gitee pull requests
- Advanced 中可以配置:
- Add message only for failed builds :仅为构建失败回评到码云
- 自定义各状态的回评内容(内容可以引用 Jenkins 的环境变量,或者自定义的环境变量)
- 若开启该功能,还可将不可自动合并的状态回评至码云
构建成功自动合并PR
点击 Add post-build action 下拉框选择:Accept Gitee pull request on success
5.新建码云仓库WebHook
进入源码管理配置中设置的码云仓库中,进入 管理 -> WebHooks
- 添加 WebHook, URL 填写
触发器配置:Build when a change is pushed to Gitee. Gitee webhook URL
中所示 URL,如:http://127.0.0.1:8080/jenkins/project/fu(由jenkins部署地址决定) - 密码填写:触发器配置第 5 点中配置的 WebHook密码,不设密码可以不填
- 勾选 PUSH, Pull Request
6.用户日志支持
- 前往 Jenkins -> Manage Jenkins -> System Log
- 点击 Add new log recorder。
- 输入 ‘Gitee Jenkins Plugin’。
- 在下一页面中 Logger 点击 Add ,输入框中填写 ‘com.gitee.jenkins’,并在 Log level 总选择全部,保存。
- 完成以上步骤后便可在 ‘Gitee Jenkins Plugin’ 这个日志中查看。
9.测试自动构建
- 进入jenkins任务,点击立即构建,然后查看构建日志,进行问题排查
- 访问自定义接口,查看返回值
- 修改代码,然后提交至gitee
- 查看后台是否已经重新启动
- 再次访问自定义接口,看是否构建成功
构建成功后可以查看构建历史,以及时间等信息。到此,搭建自动化部署已完成,svn也是类似的处理。