Azure Database for MySQL の Azure Pipelines - 単一サーバー
適用対象: Azure Database for MySQL - シングル サーバー
Azure Pipelines を使用してデータベース更新をデプロイして、Azure Database for MySQL の使用を開始します。 Azure Pipelines を使用すると、 Azure DevOps を使用して継続的インテグレーション (CI) と継続的デリバリー (CD) でビルド、テスト、およびデプロイを行うことができます。
Azure Database for MySQL のデプロイ タスクを使用します。 Azure Database for MySQL のデプロイ タスクは、Azure Database for MySQL 単一サーバーでのみ機能します。
前提条件
開始する前に、次のことが必要です。
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- アクティブな Azure DevOps 組織。 Azure Pipelines にサインアップします。
- パイプラインに使用できる GitHub リポジトリ。 既存のリポジトリがない場合は、「最初のパイプラインの作成」を参照してください。
このクイックスタートでは、次のいずれかのガイドで作成されたリソースを出発点として使用します。
- Azure Portal を使用した Azure Database for MySQL サーバーの作成
- Azure CLI を使用した Azure Database for MySQL サーバーの作成
パイプラインの作成
基本的なスタート パイプラインをパイプラインの基礎として使用します。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
プロジェクト内で、 [パイプライン] ページに移動します。 次に、新しいパイプラインを作成するためのアクションを選択します。
最初に、ソース コードの場所として GitHub を選択し、ウィザードの手順を実行します。
サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
リポジトリの一覧が表示されたら、適切なリポジトリを選択します。
Azure Pipelines によってリポジトリが分析され、構成オプションが提示されます。 [スタート パイプライン] を選択します。
シークレットの作成
Azure Database for MySQL のデプロイ タスクで使用するためのデータベース サーバー名、SQL ユーザー名、SQL パスワードを知っておく必要があります。
セキュリティのために、パイプラインのパイプライン設定 UI で SQL パスワードをシークレット変数として保存します。
- [パイプライン] ページにアクセスし、適切なパイプラインを選択して、[編集] を選択します。
- [変数] を選択します。
SQLpass
という名前の新しい変数を追加し、[この値を誰にも教えないようにします] を選択して変数を暗号化して保存します。- [OK] と [保存] を選択して変数を追加します。
データベースのアクセス許可を確認する
Azure Pipelines を使用して MySQL データベースにアクセスするには、すべての Azure リソースからの接続を受け入れるようにデータベースを設定する必要があります。
- Azure portal で、データベース リソースを開きます。
- [接続のセキュリティ] を選択します。
- [Azure サービスへのアクセスを許可] を [はい] に切り替えます。
Azure Database for MySQL のデプロイ タスクを追加する
この例では、quickstartdb
という名前の新しいデータベースを作成し、インベントリ テーブルを追加します。 インライン SQL スクリプトでは、次の操作が行われます。
quickstartdb
が存在する場合は削除し、新しいquickstartdb
データベースを作成します。- テーブル
inventory
が存在する場合は削除し、新しいinventory
テーブルを作成します。 inventory
に 3 行を挿入します。- すべての行を表示します。
inventory
の最初の行の値を更新します。inventory
の 2 番目の行を削除します。
デプロイ タスクで次の値を置き換える必要があります。
入力 | 説明 | 例 |
---|---|---|
azureSubscription |
サービス接続を使用して Azure サブスクリプションで認証します。 | My Subscription |
ServerName |
Azure Database for MySQL サーバーの名前。 | fabrikam.mysql.database.azure.com |
SqlUsername |
Azure Database for MySQL のユーザー名。 | mysqladmin@fabrikam |
SqlPassword |
そのユーザー名のパスワード。 これはシークレット変数として定義する必要があります。 | $(SQLpass) |
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: AzureMysqlDeployment@1
inputs:
azureSubscription: '<your-subscription>
ServerName: '<db>.mysql.database.azure.com'
SqlUsername: '<username>@<db>'
SqlPassword: '$(SQLpass)'
TaskNameSelector: 'InlineSqlTask'
SqlInline: |
DROP DATABASE IF EXISTS quickstartdb;
CREATE DATABASE quickstartdb;
USE quickstartdb;
-- Create a table and insert rows
DROP TABLE IF EXISTS inventory;
CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);
INSERT INTO inventory (name, quantity) VALUES ('banana', 150);
INSERT INTO inventory (name, quantity) VALUES ('orange', 154);
INSERT INTO inventory (name, quantity) VALUES ('apple', 100);
-- Read
SELECT * FROM inventory;
-- Update
UPDATE inventory SET quantity = 200 WHERE id = 1;
SELECT * FROM inventory;
-- Delete
DELETE FROM inventory WHERE id = 2;
SELECT * FROM inventory;
IpDetectionMethod: 'AutoDetect'
リソースをデプロイして検証する
[保存および実行] を選択してパイプラインをデプロイします。 パイプライン ジョブが起動され、数分後にジョブの状態に Success
が示されます。
パイプライン実行の AzureMysqlDeployment
タスク内でパイプラインが正常に実行されたことを確認できます。
タスクを開き、最後の 2 つのエントリで inventory
に 2 行が表示されていることを確認します。 2 番目の行が削除されているため、2 つの行があります。
リソースをクリーンアップする
パイプラインの操作が完了したら、Azure Database for MySQL で quickstartdb
を削除します。 作成したデプロイ パイプラインを削除することもできます。