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

適用対象: Azure Database for PostgreSQL - シングル サーバー Azure Database for PostgreSQL - フレキシブル サーバー

重要

Azure Database for PostgreSQL - シングル サーバーは廃止パスにあります。 Azure Database for PostgreSQL - フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for PostgreSQL - フレキシブル サーバーへの移行の詳細については、Azure Database for PostgreSQL 単一サーバーの現状に関するページを参照してください。

Azure Database for PostgreSQL フレキシブル サーバー にデータベースの更新をデプロイするワークフローを使用することによって、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>",
    (...)
  }

Azure Database for PostgreSQL フレキシブル サーバー接続文字列をコピーする

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

重要

  • Azure Database for PostgreSQL 単一サーバーの場合、user=adminusername@servername を使用します。 @servername は必須です。
  • Azure Database for PostgreSQL フレキシブル サーバーの場合、@servername なしで user= adminusername を使用します。
psql host={servername.postgres.database.azure.com} port=5432 dbname={your_database} user={adminusername} password={your_database_password} sslmode=require

接続文字列を 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. ワークフロー PostgreSQL for GitHub Actions の名前を変更し、チェックアウトとサインインのアクションを追加します。 これらのアクションにより、サイト コードがチェックアウトされ、先ほど作成した GitHub シークレットを使って Azure に対する認証が行われます。

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

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

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    
    jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v1
        with:
            client-id: ${{ secrets.AZURE_CREDENTIALS }}
    
    - uses: azure/postgresql@v1
      with:
        server-name: POSTGRESQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        plsql-file: './data.sql'
    
        # Azure logout
    - name: logout
      run: |
         az logout
    

デプロイを確認する

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

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

    GitHub Actions 実行のログ

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

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

次のステップ