クイック スタート: GitHub Actions を使用して Azure Database for MySQL - フレキシブル サーバーに接続する
適用対象: Azure Database for MySQL - 単一サーバー Azure Database for MySQL - フレキシブル サーバー
重要
Azure Database for MySQL シングル サーバーは廃止パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、Azure Database for MySQL シングル サーバーの現状に関するページを参照してください
Azure Database for MySQL フレキシブル サーバー にデータベースの更新をデプロイするワークフローを使用することによって、GitHub Actions の使用を開始します。
前提条件
必要なものは次のとおりです。
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
GitHub アカウント。 GitHub アカウントをお持ちでない場合は、無料でサインアップできます。
サンプル データ (
data.sql
) が格納された GitHub リポジトリ。重要
このクイックスタートでは、関連付けられた IP アドレスを必要に応じてファイアウォール規則に追加できるよう、GitHub リポジトリがコンピューターに複製されていることを前提としています。
Azure Database for MySQL フレキシブル サーバー インスタンス。
ワークフロー ファイルの概要
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>",
(...)
}
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 シークレットの構成
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 ]
ワークフロー
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 }}
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'
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
デプロイを確認する
GitHub リポジトリの [Actions](アクション) にアクセスします。
最初の結果を開くと、ワークフローの実行の詳細なログが表示されます。
リソースをクリーンアップする
Azure Database for MySQL フレキシブル サーバー データベースとリポジトリが不要になったら、リソース グループと GitHub リポジトリを削除して、デプロイしたリソースをクリーンアップします。