次の方法で共有


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 単一サーバーでのみ機能します。

前提条件

開始する前に、次のことが必要です。

このクイックスタートでは、次のいずれかのガイドで作成されたリソースを出発点として使用します。

パイプラインの作成

基本的なスタート パイプラインをパイプラインの基礎として使用します。

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. プロジェクト内で、 [パイプライン] ページに移動します。 次に、新しいパイプラインを作成するためのアクションを選択します。

  3. 最初に、ソース コードの場所として GitHub を選択し、ウィザードの手順を実行します。

  4. サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。

  5. リポジトリの一覧が表示されたら、適切なリポジトリを選択します。

  6. Azure Pipelines によってリポジトリが分析され、構成オプションが提示されます。 [スタート パイプライン] を選択します。

シークレットの作成

Azure Database for MySQL のデプロイ タスクで使用するためのデータベース サーバー名、SQL ユーザー名、SQL パスワードを知っておく必要があります。

セキュリティのために、パイプラインのパイプライン設定 UI で SQL パスワードをシークレット変数として保存します。

  1. [パイプライン] ページにアクセスし、適切なパイプラインを選択して、[編集] を選択します。
  2. [変数] を選択します。
  3. SQLpass という名前の新しい変数を追加し、[この値を誰にも教えないようにします] を選択して変数を暗号化して保存します。
  4. [OK][保存] を選択して変数を追加します。

データベースのアクセス許可を確認する

Azure Pipelines を使用して MySQL データベースにアクセスするには、すべての Azure リソースからの接続を受け入れるようにデータベースを設定する必要があります。

  1. Azure portal で、データベース リソースを開きます。
  2. [接続のセキュリティ] を選択します。
  3. [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 を削除します。 作成したデプロイ パイプラインを削除することもできます。

次の手順