- 准備工作(安裝過程可以百度,已安裝的可以跳過)
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
圖例:


- 檢查環境是否就緒
a) Jenkins瀏覽器打開是否正常,默認打開地址:http://localhost:8080/。
b) 檢查.NET core SDK是否安裝好, 打開命令窗口,輸入【dotnet】命令回車,會出來基本信息
圖例:

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

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

- 整體思路大綱
a) 本地運行單元測試(沒有可以跳過)->發布->上傳linux服務器->生成docker鏡像->docker容器運行
- 開始干活
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 容器名稱 鏡像名稱:鏡像版本(沒有特定版本可以不要)
圖例:

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

返回首頁看到剛配置好的數據,點擊后面的構建就行了。
本文章到這里就結束了,我也是第一次研究,如果有問題可以留言,大家相互學習進步,謝謝!
