日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用Azure DevOps Pipeline实现.Net Core程序的CD

發布時間:2023/12/4 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Azure DevOps Pipeline实现.Net Core程序的CD 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一次我們講了使用Azure DevOps Pipeline實現.Net Core程序的CI。這次我們來演示下如何使用Azure DevOps實現.Net Core程序的CD。

實現本次目標我們除了Azure DevOps外還需要:

  • 一臺安裝了Docker的主機

  • 一個 Docker Hub 賬號

  • 上一次我們的CI實現了:
    發布>編譯>單元測試
    這次我們要實現剩下的幾個步驟:
    生成鏡像>推送鏡像>部署

    創建Docker鏡像倉庫

    我們生成的鏡像需要有個存放的地方。各大云廠商其實都有這種服務,這次直接使用Docker Hub提供的公共倉庫服務。

    創建一個倉庫名叫:azdevoptest。

    創建Dockerfile

    我們的代碼創建為鏡像需要一個Dockerfile來描述如何構建這個鏡像。在項目根目錄下新建一個文件命名為Dockerfile注意不帶任何后綴名。以下為Dockerfile的內容:

    FROM mcr.microsoft.com/dotnet/core/sdk:3.1-bionic AS build WORKDIR /app COPY /. /app RUN dotnet restore WORKDIR /app/devops_test RUN dotnet publish -o ./out -c Release EXPOSE 5000 ENTRYPOINT ["dotnet", "out/devops_test.dll"]

    配置Servic Connections

    選擇ProjectSetting菜單,選擇Service connections。Service connections用來存儲跟外部服務相關的賬號密碼等信息,這里我們需要配置2個service。

  • Docker Hub的信息

  • 主機SSH的信息

  • 配置Docker Registry service

    我們的pipeline需要給Docker hub推送鏡像,所以需要一些必要的信息,比如賬號密碼等信息。

    點擊"New Service"找到Docker Register項目點擊下一步

    選擇DockerHub,填寫對應的賬號密碼

    配置SSH service

    我們的pipeline在完成鏡像推送后需要通過SSH登錄到主機運行命令把新的鏡像跑起來。

    填寫主機IP端口等信息。

    修改pipeline

    上次我們的pipeline已經定義好了CI的步驟,這次需要在上次的基礎上繼續完善CD的功能。

    BuildAndPush Task

    找到上次的pipeline選擇編輯功能,在右邊的Task列表里找到DockerTask,點擊出現配置界面

    在Container register里選擇前面在service connections配置的docker-hub服務。

    repository填寫我們在docker hub上新建的倉庫:kklldog/azdevoptest 。注意:倉庫名稱要把用戶名寫全了不然推不上去。

    tags填寫:latest 。

    command:選擇buildAndPush 。build跟push本是兩步操作,這里直接合并為一步。

    SSH Task

    添加完BuildAndPush Task后同樣的方法再次添加SSH Task。

    SSH service connection里選擇前面我們配置好的ssh service。

    Run 這里選擇Commands。
    Commands 填寫需要執行的命令:

    docker rm -f az_devop_testdocker rmi -f kklldog/az_devop_testdocker pull kklldog/az_devop_testdocker run -d -p 5000:5000 --name az_devop_test kklldog/az_devop_test

    簡單解釋下這個命令:
    刪除運行的容器;刪除鏡像;拉取最新的鏡像;使用新的鏡像運行一個容器。

    完整的pipeline

    到此我們的pipeline已經配置好了,以下是完整的pipeline.yml代碼。

    # ASP.NET Core (.NET Framework) # Build and test ASP.NET Core projects targeting the full .NET Framework. # Add steps that publish symbols, save build artifacts, and more: # https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core trigger: - master pool:vmImage: 'ubuntu-18.04' variables:solution: '**/*.sln'buildPlatform: 'Any CPU'buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2inputs:command: 'restore' - task: DotNetCoreCLI@2displayName: Buildinputs:command: buildprojects: '**/*.csproj'arguments: '--configuration $(buildConfiguration)' - task: DotNetCoreCLI@2inputs:command: testprojects: '**/*Tests/*.csproj'arguments: '--configuration $(buildConfiguration)' - task: Docker@2inputs:containerRegistry: 'docker-hub'repository: 'kklldog/az_devop_test'command: 'buildAndPush'Dockerfile: '**/Dockerfile'tags: latest - task: SSH@0inputs:sshEndpoint: 'azvm-ssh'runOptions: 'commands'commands: |docker rm -f az_devop_testdocker rmi -f kklldog/az_devop_testdocker pull kklldog/az_devop_testdocker run -d -p 5000:5000 --name az_devop_test kklldog/az_devop_testreadyTimeout: '20000'

    運行一下

    手動運行一個這個pipeline,點擊pipeline可以看到實時的日志,等到最后可以看到每一步都成功了,說明我們的pipeline配置成功了。

    訪問一下容器對應的端口,我們的網站已經可以訪問了。修改一下代碼,然后提交,每次都會自動部署最新的代碼到主機。

    總結

    以上通過2篇文章簡單的介紹了Azure DevOps Pipeline如何實現CICD功能。Azure DevOps Pipeline給我的感覺是比較易用的,配置yml其實都是圖形化的上手難度會比較小。另外它跟Github有深入的集成,可以使用Github的賬號直接登錄。況且它還是個免費服務,大家可以試試。

    關注公眾號一起玩轉技術

    總結

    以上是生活随笔為你收集整理的使用Azure DevOps Pipeline实现.Net Core程序的CD的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。