一 。CI/CD介绍 
 
互联网软件开发和发布,形成了一套流程标准,分为几个阶段:编码,构建,集成,测试,交付,部署
 持续集成(continuous integration)、持续交付(continuous delivery)、持续部署(continuous deployment) 有着不同的软件自动化交付周期 
 
 1)持续集成(CI)
 
上面整个流程中最重要的组成部分就是持续集成(Continuous integration,简称CI)。
 
编码 → 构建 → 集成 → 测试
 
持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
 
它的好处主要有两个:
1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
 
持续集成并不能消除Bug,而是让它们非常容易发现和改正。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
 
 
2)持续交付
 
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
 
 持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。
 
持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。 持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
 
 
3)持续部署(CD)
 
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
 
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。 持续部署的前提是能自动化完成测试、构建、部署等步骤。
  
总的来说,持续集成、持续交付、持续部署提供了一个优秀的 DevOps 环境。对于整个开发团队来说,能很大地提升开发效率。
 
二  jenkens 介绍与安装 
 
1)Jenkins基础介绍
 Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,官网:https://jenkins.io/ 
 
(2)jenkins安装,需要先安装jdk  or  JRE    然后执行jenkins.war文件   
上传jdk和jenkins.war文件
[root@hd2 ~]# rpm -ivh jdk-8u301-linux-x64.rpm       #安装运行java所需要的jdk软件
[root@hd2 ~]# vi /etc/profile                         #配置java运行的全局环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_301-amd64          #插入如下配置
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/fre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HMOE/jre/bin:$PATH
 
[root@hd2 ~]# source  /etc/profile                    #环境变量重启
[root@hd2 ~]# java -version                            #查看java版本
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)


java -jar jenkins.war #进入上传的jenkins文件所在目录执行java -jar +war文件,来启动jenkins

(3)去浏览器输入本机ip地址,密码在启动jenkins最后时候有个password如果找不到就去这文件下找,/root/.jenkins/secrets/initialAdminPassword

 

最新文章

  1. app推送中的通知和消息区别
  2. WPF GDI+ bitmap.save 一般性错误
  3. Android带多选功能的PhotoPicker
  4. Delphi中nil和null的区别
  5. quartz的触发器CronTriggerBean 配置
  6. bzoj 3531 [Sdoi2014]旅行(树链剖分,线段树)
  7. HDFS Users Guide--官方文档
  8. JS的substr与substring的区别
  9. HDU3415:Max Sum of Max-K-sub-sequence(单调队列)
  10. Js内存泄露问题总结
  11. R语言笔记4--可视化
  12. 设计模式--代理模式(C++版)
  13. MySQL--当mysqldump --single-transaction遇到alter table(2)
  14. 关于spring的aop拦截的问题 protected方法代理问题
  15. 工厂模式的进阶复习(Factory)
  16. [dev] 刷HHKP的一般流程及常见错误(多图慎点)
  17. JsonPath如何获取JSON数据中的值
  18. 部署一个不依赖tomcat容器的应用
  19. 【maven】之打包不带版本号的问题
  20. Django的学习(六)————templates过滤器、Django shell、admin

热门文章

  1. ros中关于节点、话题、服务以及自定义消息等在终端中的常用命令
  2. Arduino 烧写bootloader
  3. 基于HTML5的网络拓扑图(1)
  4. 写了一个web os脚手架
  5. 如何形成一个完整的HTML对象
  6. vscode代码格式化快捷键及保存时自动格式化
  7. EMS邮箱数据库常用命令(二)
  8. php代码审计之——phpstorm动态调试
  9. matplotlib---Annotation标注
  10. linux lvm逻辑卷管理之lvdisplay命令