Azure 實踐(4)- CI/CD .netcore項目Docker構建及部署

上篇已介紹了.netcore項目構建的相關步驟,本篇繼續完善

1、什麼是CI/CD

CI/CD 中的「CI」始終指持續集成,它屬於開發人員的自動化流程。成功的 CI 意味著應用程式碼的新更改會定期構建、測試併合併到共享存儲庫中。該解決方案可以解決在一次開發中有太多應用分支,從而導致相互衝突的問題。
CI/CD 中的「CD」指的是持續交付和/或持續部署,這些相關概念有時會交叉使用。兩者都事關管道後續階段的自動化,但它們有時也會單獨使用,用於說明自動化程度。

2、Azure Devops創建鏡像註冊連接

  • 通過項目設置,創建新的服務連接

    image

  • 選擇Docker Registry,點下一步

    image

  • 填寫docker hub用戶驗證資訊及伺服器連接名稱,點驗證,看到成功

    image

3、編輯Azure Devops管道資訊,添加推送鏡像操作

  • 添加設置對應的鏡像倉庫資訊

    image
    image

4、保存管道資訊,退出編輯,重新運行管道

  • 運行管道,報錯資訊如下,denied: requested access to the resource is denied

    image

    解決方法:參考//sample.blog.csdn.net/article/details/70156144
    添加鏡像前綴tag

    image

  • 再次運行管道,管道執行成功,備註:docker hub中國訪問較慢

    image

  • 登入docker hub,發現多了一個鏡像,說明構建推送鏡像成功

    image

5、新建發布管道,部署應用

  • 創建發布管道

    image

  • 新建一個空作業

    image

  • 添加項目資訊

    image

  • 添加階段,命名部署應用,隨意

    image
    image

  • 想代理作業中添加任務,選擇ssh連接應用主機,執行命令

    image
    image
    image

  • 參考腳本:
      #!/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
    
  • 創建發布,部署應用

    image

  • 部署應用

    image
    image

  • 發現部署成功

    image

  • 訪問應用,部署成功

    image