クイック スタート: GitHub Actions を使用して 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 リポジトリを削除して、デプロイしたリソースをクリーンアップします。