吕建华 發表於 2018-3-22 23:56:00

ASP.NET Core + Docker +Jenkins 实现持续集成

<h2 id="必读">必读</h2>
<p>本文为 docker-compose 方式,但自从 Visual Studio 2017 15.8 版本更新以后,通过VS添加的 Docker 支持默认就只有 Dockerfile 了,所以最新版本Docker相关的操作方式请参见这篇文章:https://www.cnblogs.com/stulzq/p/9201830.html</p>
<h2 id="准备">准备</h2>
<p>我们需要在容器内使用docker-compose,所以我们需要先进容器安装docker-compose。</p>
<p>通过命令进入容器:</p>
<pre><code class="language-shell">docker exec -it jenkins /bin/bash
</code></pre>
<p>docker-compsoe的安装请查看官方文档:https://docs.docker.com/compose/install/#install-compose</p>
<p>1.新建一个ASP.NET Core MVC应用程序:</p>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180322231802064-1785857801.png" alt="" loading="lazy"></p>
<blockquote>
<p>需要勾选<code>Docker</code>支持</p>
</blockquote>
<p>2.将其上传到git:</p>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180322232054413-808811849.png" alt="" loading="lazy"></p>
<p>3.建立Jenkins任务</p>
<p>(1)选择“新建任务”,输入任务名称,选择“自由风格项目”,然后点击确定:</p>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180322232242642-836201043.png" alt="" loading="lazy"></p>
<p>(2)选择“源代码管理”,填入我们的git地址</p>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180322232715290-1879880043.png" alt="" loading="lazy"></p>
<p>输入<code>H/2 * * * *</code>设置两分钟拉取一次</p>
<p>(3)构建环境</p>
<p>勾上 <code>Delete workspace before build start</code> 是设置构建前删除工作区</p>
<p>勾上 <code>Abort the build if it's stuck</code> 是设定构建的超时时间,如果构建使用的时间超过设定的时间,那么就认为这次的构建是失败的。笔者这里超时设置的是10分钟</p>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180322232806954-231454633.png" alt="" loading="lazy"></p>
<p>(4)增加一个Execute Shell 脚本,并填写以下脚本内容</p>
<pre><code class="language-shell">
#!/bin/bash
# 获取短版本号

GITHASH=`git rev-parse --short HEAD`
echo ---------------Remove-Orphans------------------
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml-p webapplication6 down --rmi local --remove-orphans
echo ------------------Config-----------------------
docker-compose -f ./docker-compose.ci.build.yml -p webapplication6 config
echo ------------------Build------------------------
docker-compose -f ./docker-compose.ci.build.yml -p webapplication6 up --build
echo ---------------Publishing...------------------
docker-compose -f "./docker-compose.yml" -f "./docker-compose.override.yml"-p webapplication6 up -d --build

echo ---------------Clear-Images...------------------
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "No need to clean up images."
else
docker rmi $(docker images -f "dangling=true" -q)
echo "clear success."
fi
echo ---------------Clear-Containers...------------------
docker rm webapplication6_ci-build_1

</code></pre>
<blockquote>
<p>2018.4.24 加入镜像和容器清理命令,所以上面的脚本和下图不一样,以上面的shell脚本为准</p>
</blockquote>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180322235330132-302939413.png" alt="" loading="lazy"></p>
<p>应用保存,回到项目界面上。点击立即构建进行部署工作</p>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180322235356010-14605310.png" alt="" loading="lazy"></p>
<p>我们可以查看控制台输出:</p>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180323101639767-6327744.png" alt="" loading="lazy"></p>
<p>待构建成功以后访问url(你的ip:端口)试试效果。</p>
<blockquote>
<p>不知道端口的可以通过命令<code>docker ps</code>查看</p>
</blockquote>
<p><img src="https://images2018.cnblogs.com/blog/668104/201803/668104-20180323102023151-906855697.png" alt="" loading="lazy"></p>
<p>参考文章:</p>
<p>http://www.cnblogs.com/LongJiangXie/p/7517909.html<br>
https://www.cnblogs.com/myzony/p/8434121.html</p>


</div>
<div id="MySignature" role="contentinfo">
    <blockquote>
<strong>目前学习.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程</strong>
</blockquote><br><br>
来源:https://www.cnblogs.com/stulzq/p/8627824.html
頁: [1]
查看完整版本: ASP.NET Core + Docker +Jenkins 实现持续集成