練習 - 建立 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 連結。

    顯示 GitHub 存放庫中 [動作] 索引標籤的螢幕快照,其中醒目提示工作流程建立連結。

  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. 將預設工作流程 main.yml 檔名取代為 azure-kubernetes-service.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
    

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

    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 作業。

    顯示 GitHub 工作流程進行中的螢幕快照。

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

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

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

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

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