.Net Core 自动化部署:使用jenkins部署应用

Posted 指尖的时光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.Net Core 自动化部署:使用jenkins部署应用相关的知识,希望对你有一定的参考价值。

安装docker版jenkins

因为 jenkinsdocker版本本身没有 dotnetcore的环境,所以我们需要先自己动手制作下包含 dotnet环境的 jenkins DockerContainer

Dockerfile

 
   
   
 
  1. FROM jenkins/jenkins

  2. # Switch to root to install .NET Core SDK

  3. USER root

  4. # Show distro information!

  5. RUN uname -a && cat /etc/*release

  6. # Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current

  7. # Install dependency for .NET Core 2

  8. RUN apt-get update

  9. RUN apt-get install -y curl libunwind8 gettext apt-transport-https

  10. # Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current

  11. # Install microsoft.qpg

  12. RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg

  13. RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg

  14. RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'

  15. # Install the .NET Core framework

  16. RUN apt-get update

  17. RUN apt-get install -y dotnet-sdk-2.1.4

  18. # Switch back to the jenkins user.

  19. USER jenkins

为了方便我已经把配置信息放到了github上大家可以访问直接使用

https://github.com/YahuiWong/jenkins-dotnet-core

使用步骤

初始化docker环境

 
   
   
 
  1. git clone https://github.com/YahuiWong/jenkins-dotnet-core.git

  2. cd jenkins-dotnet-core

  3. sh init.sh

  4. docker-compose up -d

初始化配置jenkins

  1. Open ip:8080 on the browser


  2. vi jenkins_home/secrets/initialAdminPassword & Set the initialAdminPassword string to your jenkins page


至此安装完毕。

配置 jenkins构建 dotent core的任务

构建一个自由风格的软件项目

配置源码管理资料

.Net Core 自动化部署:使用jenkins部署应用

配置构建脚本

如下图步骤添加打包脚本.Net Core 自动化部署:使用jenkins部署应用

打包脚本示例

 
   
   
 
  1. echo '============查看打包环境================'

  2. pwd

  3. ls

  4. echo $PATH

  5. whoami

  6. which dotnet

  7. dotnet --info

  8. dotnet --version

  9. echo '============================begin restore======================================='

  10. dotnet restore

  11. echo '============================end restore======================================='

  12. echo '============================cd project======================================='

  13. cd ./您的项目路径

  14. echo '============================begin build======================================='

  15. dotnet build # 为了生成XML注释文件 用于swagger注释

  16. rm -rf $WORKSPACE/jenkins_publish

  17. mkdir $WORKSPACE/jenkins_publish

  18. dotnet publish -c:Release -o $WORKSPACE/jenkins_publish # 如果针对给定运行时发布项目带上-r 如:-r centos.7-x64

  19. cp ./bin/Debug/netcoreapp2.0/您的项目路径.xml $WORKSPACE/jenkins_publish/ # 拷贝swagger注释

  20. echo '============================end build======================================='

配置发布途径

发布插件 PublishOverFTP使用说明

我这里使用的是 jenkinsPublishOverFTP插件,安装好此插件之后在 系统管理->系统设置->Publish over FTP 里可以新增一个你要发布的ftp服务器信息。为了保证ftp可以正常连接建议尝试下右下角的 TestConfiguration确认 success

上面我们已经配置好 PublishOverFTP要用的ftp账号,新增我们新增构建后操作如下图选择此插件.Net Core 自动化部署:使用jenkins部署应用

然后选择配置好的ftp选项,配置如下所示.Net Core 自动化部署:使用jenkins部署应用

注意:这里的配置信息中 jenkins_publish是和打包脚本对应的

保存打包任务

立即构建

点击立即构建之后,把构建任务开始进行中.Net Core 自动化部署:使用jenkins部署应用

如果想看的实时的构建信息可以点击如下图看到控制台输出

构建完毕

重点说明

Nuget配置说明

 
   
   
 
  1. <?xml version="1.0" encoding="utf-8"?>

  2. <configuration>

  3.  <packageSources>

  4.    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />

  5.    <add key="nuget.cnblogs.com" value="https://nuget.cnblogs.com/v3/index.json" />

  6.    <add key="dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" value="https://dotnet.myget.org/F/aspnetcore-dev/ap

  7. i/v3/index.json" />

  8.    <add key="192.168.1.32:9001/nuget" value="http://192.168.1.32:9001/nuget" />

  9.  </packageSources>

  10.  <packageRestore>

  11.    <add key="enabled" value="True" />

  12.    <add key="automatic" value="True" />

  13.  </packageRestore>

  14.  <bindingRedirects>

  15.    <add key="skip" value="False" />

  16.  </bindingRedirects>

  17.  <packageManagement>

  18.    <add key="format" value="0" />

  19.    <add key="disabled" value="False" />

  20.  </packageManagement>

  21. </configuration>

发布iis站点时,文件被占用

可以先用ftp插件上传一个 app_offline.htm文件,部署完站点之后删除此文件 具体参考:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.1#app_offlinehtm


以上是关于.Net Core 自动化部署:使用jenkins部署应用的主要内容,如果未能解决你的问题,请参考以下文章

Gogs + Jenkins + Docker 自动化部署 .NET Core

.NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成自动化部署)

最详细之教你Jenkins+github自动化部署.Net Core程序到Docker

Jenkins + Docker + ASP.NET Core自动化部署

Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署

Jenkins + Docker + ASP.NET Core自动化部署