タスク 6 - Azure Container Apps にアプリをデプロイする処理を追加 - API アプリ

API アプリを Azure Container Apps にデプロイするための処理を GitHub アクションに追加します。

本タスクは、演習 1 で作成された API アプリ のみの GitHub リポジトリに対して作業を行いします。

演習作業簡略化のため、ファイルの作成と編集は main ブランチに対して直接行います。

作業

  1. タスク 2 の 1. と同様の手順で、.github/workflows/build-deploy.yml ファイルを編集モードで開きます。
    操作画面イメージ

  2. env に下記環境変数を追加し、準備タスクにて作成した Azure のリソースに合わせて、以下を設定します。

    項目
    リソース グループ名 (準備タスクで作成されたリソースグループ名)
    Azure Container Apps 名 - API アプリ ctapp-demo-api
       # Add envs
       RESOURCE_GROUP_NAME: # 準備タスクで作成されたリソースグループ名をここに記載
       CONTAINERAPP_NAME:  # 準備タスクで作成された API Container App 名 `ctapp-demo-api` をここに記載
    
    操作画面イメージ

  3. 下記 step コードを .github/workflows/build-deploy.yml ファイルの末尾に追加します。

           # Add a step
           - name: Deploy to containerapp
             uses: azure/CLI@v1
             with:
               inlineScript: |
                 az extension add --upgrade --name containerapp
    
                 az containerapp registry set \
                   --name ${{ env.CONTAINERAPP_NAME }} \
                   --resource-group ${{ env.RESOURCE_GROUP_NAME }} \
                   --server ${{ env.CONTAINER_REGISTRY }} \
                   --username  ${{ secrets.CONTAINER_REGISTRY_USERNAME }} \
                   --password ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}
    
                 az containerapp ingress enable \
                   --name ${{ env.CONTAINERAPP_NAME }} \
                   --resource-group ${{ env.RESOURCE_GROUP_NAME }} \
                   --target-port 3500 \
                   --type external
    
                 container_name=$( \
                   az containerapp show \
                     --name ${{ env.CONTAINERAPP_NAME }} \
                     --resource-group ${{ env.RESOURCE_GROUP_NAME }} \
                     --query "properties.template.containers[0].name" \
                     --output tsv
                 )
                 az containerapp update \
                   --name ${{ env.CONTAINERAPP_NAME }} \
                   --resource-group ${{ env.RESOURCE_GROUP_NAME }} \
                   --container-name $container_name \
                   --image ${{ env.CONTAINER_REGISTRY }}/${{ env.REPOSITORY_NAME }}:${{ github.sha }}
    

    注意 各行のインデントを間違いと構文エラーになりますので、ご注意してください。

    az containerapp ingress enable--target-port オプションは API アプリの場合は 3500 を指定。

    操作画面イメージ

確認

  1. 上記 2. および 3. の修正が下図赤枠のように .github/workflows/build-deploy.yml ファイルに反映されていることを確認します。
    操作画面イメージ

  2. タスク 1 の 4. と同様に、手動実行でワークフローを起動します。
    操作画面イメージ

  3. ワークフロー処理はエラーなく終了し、deploy ジョブのログに az script ran successfuly. のメッセージがが出力されていることを確認します。
    操作画面イメージ

  4. API アプリの Azure Container Apps にリビジョンとしてデプロイされていることが確認できます。
    操作画面イメージ

  5. API アプリの URL にアクセスして動作確認ができます。
    操作画面イメージ

  6. API アプリの リポジトリの routes/index.js に記載されているメッセージが表示されていることが確認できます。
    操作画面イメージ

  7. API アプリの URL + /albums にアクセスし、JSON が表示されていることが確認できます。
    操作画面イメージ

References