上篇已介紹了.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
  • 建立釋出,部署應用

  • 部署應用



  • 發現部署成功

  • 訪問應用,部署成功