持续集成
持续集成 (Continuous Integration):频繁的(一天多次的)将所有开发者的工作合并到主干上。
- 1.开发人员提交代码到 Source Repository(源代码仓库)
- 2.通过 git hook 等触发 CI Server(持续集成服务器)的相关功能。
- 3.执行 编译 -> 测试 -> 输出结果 的流程,向开发人员反馈结果的 report
可以看出,持续集成的 核心 在于 确保新增的代码能够与原先代码正确的集成。与后续要介绍的持续交付以及持续部署,其最主要的差别也就在于其目标不同。
-
易于定位错误:每一次的代码集成都需要执行相关的测试工作,持续集成频繁的集成次数天然的将复杂的代码逻辑切割为了小块,也就使得每一次测试中遇到的错误能够更加容易的被定位;
-
易于控制开发流程:更为细致的工作提交也就意味着更容易判断当前的工作进度,这对于管理者规划开发流程而言提供了一个有效的参考,同时也为开发人员省下了汇报工作的时间;
-
易于 CodeReview:对于大块工作的切分自然也有助于做 CodeReview;
-
易于减少不必要的工作:build 以及 test 过程的自动化可以为你节约一大票的时间,从而投入到有价值的工作中去。
持续交付
持续交付 (Continuous Delivery):频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
可以看到,与 持续集成 相比较,持续交付 添加了 Test -> Staging -> Production 的流程,也就是为新增的代码添加了一个保证: 确保新增的代码在生产环境中是可用的 。
参考资料:
https://blog.csdn.net/qq_35368183/article/details/84558134
jenkins
谈到持续集成、持续交付,必然绕不开 jenkins
- 免费的开源平台
- 常用于持续集成、持续交付及自动化测试项目
- 基于 Java 开发,可以跨平台运行
- 插件丰富,支持各种扩展,可以玩不少东西
- 优势很多,最大优势是使用广泛,因为用的人多,贡献的插件多
jenkins 的三种启动方式
war 包直接启动
- 命令行直接启动: java -jar jenkins.war --httpPort=8081
- jenkins 服务地址为:http://{ip}:8081/
从 Tomcat 中启动
- 准备一台 tomcat 服务器
- 将 jenkins.war 复制到 $tomcat_home/webapps/下
- 启动 tomcat
- jenkins 服务地址 http://:/jenkins
注意事项:
- Tomcat 的启动条件,需要在本地配置好 java 运行时环境
- 如果端口冲突,需要在 config/server.xml 中修改对应的端口,避开冲突(tomcat 默认使用 8080 端口)
- 启动 tomcat: bin/startup.sh
- 停止 tomcat: bin/shutdown.sh
- 日志文件在 logs/catalina.out
docker 启动
前面的一个帖子单独写了 https://testerhome.com/topics/22843
docker 初始化
- Jenkins 启动之后需要先输入 initialAdminPassword
- 初始化密码的存放位置:/secrets/initialAdminPassword,启动日志里也会打印
- 复制出来之后,密码输入Getting Started Jenkins 启动首页对话框中
- 推荐安装建议的插件(有些会失败,可以跳过后续再安装)
- 配置 Jenkins 管理员用户