Azure DevOps+Docker+Asp.NET Core 實現CI/CD(二.建立CI持續整合管道)
本文主要是講解如何使用Azure DevOps+Docker 來實現持續整合Asp.NET Core專案(當然 也可以是任意專案).
上一篇:
Azure DevOps+Docker+Asp.NET Core 實現CI/CD(一 .簡介與建立自己的代理池)
覺得有幫助的朋友~可以左上角點個關注,右下角點個推薦
今天我們廢話不多說 直接開始正文
正文
昨天我們建立了自己的代理伺服器(其實也可以用Azure提供的免費代理伺服器,就是要排隊,而且比較慢,限制比較多..)
今天我們來講講如何建立自己的持續整合管道.
今天大致的流程圖如下:
1. 建立私有Docker Registry
首先我們需要到自己需要持續整合的伺服器上 安裝Docker Registry來獲取我們的docker image
安裝Docker..我這就不說了.主要講講如何安裝Docker Registry
直接拉取registry映象:
docker pull registry
檢視是否存在映象:
拉取到映象後,我們直接Run 命令:
docker run -itd -v /data/registry:/var/lib/registry -p 8082:5000 --restart=always --name registry registry:latest
這裡的8082是你對映外網的埠.
執行命令檢視是否執行成功:
curl http://127.0.0.1:8082/v2/_catalog
這裡顯示{}就表示執行成功了,我這個是因為有專案了...所以打碼了..
(注意:正式環境的Docker Registry部署請設定使用者密碼,畢竟是對外的埠)
2. 建立Service connections(服務連線)
點選專案下的配置按鈕:
找到Service connections
建立一個新的連線, 這裡我們選擇上一步建立的Docker Registry
填寫剛剛建立好的Docker Registry地址與密碼.
這一步就算完成了,下一步我們將來使用它.
3. 建立持續整合管道
我們找到Pipelines選單
點選建立新的管道
選擇自己的專案程式碼託管的地方,這裡我們選擇上篇文章程式碼提交的地方Azure Repos Git
選中自己需要整合的專案:
配置管道,我們選擇Docker
選擇專案中的dockerFile檔案位置:
我測試專案的DockerFile檔案如下,大家可自行參考(純空專案啥也沒有):
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build RUN mkdir -p /app WORKDIR /src COPY . . RUN dotnet restore "WebApplication1.csproj" RUN dotnet build "WebApplication1.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "WebApplication1.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "WebApplication1.dll"]
編輯配置我們的Pipeline YAML(這裡開始,很重要):
將預設的Pool名改為我們昨天自行建立配置的Pool
修改為
建立持續整合的步驟Steps,點選右邊的按鈕可以開啟圖形化配置介面
這裡我們新增三個步驟如下(這是我自己的配置,各位請通過下面的圖形化配置 新增自己的步驟):
steps: - task: Docker@2 inputs: containerRegistry: 'TestDocker' command: 'login' - task: Docker@2 inputs: containerRegistry: 'TestDocker' repository: '$(Build.Repository.Name)' command: 'build' Dockerfile: '$(Build.SourcesDirectory)/WebApplication1/WebApplication1/Dockerfile' - task: Docker@2 inputs: containerRegistry: 'TestDocker' repository: '$(Build.Repository.Name)' command: 'push'
登陸,buid 最後Push我們的映象.
新增好步驟之後,我們直接儲存我們的管道.
4. 提交程式碼檢視是否持續整合
我們修改一下首頁的程式碼,並提交到Master主幹:
可以發現,我們的管道已經監控到了主幹的變化,開始執行
可以看到,管道自動push了版本號為42的映象.
我們上持續整合伺服器看看,有沒有.
持續整合成功!
後記
我們下一篇來講如何CD 持續部署與持續交