地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Azure】GitHub ActionsでACRにPushしてApp Serviceを更新するワークフロー

learn.microsoft.com

意外と公式のActionsが充実していてすごいと思ったがよくよく考えたらMicrosoftGitHubなのでそれはそうかとなった😅便利なのが結構多くて良いです。

name: Deploy to Dev ACR

on:
  push:
    branches:
      - feature/v1_0_0_deploy_dev
  workflow_dispatch:

env:
  REGISTRY: azurecr.io
  ACR_NAME: ACR
  AZURE_WEBAPP_NAME: dev-app
  IMAGE_NAME: app

jobs:
  azure-cli:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Azure Login
        uses: azure/login@v2
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: Docker login to ACR
        run: |
          az acr login --name ${{ env.ACR_NAME }}

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

      - name: Build and Push Docker Image
        uses: docker/build-push-action@v5
        with:
          context: ./apps
          platforms: linux/amd64
          push: true
          tags: ${{ env.ACR_NAME }}.${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
          cache-from: type=registry,ref=${{ steps.meta.outputs.tags }}
          cache-to: type=inline

      - name: Deploy to Azure App Service
        uses: azure/webapps-deploy@v3
        with:
          app-name: ${{ env.AZURE_WEBAPP_NAME }}
          images: ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ github.sha }}

Azure Pipelinesからの移行手順なんかも公開されているので結構簡単に移すことができてよかったです。

docs.github.com

参考

qiita.com