Tip: 此篇已加入.NET Core微服务基础系列文章索引

一、CI, CD 与Jenkins

  互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) => 持续集成指的是,频繁地(一天多次)将代码集成到主干

  它的好处主要有两个:

    • 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
    • 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

  持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。与持续集成相关的,还有持续交付和持续部署。

  持续交付指的是:频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的

  持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。它强调的是代码在任何时刻都是可部署的,可以进入生产阶段

Martin Fowler 说:“持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”  

  Jenkins 是一款流行的开源持续集成(CI)与持续部署(CD)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。官方网站:http://jenkins-ci.org/

  使用Jenkins的目的在于:

  (1)持续、自动地构建/测试软件项目。 
  (2)监控软件开放流程,快速问题定位及处理,提升开发效率。

  这里废话不多说了,更多内容,可以参考这一篇文章《不甘寂寞的Jenkins:从持续集成到持续部署

二、Jenkins的基础安装

PS: 这里采用的是基于CentOS7.x的安装方式,非Docker安装。

2.1 安装Java环境

  这里参考晓晨Master的《CentOS7安装Java环境(JDK1.8)》,不再赘述安装步骤,最终验证效果:

  

  Tip:里面需要注意的是为jdk创建软链接!

2.2 安装Git

yum install git

2.3 安装Jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

yum install jenkins 

  安装完成后提示信息:

  

  默认安装后的端口绑定的是8080,如果你想更改请进入文件编辑JENKINS_PORT属性项。

vim /etc/sysconfig/jenkins

  如果你使用的是root用户(没有单独创建一个jenkins的用户),那么建议进入上面的配置文件编辑JENKINS_USER属性项将jenkins改为root。

  

2.4 配置Jenkins

  (1)修改目录权限:

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

  Tip:在 Shell 中,可以使用chown命令来改变文件所有者。chown命令是change owner(改变拥有者)的缩写。-R代表进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组,常常用在更改某一目录的情况。

  (2)重启Jenkins服务

service jenkins restart
ps -ef | grep jenkins

  提示信息如下图所示:

  

  PS:启动Jenkins

systemctl start jenkins

  验证启动状态:

systemctl status jenkins

  

2.5 初始化Jenkins

  (1)访问http://xxxx:8080/进行Jenkins的解锁

  

  可以通过下面的命令查看管理员密码:

cat /var/lib/jenkins/secrets/initialAdminPassword

  

  然后把这个密码复制到Web界面中的文本框中去进入下一步

  (2)自定义Jenkins => 这里选择安装推荐的插件

  

  双击之后进入安装过程,耐心等待:

  

  (3)创建管理账户 => 也可以直接使用admin账户继续

  

  (4)安装完成

  

  (5)Jenkins主界面

  

  至此,Jenkins的基本安装与配置就到此结束,下一篇我们会结合ASP.NET Core与Docker来一个持续部署的实例。

三、小结

  本篇简单介绍了一下持续集成、持续交付与持续部署的基本概念,然后介绍了如何在CentOS7.x下安装Jenkins并初始化Jenkins。下一篇会会结合ASP.NET Core、GitHub与Docker来一个持续部署的实例。

参考资料

佚名,《什么是持续集成?该怎么做?

宋潇男,《不甘寂寞的Jenkins:从持续集成到持续部署

晓晨Master,《ASP.NET Core & Docker & Jenkins零基础持续集成

dev_zh,《安装Jenkins遇到的坑

作者:周旭龙

出处:http://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

.NET Core微服务之基于Jenkins+Docker实现持续部署(Part 1)的更多相关文章

  1. .NET Core微服务之基于Ocelot实现API网关服务

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.啥是API网关? API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口.这样就可以明显的简化客户端 ...

  2. .NET Core微服务之基于Ocelot实现API网关服务(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.负载均衡与请求缓存 1.1 负载均衡 为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientServic ...

  3. .NET Core微服务之基于Consul实现服务治理

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发 ...

  4. .NET Core微服务之基于Exceptionless实现分布式日志记录

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Exceptionless极简介绍 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,AS ...

  5. .NET Core微服务之基于Apollo实现统一配置中心

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.关于统一配置中心与Apollo 在微服务架构环境中,项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改 ...

  6. .NET Core微服务之基于Steeltoe使用Hystrix熔断保护与监控

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  7. .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  8. .NET Core微服务之基于Steeltoe使用Zipkin实现分布式追踪

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  9. .NET Core微服务之基于Consul实现服务治理(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 上一篇发布之后,很多人点赞和评论,不胜惶恐,这一篇把上一篇没有弄到的东西补一下,也算是给各位前来询问的朋友的一些回复吧. 一.Consul ...

随机推荐

  1. BZOJ_3238_[Ahoi2013]差异_后缀数组+单调栈

    BZOJ_3238_[Ahoi2013]差异_后缀数组+单调栈 Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao ...

  2. b2OJ_1565_[NOI2009]植物大战僵尸_拓扑排序+最大权闭合子图

    b2OJ_1565_[NOI2009]植物大战僵尸_拓扑排序+最大权闭合子 题意:n*m个植物,每个植物有分数(可正可负),和能保护植物的位置.只能从右往左吃,并且不能吃正被保护着的,可以一个不吃,求 ...

  3. BZOJ_1342_[Baltic2007]Sound静音问题_单调队列

    BZOJ_1342_[Baltic2007]Sound静音问题_单调队列 题意: 给出n个数,求∑[ max{a[i]~a[i+m-1]} - min{a[i]~a[i+m-1]} <= c ] ...

  4. Python + Appium 【已解决】driver(session)在多个class之间复用,执行完一个类的用例,再次执行下个类的用例时不需要初始化

    实现效果:打开App进行自动化测试,只需打开APP一次,按先后顺序执行n个py文件中的相应操作,实现自动化测试. 示例:如截图示例,一个App,根据此APP内不同的模块,写成了不同的py文件, 预期结 ...

  5. 利用css+原生js制作简易钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  6. 【重学计算机】操作系统D6章:并发程序设计

    1. 并发程序的基本概念 程序顺序性 内部顺序性:CPU严格按照顺序执行指令 外部顺序性:程序员设计程序时往往用顺序设计的思想 顺序程序特性 程序执行的顺序性 计算环境的封闭性: 程序执行时犹如独占资 ...

  7. es6学习笔记-class之继承

    继承 上一篇学习了class的概念,在es5时,对象的继承有好几种,原型链继承,借用构造函数继承,组合继承,原型式继承,寄生式继承以及寄生组合式继承,都是按照函数的形式去集成的,现在class也有它的 ...

  8. spring源码 — 四、MVC

    spring mvc是怎么实现的?为什么我们只需要在方法上写一个注解,就可以通过http访问这个接口?下面我们分3部分来解答这两个问题 注意:本文是基于spring4.3.2的 spring mvc整 ...

  9. 设计模式 | 工厂方法模式(factory method)

    定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 结构:(书中图,侵删) 一个工厂的抽象接口 若干个具体的工厂类 一个需要创建对象的抽象接口 若干个 ...

  10. 关于elementUi tab组件路由跳转卡死问题

    好久没来了,周五项目终于要上线了(*^▽^*),上线之前测出一个很恶心的bug真真是... 项目:Vue + elementUi   后台管理项目 问题描述:登录后首次通过侧边栏路由跳转到主页面有ta ...