クイック スタート: GitHub Actions を使用して Azure PostgreSQL Database - フレキシブル サーバーに接続する
適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
Azure Database for PostgreSQL フレキシブル サーバー にデータベースの更新をデプロイするワークフローを使用することによって、GitHub Actions の使用を開始します。
前提条件
必要なもの:
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- サンプル データ (
data.sql
) が格納された GitHub リポジトリ。 GitHub アカウントをお持ちでない場合は、無料でサインアップできます。 - Azure Database for PostgreSQL フレキシブル サーバー インスタンス。
ワークフロー ファイルの概要
GitHub Actions ワークフローは、お使いのリポジトリの /.github/workflows/
パスの YAML (.yml) ファイルに定義されます。 この定義には、ワークフローを構成するさまざまな手順とパラメーターが含まれます。
このファイルには 2 つのセクションがあります。
Section | タスク |
---|---|
認証 | 1.デプロイ資格情報を生成します。 |
デプロイする | 1. データベースをデプロイします。 |
デプロイ資格情報を生成する
Azure CLI で az 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_password}
を実際のパスワードに置き換えます。 接続文字列はこのようになります。
Server={servername.postgres.database.azure.com};Database={your_database};Port=5432;User Id={adminusername};Password={your_password};Ssl Mode=Require;
接続文字列を GitHub シークレットとして使います。
GitHub シークレットを構成する
GitHub で、お使いのリポジトリに移動します。
ナビゲーション メニューで [設定] に移動します。
[Security] (セキュリティ) > [Secrets and variables] (シークレットと変数) > [Actions] (アクション) を選びます。
[New repository secret](新しいリポジトリ シークレット) を選択します。
Azure CLI コマンドからの JSON 出力全体をシークレットの値フィールドに貼り付けます。 シークレットに
AZURE_CREDENTIALS
と名前を付けます。[Add secret](シークレットの追加) を選択します。
ワークフローを追加する
GitHub リポジトリの [Actions](アクション) にアクセスします。
[Set up a workflow yourself](ワークフローを自分でセットアップする) を選択します。
ワークフロー ファイルの
on:
セクションの後にあるすべてのものを削除します。 たとえば、残りのワークフローは次のようになります。name: CI on: push: branches: [ main ] pull_request: branches: [ main ]
ワークフロー
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 }}
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'
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
デプロイを確認する
リソースをクリーンアップする
Azure Database for PostgreSQL フレキシブル サーバー データベースとリポジトリが不要になったら、リソース グループと GitHub リポジトリを削除して、デプロイしたリソースをクリーンアップします。