Windows系統下使用Jenkins 自動發佈 .NET core到Linux平臺下Docker

  1. 準備工做(安裝過程能夠百度,已安裝的能夠跳過)

a)     安裝Jenkins,安裝包下載地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/windows-stable/jenkins-2.73.1.ziplinux

b)     安裝 .NET core SDK,官網地址:https://www.microsoft.com/net/core#windowscmdweb

c)      Linux 服務器一臺而且安裝好 Dockerdocker

d)     好壓軟件,下載地址:http://sw.bos.baidu.com/sw-search-sp/software/027b0d91ba34c/haozip_5.9.4.10795.exe。注意這不是廣告,咱們用他來壓縮咱們本地發佈好的源碼,由於他支持cmd命令,固然你也能夠用其餘的代替。爲了讓它支持cmd命令咱們還須要修改一下本地環境變量,右鍵【個人電腦】->【高級系統設置】->【高級】->【環境變量設置】->選擇系統變量【Path】->點擊【編輯】->點擊【新建】,把好壓的安裝目錄放進去。我好壓的安裝目錄是:C:\Program Files\2345Soft\HaoZipwindows

圖例:瀏覽器

 

 

  1. 檢查環境是否就緒

a)     Jenkins瀏覽器打開是否正常,默認打開地址:http://localhost:8080/服務器

b)     檢查.NET core SDK是否安裝好, 打開命令窗口,輸入【dotnet】命令回車,會出來基本信息單元測試

圖例:學習

 

 

c)      檢查 Linux 服務器一臺而且安裝好 Docker,鏈接Linux命令窗口輸入【docker】,出來不少信息就對了。測試

圖例:ui

 

 

d)     檢查好壓軟件是否安裝好,windows下打開命令窗口,輸入【HaoZipC】,會出現說明。

圖例:

 

 

 

  1. 總體思路大綱

a)     本地運行單元測試(沒有能夠跳過)->發佈->上傳linux服務器->生成docker鏡像->docker容器運行

  1. 開始幹活

a)     安裝Jenkins插件,瀏覽器打開Jenkins,默認地址:http://localhost:8080/,進入【系統管理-】>插件管理->可選插件->輸入插件名稱->勾選須要插件->點擊【直接安裝】。

須要安裝的插件:

Hudson SCP publisher plugin 上傳文件插件

Publish Over SSH 鏈接liunx服務器執行名稱插件

Environment Injector Plugin 之定義變量存放插件

圖例:

 

 

b)     Jenkins插件設置,進入系統管理->系統設置,

找到【SCP repository hosts】上傳插件設置位置:

Hostname:遠程liunx服務器 IP地址

Port:端口(默認22)

Root Repository Path:文件存放目錄

User Name:登入用戶名

Password/Passphrase:密碼

圖例:

 

 

找到【SSH Servers】鏈接liunx服務器插件設置:

Name:別名,能夠結合業務取

Hostname:遠程liunx服務器 IP地址

Username:登入用戶名

Remote Directory:鏈接默認工做目錄

Passphrase / Password:密碼

Port:鏈接端口(默認22)

圖例:

 

 

【點擊高級按鈕】

【勾選】Use password authentication, or use a different key

 

 

c)      建立項目,點擊【新建】->輸入項目名稱->選擇【構建一個自由風格的軟件項目】->點擊【OK】

圖例:

 

 

 

d)     配置項目,點擊【源代碼管理】->選擇【Subversion】

圖例:

 

 

選擇【構建環境】->勾選【Inject environment variables to the build process】,存放變量能夠不用

圖例:

 

 

選擇【構建】->點擊【增長構建步驟】->選擇【Execute Windows batch command】

圖例:

 

 

如今開始咱們能夠按照思路大綱來寫命令了。

1,運行測試腳本:

:: 切換CMD編碼

chcp 65001

:: 切換目錄

cd ./Boss.Web.Test/

:: 還原nuget包

dotnet restore

:: 運行測試

dotnet test

圖例:

 

 

2,發佈壓縮打包命令

:: 切換CMD編碼

chcp 65001

:: 切換目錄

cd ./Boss.Web/

:: 還原nuget包

dotnet restore

:: 編譯

dotnet build

:: 刪除以前發佈文件

cd ./bin

rd /s /q web-publish

del web-publish.zip

cd ..

:: 發佈

dotnet publish -o ./bin/web-publish

:: 刪除配置文件

cd ./bin/web-publish

rd /s /q config

cd ..

:: 壓縮 好壓軟件

HaoZipC a -tzip web-publish.zip "web-publish\*" -r

圖例:

 

 

到這邊本地構建工做作完了。

 

選擇【構建後操做】->點擊【增長構建後操做步驟】->選擇【Publish artifacts to SCP Repository】,準備上傳文件到服務器

圖例:

 

 

下拉選擇要上傳服務器地址(剛纔配置過的都在裏面),點擊【增長】,第一個上傳的是咱們的源代碼壓縮包,第二個是咱們要生成docker的依賴文件

圖例:

 

 

文件目錄查看

 

 

上傳文件好了,接下來咱們須要遠程鏈接到linux服務器

選擇【構建後操做】->點擊【增長構建後操做步驟】->選擇【Send build artifacts over SSH】

圖例:

 

 

遠程鏈接linux執行批處理命令,這個批處理命令咱們須要2個。

1,處理以前發佈內容,而且建立新docker鏡像( ${自定義變量},能夠換成字符)。

# 工做目錄

WORK_DIR="/root/boss-deploy/web/";

cd ${WORK_DIR}

# 刪除原有發佈文件夾

rm -rf web-publish;

# 解壓

unzip -o web-publish.zip

#刪除文件壓縮包

rm -f web-publish.zip;

#複製Dockerfile文件,到源碼目錄下

cp Dockerfile web-publish/Dockerfile

#切換生成目錄

cd web-publish/

#備份鏡像

#中止容器

docker stop ${DOCKER_CONTAINER_NAME};

#刪除容器

docker rm ${DOCKER_CONTAINER_NAME};

#刪除鏡像

docker rmi $(docker images | grep ${DOCKER_IMAGE_NAME} | awk '{print $3}' | sort -r);

#建立鏡像

docker build -t ${DOCKER_IMAGE_NAME}:${BOSS_VERSION}${SVN_REVISION} ./;

圖例:

 

 

2,依賴剛建立的鏡像,運行容器

#運行容器命令

docker run -d -v 服務器目錄:docker內部目錄 -p 8001:8001 --name 容器名稱 鏡像名稱:鏡像版本(沒有特定版本能夠不要)

圖例:

 

 

到此點擊【保存】,因此的配置就完成了。

 

 

返回首頁看到剛配置好的數據,點擊後面的構建就好了。

 

本文章到這裏就結束了,我也是第一次研究,若是有問題能夠留言,你們相互學習進步,謝謝!

相關文章
相關標籤/搜索