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


  1. 准備工作(安裝過程可以百度,已安裝的可以跳過)

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

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

c)      Linux 服務器一台並且安裝好 Docker

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

圖例:

 

 

  1. 檢查環境是否就緒

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

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

圖例:

 

 

c)      檢查 Linux 服務器一台並且安裝好 Docker,連接Linux命令窗口輸入【docker】,出來很多信息就對了。

圖例:

 

 

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 容器名稱 鏡像名稱:鏡像版本(沒有特定版本可以不要)

圖例:

 

 

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

 

 

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

 

本文章到這里就結束了,我也是第一次研究,如果有問題可以留言,大家相互學習進步,謝謝!

 


免責聲明!

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



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