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는 리포지토리를 분석하고 구성 옵션을 제공합니다. 시작 파이프라인을 선택합니다.

    Screenshot of Select Starter pipeline.

비밀 만들기

Azure Database for MySQL 배포 작업에서 사용하려면 데이터베이스 서버 이름, SQL 사용자 이름 및 SQL 암호를 알아야 합니다.

보안을 위해 파이프라인에 대한 파이프라인 설정 UI에서 SQL 암호를 비밀 변수로 저장하려고 합니다.

  1. 파이프라인 페이지로 이동하여 적절한 파이프라인을 선택하고 편집을 선택합니다.

  2. 변수를 선택합니다.

  3. SQLpass라는 새 변수를 추가하고, 이 값을 비밀로 유지를 선택하여 변수를 암호화하고 저장합니다.

    Screenshot of adding a secret variable.

  4. 확인저장을 선택하여 변수를 추가합니다.

데이터베이스에 대한 권한 확인

Azure Pipelines를 사용하여 MySQL 데이터베이스에 액세스하려면 모든 Azure 리소스의 연결을 허용하도록 데이터베이스를 설정해야 합니다.

  1. Azure Portal에서 데이터베이스 리소스를 엽니다.

  2. 연결 보안을 선택합니다.

  3. Azure 서비스에 대한 액세스 허용로 전환합니다.

    Screenshot of setting MySQL to allow Azure connections.

Azure Database for MySQL 배포 작업 추가

이 예에서는 quickstartdb라는 새 데이터베이스를 만들고 인벤토리 테이블을 추가합니다. 인라인 SQL 스크립트에서 다음을 수행합니다.

  • quickstartdb가 있는 경우 이를 삭제하고 새 quickstartdb 데이터베이스를 만듭니다.
  • inventory 테이블이 있는 경우 이를 삭제하고 새 inventory 테이블을 만듭니다.
  • 세 개의 행을 inventory에 삽입합니다.
  • 모든 행을 표시합니다.
  • inventory의 첫 번째 행 값을 업데이트합니다.
  • inventory에서 두 번째 행을 삭제합니다.

배포 작업에서 다음 값을 바꿔야 합니다.

입력 설명 예시
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 작업 내에서 성공적으로 실행되었는지 확인할 수 있습니다.

작업을 열고, 마지막 두 항목에서 inventory의 두 행을 표시하는지 확인합니다. 두 번째 행이 삭제되었으므로 두 개의 행이 있습니다.

Screenshot to show reviewing final table results.

리소스 정리

파이프라인 작업이 완료되면 Azure Database for MySQL에서 quickstartdb을 삭제합니다. 만든 배포 파이프라인을 삭제할 수도 있습니다.

다음 단계