.Net Core 自動化部署:使用docker版jenkins部署dotnetcore應用


安裝docker版jenkins

因為jenkinsdocker版本本身沒有 dotnetcore的環境,所以我們需要先自己動手制作下包含dotnet環境的jenkins Docker Container

Dockerfile

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 [arch=amd64] 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

為了方便我已經把配置信息放到了github上大家可以訪問直接使用

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

使用步驟

初始化docker環境

git clone https://github.com/YahuiWong/jenkins-dotnet-core.git
cd jenkins-dotnet-core
sh init.sh
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的任務

構建一個自由風格的軟件項目

jenkins-docker-dotnet-core-publish-201853118046

配置源碼管理資料

jenkins-docker-dotnet-core-publish-201853118236

注意:初次配置的話 需要在 添加一個可以訪問代碼地址的 Credentials

配置構建腳本

如下圖步驟添加打包腳本
jenkins-docker-dotnet-core-publish-201853118512

打包腳本示例

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======================================='

配置發布途徑

發布插件Publish Over FTP使用說明

我這里使用的是 jenkinsPublish Over FTP插件,安裝好此插件之后在 系統管理->系統設置->Publish over FTP 里可以新增一個你要發布的ftp服務器信息。為了保證ftp可以正常連接建議嘗試下右下角的Test Configuration確認success

上面我們已經配置好Publish Over FTP要用的ftp賬號,新增我們新增構建后操作如下圖選擇此插件
jenkins-docker-dotnet-core-publish-2018531182746

然后選擇配置好的ftp選項,配置如下所示
jenkins-docker-dotnet-core-publish-2018531183019

注意:這里的配置信息中 jenkins_publish是和打包腳本對應的

保存打包任務

立即構建

點擊立即構建之后,把構建任務開始進行中
jenkins-docker-dotnet-core-publish-2018531184031

如果想看的實時的構建信息可以點擊如下圖看到控制台輸出
jenkins-docker-dotnet-core-publish-2018531184219

構建完畢

打開部署站點地址,發現站點已經運行起來了

jenkins-docker-dotnet-core-publish-2018531184328

重點說明

Nuget配置說明

如果您的.NET CORE項目使用的了第三方或者自建nuget服務,您需要在 配置下 jenkins_home/.nuget/NuGet/NuGet.Config的信息
如我的使用了國內博客園的nuget加速地址和自建的nuget服務配置如下

<?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>

發布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

轉載請注明出處 http://blog.yahui.wang/2018/05/31/jenkins-docker-dotnet-core-publish/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM