演習 - コンテナー イメージを構築する GitHub アクションを作成する

完了

このユニットでは、次のタスクを完了します。

  • ビルド パイプラインを実装する GitHub アクションを作成します。
  • ビルド ワークフローをトリガーするようにクーポン サービス コードを変更します。
  • ビルド ワークフローの進行状況をリアルタイムで監視します。

ビルド アクションを作成する

この手順の YAML コードでは、次の GitHub アクションを定義します。

  • main ブランチでクーポン サービスのソース コードまたは単体テストに対してコミットがプッシュされたときにトリガーします。
  • ステップ固有の環境変数を定義します。
  • という名前の 1 つのBuild and push image to ACRまたは同じワークフロー ランナーで実行される一連のステップがあります。

重要

GitHub Actions またはワークフローのトリガー条件とその他の成果物は、アプリと環境によって異なります。 この例では、理解を容易にするために、詳細を簡単に保持します。 すべてのマイクロサービスが 1 つのリポジトリの下に保持されるため、ビルドワークフローとデプロイ ワークフローの両方が製品サービスの変更にスコープされます。 実際の運用シナリオでは、各マイクロサービスは独自の個別のリポジトリに保持されます。

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
    

    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 ジョブを選択します。

    進行中の 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