.Net Core 自动化部署:使用docker版jenkins部署dotnetcore应用
<h1 id="安装docker版jenkins">安装docker版jenkins</h1><blockquote>
<p>因为<code>jenkins</code>的<code>docker</code>版本本身没有 <code>dotnetcore</code>的环境,所以我们需要先自己动手制作下包含<code>dotnet</code>环境的<code>jenkins</code> <code>Docker Container</code></p>
</blockquote>
<p><code>Dockerfile</code></p>
<pre><code class="language-docker">FROM jenkins/jenkins
# Switch to root to install .NET Core SDK
USER root
# Show distro information!
RUN uname -a && cat /etc/*release
# Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install dependency for .NET Core 2
RUN apt-get update
RUN apt-get install -y curl libunwind8 gettext apt-transport-https
# Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install microsoft.qpg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
RUN sh -c 'echo "deb https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'
# Install the .NET Core framework
RUN apt-get update
RUN apt-get install -y dotnet-sdk-2.1.4
# Switch back to the jenkins user.
USER jenkins
</code></pre>
<p>为了方便我已经把配置信息放到了github上大家可以访问直接使用</p>
<p>https://github.com/YahuiWong/jenkins-dotnet-core</p>
<p>使用步骤</p>
<h2 id="初始化docker环境">初始化docker环境</h2>
<pre><code class="language-sh">git clone https://github.com/YahuiWong/jenkins-dotnet-core.git
cd jenkins-dotnet-core
sh init.sh
docker-compose up -d
</code></pre>
<h2 id="初始化配置jenkins">初始化配置jenkins</h2>
<ol>
<li>
<p>Open ip:8080 on the browser</p>
</li>
<li>
<p>vi jenkins_home/secrets/initialAdminPassword & Set the initialAdminPassword string to your jenkins page</p>
</li>
</ol>
<p>至此安装完毕。</p>
<h1 id="配置jenkins构建dotent-core的任务">配置<code>jenkins</code>构建<code>dotent core</code>的任务</h1>
<h2 id="构建一个自由风格的软件项目">构建一个自由风格的软件项目</h2>
<p><img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-201853118046.png"></p>
<h2 id="配置源码管理资料">配置源码管理资料</h2>
<p><img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-201853118236.png"></p>
<blockquote>
<p>注意:初次配置的话 需要在 添加一个可以访问代码地址的 <code>Credentials</code></p>
</blockquote>
<h2 id="配置构建脚本">配置构建脚本</h2>
<p>如下图步骤添加打包脚本<br>
<img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-201853118512.png"></p>
<p>打包脚本示例</p>
<pre><code class="language-SH">echo '============查看打包环境================'
pwd
ls
echo $PATH
whoami
which dotnet
dotnet --info
dotnet --version
echo '============================begin restore======================================='
dotnet restore
echo '============================end restore======================================='
echo '============================cd project======================================='
cd ./您的项目路径
echo '============================begin build======================================='
dotnet build # 为了生成XML注释文件 用于swagger注释
rm -rf $WORKSPACE/jenkins_publish
mkdir $WORKSPACE/jenkins_publish
dotnet publish -c:Release -o $WORKSPACE/jenkins_publish # 如果针对给定运行时发布项目带上-r 如:-r centos.7-x64
cp ./bin/Debug/netcoreapp2.0/您的项目路径.xml $WORKSPACE/jenkins_publish/ # 拷贝swagger注释
echo '============================end build======================================='
</code></pre>
<h2 id="配置发布途径">配置发布途径</h2>
<h3 id="发布插件publish-over-ftp使用说明">发布插件<code>Publish Over FTP</code>使用说明</h3>
<blockquote>
<p>我这里使用的是 <code>jenkins</code>的<code>Publish Over FTP</code>插件,安装好此插件之后在 <em>系统管理->系统设置->Publish over FTP</em> 里可以新增一个你要发布的ftp服务器信息。为了保证ftp可以正常连接建议尝试下右下角的<code>Test Configuration</code>确认<code>success</code></p>
</blockquote>
<p>上面我们已经配置好<code>Publish Over FTP</code>要用的ftp账号,新增我们新增构建后操作如下图选择此插件<br>
<img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-2018531182746.png"></p>
<p>然后选择配置好的ftp选项,配置如下所示<br>
<img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-2018531183019.png"></p>
<blockquote>
<p>注意:这里的配置信息中 <code>jenkins_publish</code>是和打包脚本对应的</p>
</blockquote>
<h2 id="保存打包任务">保存打包任务</h2>
<h2 id="立即构建">立即构建</h2>
<p>点击立即构建之后,把构建任务开始进行中<br>
<img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-2018531184031.png"></p>
<p>如果想看的实时的构建信息可以点击如下图看到控制台输出<br>
<img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-2018531184219.png"></p>
<h2 id="构建完毕">构建完毕</h2>
<p>打开部署站点地址,发现站点已经运行起来了</p>
<p><img src="https://static.yahui.wang/blog/jenkins-docker-dotnet-core-publish-2018531184328.png"></p>
<h1 id="重点说明">重点说明</h1>
<h2 id="nuget配置说明">Nuget配置说明</h2>
<p>如果您的.NET CORE项目使用的了第三方或者自建nuget服务,您需要在 配置下 <code>jenkins_home/.nuget/NuGet/NuGet.Config</code>的信息<br>
如我的使用了国内博客园的nuget加速地址和自建的nuget服务配置如下</p>
<pre><code class="language-xml"><?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="nuget.cnblogs.com" value="https://nuget.cnblogs.com/v3/index.json" />
<add key="dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" value="https://dotnet.myget.org/F/aspnetcore-dev/ap
i/v3/index.json" />
<add key="192.168.1.32:9001/nuget" value="http://192.168.1.32:9001/nuget" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
<packageManagement>
<add key="format" value="0" />
<add key="disabled" value="False" />
</packageManagement>
</configuration>
</code></pre>
<h2 id="发布iis站点时文件被占用">发布iis站点时,文件被占用</h2>
<p>可以先用ftp插件上传一个<code>app_offline.htm</code>文件,部署完站点之后删除此文件<br>
具体参考:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.1#app_offlinehtm</p>
<blockquote>
<p>转载请注明出处 http://blog.yahui.wang/2018/05/31/jenkins-docker-dotnet-core-publish/</p>
</blockquote><br><br>
来源:https://www.cnblogs.com/YahuiWang/p/jenkins-docker-dotnet-core-publish.html
頁:
[1]