練習 - 建立 GitHub 動作以建置容器映像

已完成

在此單元中,您將完成下列工作:

  • 建立 GitHub 動作以實作組建管線。
  • 修改優惠券服務程式碼以觸發組建工作流程。
  • 即時監視組建工作流程的進度。

建立建置動作

此程序中的 YAML 程式碼定義的 GitHub 動作會有以下行為:

  • 在將認可推送至 main 分支中的優惠券服務原始程式碼或單元測試時觸發。
  • 定義步驟特定的環境變數。
  • 有一項作業,或一組在相同工作流程執行器上執行的步驟 — 名為 Build and push image to ACR

重要

其他 GitHub Actions 或工作流程的觸發條件與其他成品,則取決於應用程式與環境。 為了方便了解,此範例中的詳細資料會保持簡單。 組建和部署工作流程的範圍都限於產品服務變更,因為所有微服務都會保留在單一存放庫之下。 在實際的生產案例中,每個微服務都會保留在自己的個別存放庫中。

完成下列步驟以建立 GitHub Actions 建置動作:

  1. 移至 GitHub 中的分支存放庫,選取索引Actions標籤。

  2. 在 [Get started with GitHub Actions] 頁面上,選取 [set up a workflow yourself] 連結。

    Screenshot that shows the Actions tab in the GitHub repository, highlighting the workflow creation link.

  3. 在下一個頁面上,將下列 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

  4. 使用 azure-kubernetes-service.yml 取代預設工作流程 main.yml 檔案名稱,然後選取 [Commit changes]。

  5. Commit changes 畫面上,選取 [Commit directly to the main branch],然後選取 [Commit changes]。

    您已完成為 CI/CD 管線建立建置工作流程。

  6. 在您的終端機中,執行此命令以檢視儲存在 ACR 中的目前產品服務版本:

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    AZURE_CONTAINER_REGISTRY 取代為您的 ACR 名稱,您應該會看到類似下列的輸出:

    Result
    ----------------------------------------
    v1
    

觸發組建

一旦認可工作流程檔案,組建工作流程就會自動觸發。 您也可以手動觸發組建。

  1. 在存放庫中,選取 [Actions] 索引標籤。
  2. 在左側的 下 All workflows,選取 Build and deploy an app to AKS 工作流程,然後選取 Run workflow

監視建置

若要檢視組建的即時進度:

  1. 在存放庫中,選取 [Actions] 索引標籤。

  2. 選取針對 Build and deploy an app to AKS 工作流程列出的最新工作流程回合。 執行的名稱是您在上一個步驟中使用的認可訊息。

  3. buildImage選取作業。

    Screenshot showing a GitHub workflow in progress.

  4. 如果您等候幾分鐘,作業中的步驟應該會順利完成。

  5. 在您的終端機中,再次執行此命令,以檢視儲存在 ACR 中的產品服務版本。

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    您應該會看到類似下列的輸出,顯示已從 GitHub 工作流程將新的映像版本新增至 ACR:

    Result
    ----------------------------------------
    8c75edb7a349ec570bd4eac397015bc3c547186e
    v1