.NET Core微服务之基于Jenkins+Docker实现持续部署(Part 1)
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遇到的坑》
.NET Core微服务之基于Jenkins+Docker实现持续部署(Part 1)的更多相关文章
- .NET Core微服务之基于Ocelot实现API网关服务
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.啥是API网关? API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口.这样就可以明显的简化客户端 ...
- .NET Core微服务之基于Ocelot实现API网关服务(续)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.负载均衡与请求缓存 1.1 负载均衡 为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientServic ...
- .NET Core微服务之基于Consul实现服务治理
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发 ...
- .NET Core微服务之基于Exceptionless实现分布式日志记录
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Exceptionless极简介绍 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,AS ...
- .NET Core微服务之基于Apollo实现统一配置中心
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.关于统一配置中心与Apollo 在微服务架构环境中,项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改 ...
- .NET Core微服务之基于Steeltoe使用Hystrix熔断保护与监控
Tip: 此篇已加入.NET Core微服务基础系列文章索引 => Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...
- .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
Tip: 此篇已加入.NET Core微服务基础系列文章索引 => Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...
- .NET Core微服务之基于Steeltoe使用Zipkin实现分布式追踪
Tip: 此篇已加入.NET Core微服务基础系列文章索引 => Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...
- .NET Core微服务之基于Consul实现服务治理(续)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 上一篇发布之后,很多人点赞和评论,不胜惶恐,这一篇把上一篇没有弄到的东西补一下,也算是给各位前来询问的朋友的一些回复吧. 一.Consul ...
随机推荐
- loj6045 「雅礼集训 2017 Day8」价
我们考虑最小割. 我一开始觉得是裸的最小割,就直接S到每个减肥药连up+p[i]的边,减肥药到药材连inf边,药材到T连up,然后得到了40分的好成绩. 之后我发现这是一个假的最小割,最小割割的是代价 ...
- bzoj 2759一个动态树好题
真的是动态树好题,如果把每个点的父亲设成p[x],那么建出来图应该是一个环套树森林,拆掉一条边,就变成了动态树,考虑维护什么,对于LCT上每个节点,维护两组k和b,一组是他到他父亲的,一组是他LCT子 ...
- bzoj 2005 能量采集 莫比乌斯反演
我们要求的是∑ni=1∑mj=1(2×gcd(i,j)−1) 化简得2×∑ni=1∑mj=1gcd(i,j)−n×m 所以我们现在只需要求出∑ni=1∑mj=1gcd(i,j)即可 ∑ni=1∑mj= ...
- Java开源生鲜电商平台-安全设计与架构(源码可下载)
Java开源生鲜电商平台-安全设计与架构(源码可下载) 说明:Java开源生鲜电商平台是一个B2B的生鲜电商平台,由于是APP的一种模式,所以安全方面一般会思考以下几个维度: 1.数据安全. 2.传输 ...
- 【爆料】-《维多利亚大学毕业证书》Victoria一模一样原件
☞维多利亚大学毕业证书[微/Q:865121257◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归& ...
- JavaWeb学习总结(转载)
JavaWeb学习总结(五十三)--Web应用中使用JavaMail发送邮件 JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件 JavaWeb学习总结(五十 ...
- nginx日志模块及日志定时切割
一:作用 Ngx_http_log_module:定义日志格式,并且以指定的格式保存. 二:示例配置 log_format compression '$remote_addr - $remote_us ...
- 深度学习之Batch Normalization
在机器学习领域中,有一个重要的假设:独立同分布假设,也就是假设训练数据和测试数据是满足相同分布的,否则在训练集上学习到的模型在测试集上的表现会比较差.而在深层神经网络的训练中,当中间神经层的前一层参数 ...
- asp.net core 3.0 gRPC框架小试
什么是gRPC gRPC是google开源的一个高性能.跨语言的RPC框架,基于HTTP2协议,采用ProtoBuf 定义的IDL. gRPC 的主要优点是: 现代高性能轻量级 RPC 框架. 协定优 ...
- 面试题-浅谈JavaScript中的This指向问题
各位小伙伴在面试中被面试官问道this指向问题一定不少吧,同时还被问道apply,call和bind的用法区别,现在,就来简单的聊一聊this到底指向何方. 1.基本概念 MDN的官方解释:与其他语言 ...