次の方法で共有


クイック スタート: GitHub Actions を使用して Azure Database for MySQL - フレキシブル サーバーに接続する

Azure Database for MySQL フレキシブル サーバー にデータベースの更新をデプロイするワークフローを使用することによって、GitHub Actions の使用を開始します。

前提条件

必要なものは次のとおりです。

ワークフロー ファイルの概要

GitHub Actions ワークフローは、お使いのリポジトリの /.github/workflows/ パスの YAML (.yml) ファイルに定義されます。 この定義には、ワークフローを構成するさまざまな手順とパラメーターが含まれます。

このファイルには 2 つのセクションがあります。

Section タスク
認証 1.デプロイ資格情報を生成します。
デプロイする 1. データベースをデプロイします。

デプロイ資格情報を生成する

OIDC で Azure ログイン アクションを使用するには、Microsoft Entra アプリケーションまたはユーザー割り当てマネージド ID でフェデレーション ID 資格情報を構成する必要があります。

オプション 1: Microsoft Entra アプリケーション

オプション 2: ユーザー割り当てマネージド ID

MySQL 接続文字列をコピーする

Azure portal で、Azure Database for MySQL フレキシブル サーバー インスタンスに移動し、[設定]>[接続文字列] を開きます。 ADO.NET の接続文字列をコピーします。 プレースホルダー your_database および your_password の値を置き換えます。

重要

  • Azure Database for MySQL 単一サーバーの場合は、Uid=adminusername@servername を使用します。 @servername は必須です。
  • Azure Database for MySQL フレキシブル サーバーの場合は、 なしで @servername を使用します。

この接続文字列を GitHub シークレットとして使用します。

GitHub シークレットの構成

ログイン アクションには、アプリケーションの クライアント IDディレクトリ (テナント) IDサブスクリプション ID を 指定する必要があります。 これらの値は、ワークフロー内で直接指定するか、GitHub シークレットに格納してワークフローで参照できます。 GitHub シークレットとして値を保存する方がより安全なオプションです。

  1. GitHub で、お使いのリポジトリに移動します。

  2. [Security] (セキュリティ) > [Secrets and variables] (シークレットと変数) > [Actions] (アクション) を選びます。

    シークレットを追加しているスクリーンショット

  3. [New repository secret](新しいリポジトリ シークレット) を選択します。

    パブリック リポジトリのワークフロー セキュリティを強化するには、リポジトリ シークレットの代わりに環境シークレットを使用します。 環境で承認が必要な場合は、必要なレビュー担当者のいずれかが承認するまで、ジョブは環境シークレットにアクセスできません。

  4. AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_SUBSCRIPTION_ID のシークレットを作成します。 Microsoft Entra アプリケーションまたは GitHub シークレットのユーザー割り当てマネージド ID から次の値をコピーします。

    GitHub シークレット Microsoft Entra アプリケーションまたはユーザー割り当ての管理された ID
    AZURE_CLIENT_ID クライアントID
    AZURE_SUBSCRIPTION_ID サブスクリプション ID
    AZURE_TENANT_ID ディレクトリ (テナント) ID

    セキュリティ上の理由から、値をワークフローに直接渡すのではなく、GitHub シークレットを使用することをお勧めします。

ワークフローを追加する

  1. GitHub リポジトリの [Actions](アクション) にアクセスします。

  2. [Set up a workflow yourself](ワークフローを自分でセットアップする) を選択します。

  3. ワークフロー ファイルの on: セクションの後にあるすべてのものを削除します。 たとえば、残りのワークフローは次の例のようになります。

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. ワークフロー MySQL for GitHub Actions の名前を変更し、チェックアウトとログインのアクションを追加します。 これらのアクションにより、サイト コードがチェックアウトされ、先ほど作成した AZURE_CREDENTIALS GitHub シークレットを使って Azure に対する認証が行われます。

    name: MySQL for GitHub Actions
    
    on:
        push:
            branches: [ main ]
        pull_request:
            branches: [ main ]
    
    jobs:
        build:
            runs-on: windows-latest
            steps:
            - uses: actions/checkout@v1
            - uses: azure/login@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
  5. Azure MySQL のデプロイ アクションを使用して、MySQL インスタンスに接続します。 MYSQL_SERVER_NAME をご自分のサーバーの名前に置き換えます。 リポジトリのルート レベルに data.sql という名前の MySQL データ ファイルを配置する必要があります。

    - uses: azure/mysql@v1
      with:
        server-name: MYSQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
        sql-file: './data.sql'
    
  6. Azure のサインアウトにアクションを追加して、ワークフローを完成させます。 完成したワークフローを次に示します。 このファイルは、リポジトリの .github/workflows フォルダーに表示されます。

    name: MySQL for GitHub Actions
    
    on:
      push:
          branches: [ main ]
      pull_request:
          branches: [ main ]
    jobs:
        build:
            runs-on: windows-latest
            steps:
              - uses: actions/checkout@v1
              - uses: azure/login@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
              - uses: azure/mysql@v1
                with:
                  server-name: MYSQL_SERVER_NAME
                  connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
                  sql-file: './data.sql'
    
                # Azure logout
              - name: logout
                run: |
                  az logout
    

デプロイを確認する

  1. GitHub リポジトリの [Actions](アクション) にアクセスします。

  2. 最初の結果を開くと、ワークフローの実行の詳細なログが表示されます。

    GitHub Actions の実行のログのスクリーンショット。

リソースをクリーンアップする

Azure Database for MySQL フレキシブル サーバーのデータベースとリポジトリが不要になったら、リソース グループと GitHub リポジトリを削除して、デプロイしたリソースをクリーンアップします。

次のステップ