上篇已介紹了.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
解決方法:參考https://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
建立釋出,部署應用
部署應用
發現部署成功
訪問應用,部署成功