練習 - 建立 GitHub 動作以建置容器映像
在本單元中,您將完成下列工作:
- 建立 GitHub 動作以實作組建管線。
- 修改優待券服務程式代碼以觸發建置工作流程。
- 即時監視建置工作流程的進度。
建立建置動作
此程式中的 YAML 程式代碼會定義下列 GitHub 動作:
- 在將認可推送至
main分支中的優惠券服務原始程式碼或單元測試時觸發。 - 定義步驟特定的環境變數。
- 有一個名為 作業 的任務,或是在同一個工作流程執行器上執行的一組步驟,其名稱為
Build and push image to ACR。
這很重要
觸發條件和其他 GitHub Actions 或工作流程生成的檔案取決於應用程式和環境。 為了方便瞭解,在此範例中,詳細數據會保持簡單。 組建和部署工作流程的範圍都限於產品服務變更,因為所有微服務都會保留在單一存放庫之下。 在實際的生產案例中,每個微服務都會保留在自己的個別存放庫中。
完成下列步驟以建立 GitHub Actions 建置動作:
移至 GitHub 中的分支存放庫,然後選取索引 Actions 標籤。
在 Get started with GitHub Actions 頁面上,選取 set up a workflow yourself 連結。
在下一個頁面上,將下列 YAML 程式代碼貼到編輯器中。
name: Build and deploy an app to AKS on: push: branches: ["main"] workflow_dispatch: env: # Local environment variables used later in the workflow AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry' CONTAINER_NAME: 'productservice' RESOURCE_GROUP: 'rg-eshop' CLUSTER_NAME: 'aks-eshop' DEPLOYMENT_MANIFEST_PATH: './product.yml' DOCKER_PATH: './DockerfileProducts.acr' jobs: buildImage: permissions: contents: read id-token: write runs-on: ubuntu-latest steps: # Checks out the repository this file is in - uses: actions/checkout@v3 # Logs in with your Azure credentials stored in GitHub secrets - name: Azure login uses: azure/login@v1.4.6 with: creds: '${{ secrets.AZURE_CREDENTIALS }}' # Builds and pushes an image up to your Azure Container Registry - name: Build and push image to ACR run: | az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .將 Azure Container Registry 名稱 替換為您在上一個單元中建立的 ACR 名稱,例如 acseshop186748394。
將預設工作流程 main.yml 檔名取代為 azure-kubernetes-service.yml,然後選取 Commit changes。
在 [Commit changes] 畫面上,選取 [Commit directly to the main branch],然後選取 [Commit changes]。
您已完成建立 CI/CD 管線的建置工作流程。
在您的終端機中,執行此命令以檢視儲存在 ACR 中的目前產品服務版本:
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table以 ACR 的名稱取代 AZURE_CONTAINER_REGISTRY ,您應該會看到類似下列的輸出:
Result ---------------------------------------- v1
觸發組建
一旦提交工作流程檔案,建置工作流程就會自動觸發。 您也可以手動觸發建置。
- 在您的存放庫中,選取 Actions 標籤。
- 在左側下 All workflows,選取 Build and deploy an app to AKS 的工作流程,然後選取 Run workflow。
監視建置
若要檢視建置的即時進度:
在您的存放庫中,選取 Actions 標籤。
選取針對 Build and deploy an app to AKS 工作流程列出的最新工作流程回合。 執行名稱是您在上一個步驟中使用的提交消息。
選取 buildImage 作業。
如果您等候幾分鐘,作業中的步驟應該會順利完成。
在您的終端機中,再次執行此命令,以檢視儲存在 ACR 中的產品服務版本。
az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table您應該會看到類似下列的輸出,顯示已從 GitHub 工作流程將新的映像版本新增至 ACR:
Result ---------------------------------------- 8c75edb7a349ec570bd4eac397015bc3c547186e v1
![顯示 GitHub 存放庫中 [動作] 索引標籤的螢幕快照,其中醒目提示工作流程建立連結。](../../aspnetcore/microservices-devops-aspnet-core/media/3-set-up-custom-github-workflow.png)
