次の方法で共有


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

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

前提条件

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

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

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

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

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

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

Azure CLIaz ad sp create-for-rbac コマンドを使用して、サービス プリンシパルを作成します。 このコマンドは、Azure portal で Azure Cloud Shell を使用するか、[試してみる] ボタンを選択して実行します。

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

--json-auth パラメーターは、Azure CLI バージョン 2.51.0 以降で使用できます。 これ以前のバージョンでは --sdk-auth を使用し、非推奨の警告が表示されます。

上記の例で、プレースホルダーをご利用のサブスクリプション ID、リソース グループ名、アプリ名に置き換えます。 これにより、以下のようなご自分の App Service アプリにアクセスするためのロールの割り当て資格情報を含む JSON オブジェクトが出力されます。 この JSON オブジェクトを後のためにコピーします。

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

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 なしで Uid=adminusername を使用します。

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

GitHub シークレットの構成

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

  2. ナビゲーション メニューで [設定] に移動します。

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

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

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

  5. Azure CLI コマンドからの JSON 出力全体をシークレットの値フィールドに貼り付けます。 シークレットに AZURE_CREDENTIALS と名前を付けます。

  6. [Add secret](シークレットの追加) を選択します。

ワークフローを追加する

  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@v1
                with:
                    creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  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@v1
                with:
                  creds: ${{ secrets.AZURE_CREDENTIALS }}
    
              - 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 リポジトリを削除して、デプロイしたリソースをクリーンアップします。

次のステップ