.NET Core微服务之基于Jenkins+Docker实现持续部署(Part 1)
<p><em><strong>Tip:</strong> </em>此篇已加入.NET Core微服务基础系列文章索引</p><h1>一、CI, CD 与Jenkins</h1>
<p><img style="display: block; margin-left: auto; margin-right: auto; width: 446px; height: 259px" src="https://images2015.cnblogs.com/blog/46653/201612/46653-20161230152143648-2113509642.png" alt="" width="600" height="264"></p>
<p> 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) <strong>=></strong> 持续集成指的是,<strong><span style="text-decoration: underline">频繁地(一天多次)将代码集成到主干</span></strong>。</p>
<p> 它的好处主要有两个:</p>
<ul>
<li style="list-style-type: none">
<ul>
<li><strong>快速发现错误</strong>。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。</li>
<li><strong>防止分支大幅偏离主干</strong>。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。</li>
</ul>
</li>
</ul>
<p> 持续集成的目的,就是<strong><span style="text-decoration: underline">让产品可以快速迭代,同时还能保持高质量</span></strong>。与持续集成相关的,还有持续交付和持续部署。</p>
<p> 持续交付指的是:<strong><span style="text-decoration: underline">频繁地将软件的新版本,交付给质量团队或者用户,以供评审</span></strong>。如果评审通过,代码就进入生产阶段。它强调的是,<span style="text-decoration: underline"><strong>不管怎么更新,软件是随时随地可以交付的</strong></span>。</p>
<p><img style="display: block; margin-left: auto; margin-right: auto" title="CD" src="https://images2015.cnblogs.com/blog/46653/201612/46653-20161230152159039-1261178652.png" alt="" width="600" height="444"></p>
<p> 持续部署是持续交付的下一步,指的是<span style="text-decoration: underline"><strong>代码通过评审以后,自动部署到生产环境</strong></span>。它强调的是<span style="text-decoration: underline"><strong>代码在任何时刻都是可部署的,可以进入生产阶段</strong></span>。</p>
<p><img style="display: block; margin-left: auto; margin-right: auto" title="CD" src="https://images2015.cnblogs.com/blog/46653/201612/46653-20161230152211445-454212849.png" alt="" width="600" height="444"></p>
<blockquote>
<p>Martin Fowler 说:“持续集成并不能消除 Bug,而是让它们非常容易发现和改正。” </p>
</blockquote>
<p><img style="display: block; margin-left: auto; margin-right: auto; width: 500px; height: 130px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180808233203683-1020834546.jpg" alt=""></p>
<p> Jenkins 是一款流行的开源持续集成(CI)与持续部署(CD)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。官方网站:http://jenkins-ci.org/。</p>
<p> 使用Jenkins的目的在于:</p>
<p> (1)持续、自动地构建/测试软件项目。 <br> (2)监控软件开放流程,快速问题定位及处理,提升开发效率。</p>
<p> 这里废话不多说了,更多内容,可以参考这一篇文章《不甘寂寞的Jenkins:从持续集成到持续部署》</p>
<h1>二、Jenkins的基础安装</h1>
<p><em><strong>PS:</strong> 这里采用的是基于CentOS7.x的安装方式,非Docker安装。</em></p>
<h2>2.1 安装Java环境</h2>
<p> 这里参考晓晨Master的《CentOS7安装Java环境(JDK1.8)》,不再赘述安装步骤,最终验证效果:</p>
<p> <img style="width: 472px; height: 58px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180808235109410-570041600.png" alt=""></p>
<p> <em><strong>Tip:</strong></em>里面需要注意的是为jdk创建软链接!</p>
<h2>2.2 安装Git</h2>
<div class="cnblogs_code">
<pre>yum install git</pre>
</div>
<h2>2.3 安装Jenkins</h2>
<div class="cnblogs_code">
<pre>sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/<span style="color: rgba(0, 0, 0, 1)">jenkins.repo
sudo rpm </span>--import https://pkg.jenkins.io/redhat-stable/<span style="color: rgba(0, 0, 0, 1)">jenkins.io.key
yum install jenkins </span></pre>
</div>
<p> 安装完成后提示信息:</p>
<p> <img style="width: 353px; height: 73px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811201712260-1771925479.png" alt=""></p>
<p> 默认安装后的端口绑定的是8080,如果你想更改请进入文件编辑JENKINS_PORT属性项。</p>
<div class="cnblogs_code">
<pre>vim /etc/sysconfig/jenkins</pre>
</div>
<p> 如果你使用的是root用户(没有单独创建一个jenkins的用户),那么建议进入上面的配置文件编辑JENKINS_USER属性项将jenkins改为root。</p>
<p> <img style="width: 445px; height: 145px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811205843160-386941117.png" alt=""></p>
<h2>2.4 配置Jenkins</h2>
<p> (1)修改目录权限:</p>
<div class="cnblogs_code">
<pre>chown -R root:root /var/lib/<span style="color: rgba(0, 0, 0, 1)">jenkins
chown </span>-R root:root /var/cache/<span style="color: rgba(0, 0, 0, 1)">jenkins
chown </span>-R root:root /var/log/jenkins</pre>
</div>
<p> <em><strong>Tip:</strong></em>在 Shell 中,可以使用chown命令来改变文件所有者。chown命令是change owner(改变拥有者)的缩写。-R代表进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组,常常用在更改某一目录的情况。</p>
<p> (2)重启Jenkins服务</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">service jenkins restart
ps </span>-ef | grep jenkins</pre>
</div>
<p> 提示信息如下图所示:</p>
<p> <img style="width: 510px; height: 57px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811203111546-1294008495.png" alt=""></p>
<p> <em><strong>PS:</strong></em>启动Jenkins</p>
<div class="cnblogs_code">
<pre>systemctl start jenkins</pre>
</div>
<p> 验证启动状态:</p>
<div class="cnblogs_code">
<pre>systemctl status jenkins</pre>
</div>
<p> <img style="width: 690px; height: 207px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811210151056-1582701958.png" alt=""></p>
<h2>2.5 初始化Jenkins </h2>
<p> (1)访问http://xxxx:8080/进行Jenkins的解锁</p>
<p> <img style="width: 630px; height: 246px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811210025802-71037086.png" alt=""></p>
<p> 可以通过下面的命令查看管理员密码:</p>
<div class="cnblogs_code">
<pre>cat /var/lib/jenkins/secrets/initialAdminPassword</pre>
</div>
<p> <img style="width: 610px; height: 34px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811210534975-380920088.png" alt=""></p>
<p> 然后把这个密码复制到Web界面中的文本框中去进入下一步</p>
<p> (2)自定义Jenkins => 这里选择<strong>安装推荐的插件</strong></p>
<p> <img style="width: 601px; height: 329px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811211001096-365052532.png" alt=""></p>
<p> 双击之后进入安装过程,耐心等待:</p>
<p> <img style="width: 605px; height: 316px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811211129360-2078977399.png" alt=""></p>
<p> (3)创建管理账户 => 也可以直接使用admin账户继续</p>
<p> <img style="width: 609px; height: 356px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811211451922-1844826971.png" alt=""></p>
<p> (4)安装完成</p>
<p> <img style="width: 609px; height: 356px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811211640373-171417062.png" alt=""></p>
<p> (5)Jenkins主界面</p>
<p> <img style="width: 720px; height: 325px" src="https://images2018.cnblogs.com/blog/381412/201808/381412-20180811211918275-1344126078.png" alt=""></p>
<p> 至此,Jenkins的基本安装与配置就到此结束,下一篇我们会结合ASP.NET Core与Docker来一个持续部署的实例。</p>
<h1>三、小结</h1>
<p> 本篇简单介绍了一下持续集成、持续交付与持续部署的基本概念,然后介绍了如何在CentOS7.x下安装Jenkins并初始化Jenkins。下一篇会会结合ASP.NET Core、GitHub与Docker来一个持续部署的实例。</p>
<h1>参考资料</h1>
<p>佚名,《什么是持续集成?该怎么做?》</p>
<p>宋潇男,《不甘寂寞的Jenkins:从持续集成到持续部署》</p>
<p>晓晨Master,《ASP.NET Core & Docker & Jenkins零基础持续集成》</p>
<p>dev_zh,《安装Jenkins遇到的坑》</p>
<p> </p>
<div id="Copyright">
<p>作者:周旭龙</p>
<p>出处:http://edisonchou.cnblogs.com</p>
<p>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。</p>
</div>
</div>
<div id="MySignature" role="contentinfo">
<div align="center"><img border="0" src="http://service.t.sina.com.cn/widget/qmd/2068032061/d643d182/10.png"></div><br><br>
来源:https://www.cnblogs.com/edisontalk/p/CD_foundation_based_on_jenkins_and_docker.html
頁:
[1]