Azure 實踐(4)- CI/CD .netcore項目Docker構建及部署
- 2021 年 9 月 18 日
- 筆記
- Azure DevOps
上篇已介紹了.netcore項目構建的相關步驟,本篇繼續完善
1、什麼是CI/CD
CI/CD 中的「CI」始終指持續集成,它屬於開發人員的自動化流程。成功的 CI 意味著應用程式碼的新更改會定期構建、測試併合併到共享存儲庫中。該解決方案可以解決在一次開發中有太多應用分支,從而導致相互衝突的問題。
CI/CD 中的「CD」指的是持續交付和/或持續部署,這些相關概念有時會交叉使用。兩者都事關管道後續階段的自動化,但它們有時也會單獨使用,用於說明自動化程度。
2、Azure Devops創建鏡像註冊連接
-
通過項目設置,創建新的服務連接
-
選擇Docker Registry,點下一步
-
填寫docker hub用戶驗證資訊及伺服器連接名稱,點驗證,看到成功
3、編輯Azure Devops管道資訊,添加推送鏡像操作
-
添加設置對應的鏡像倉庫資訊
4、保存管道資訊,退出編輯,重新運行管道
-
運行管道,報錯資訊如下,denied: requested access to the resource is denied
解決方法:參考//sample.blog.csdn.net/article/details/70156144
添加鏡像前綴tag
-
再次運行管道,管道執行成功,備註:docker hub中國訪問較慢
-
登入docker hub,發現多了一個鏡像,說明構建推送鏡像成功
5、新建發布管道,部署應用
-
創建發布管道
-
新建一個空作業
-
添加項目資訊
-
添加階段,命名部署應用,隨意
-
想代理作業中添加任務,選擇ssh連接應用主機,執行命令
-
參考腳本:
#!/bin/bash name="netcoreapp01" cid=`docker inspect --format '{{.Id}}' ${name} 2>/dev/null` if [[ ${#cid} -gt 0 ]]; then docker stop $name docker rm $name echo "successed deleted container ${name}" fi imageid=`docker images --format {{.ID}} $name` echo "準備刪除舊鏡像${imageid}" if [[ ${#imageid} -gt 0 ]]; then docker rmi -f $imageid echo "successed deleted old image ${name}" fi logfile="/var/log/servicelog/$name" if [[ ! -x "$logfile" ]]; then mkdir -p "$logfile" echo "已成功創建日誌文件夾" else echo "文件存夾已存在" fi docker pull hub.docker.com/repository/docker/xjk27400861/coreapp3:$(Build.BuildId) docker tag hub.docker.com/repository/docker/xjk27400861/coreapp3:$(Build.BuildId) coreapp3:$(Build.BuildId) docker run -it -d -p 8002:80 --name netcoreapp01 --privileged=true coreapp3:$(Build.BuildId) docker logs netcoreapp01
-
創建發布,部署應用
-
部署應用
-
發現部署成功
-
訪問應用,部署成功