赞
踩
微服务因为船小好调头, 可以很方便快速地更新升级, 所以它才会大行其道
从持续集成到持续交付, 工程师一直在下面这个循环里周而复始, 目的无非一个 -- 尽可能快速地交付有价值的产品给用户.
持续集成(CI)是一种开发实践,是指开发人员每天多次将代码整合到共享的代码库中, 然后通过自动化构建验证每次提交,使团队能够及早发现问题。
Martin Fowler 总结了持续集成的几条最佳实践
而持续续交付(CD)是指通过自动化在比较短的一个个迭代中快速发布软件的做法,允许团队更频繁地交付可以工作的软件产品。 其重点--持续整合,内置测试,持续监控和分析反馈都指向软件行业的整体趋势:提高应变能力。持续交付是持续集成的扩展和目标。
如果你的测试持续在运行,并且你充分信任您的测试可以提供足够的质量保证,这样你就可以在任何时候发布软件产品。 持续交付并不总是意味着交付,它代表了一种哲学和承诺,确保您的代码始终处于发布就绪状态。
度量开发与交付的关键指标有两个:
发布频率
微服务部署并运行于产线上的频率, 通常用次/天, 次/周, 次/月来衡量, 频率不是越高越好, 为了保持产品的稳定性, 不必强求每天在产线上部署发布, 根据需要可以随时部署, 从持续改进的角度出发, 每周和每月是比较合适的频率.
它取决于上述所述的代码质量度量指标, 还取决于编译和打包速度, 测试和速度和效率, 以及部署和配置和速度等下级度量指标
发布周期
发布周期是指代码从提交到代码仓库到发布到产线所经历的时间, 这个时间取决于在开发中过程中所经过的那些关键步骤所花费的时间, 这是几年前我在为一个项目所画的构建流水线图
我在两年前做的一个项目中画的持续交付的流程图:
每次构建,分析,测试和部署都必须有详细的记录和报告,有利于追溯,分析和改进持续交付的流程
现在的持续集成工具中, jenkins 是事实上的标准, 尤其它的 pipeline 插件已经定义了这些标准过程
https://hub.docker.com/_/jenkins/
让我们利用 Docker 先来构建一个 Jenkins
- FROM jenkins:2.46.3
-
- MAINTAINER Walter Fan
-
- USER root
-
- RUN mkdir /var/log/jenkins
- RUN mkdir /var/cache/jenkins
- RUN chown -R jenkins:jenkins /var/log/jenkins
- RUN chown -R jenkins:jenkins /var/cache/jenkins
- USER jenkins
-
- ENV JAVA_OPTS="-Xmx1596m"
docker build -t jenkins-image .
- docker run --restart always -v /workspace/jenkins:/var/jenkins_home -p 8080:8080 -p 50000:50000 --name=jenkins-container -d jenkins-image
-
Jenkins 非常强大, 使用方法也很庞杂,这里不做赘述, 另外再做详述. 重点谈谈它的 Pipeline 插件.
我们说的部署流水线, 主要就是通过它来完成的, 步骤如下
Branch Sources 无非就是 git 或 svn 的代码仓库地址, 用户名和密码, 分支名
Build Configuration : Jenkinsfile
Jenkinsfile是重点, 它包含了大多数流水线的设置. 其他的没有什么之处
流水线提供一系列可扩展的工具, 以 流水线领域专用语言(Pipeline DSL) 代码描述了从简单到复杂的交付流程
- pipeline {
- agent any
-
- stages {
- stage('Build') {
- steps {
- sh 'make'
- }
- }
- stage('Test'){
- steps {
- sh 'make check'
- junit 'reports/**/*.xml'
- }
- }
- stage('Deploy') {
- steps {
- sh 'make publish'
- }
- }
- }

应用程序发布 docker image ,直接部署 docker image,可以省去大量环境配置
代码静态检查之利器,还有非java语言的 cppcheck,lint, pylint 等等
Elastic Search, Kibana, Logstash 服务器Log 收集和分析三件宝
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。