다음을 통해 공유


빠른 시작: GitHub Actions를 사용하여 Azure Database for MySQL - 유연한 서버에 연결

워크플로를 사용하여 Azure Database for MySQL 유연한 서버에 데이터베이스 업데이트를 배포하여 GitHub Actions를 시작합니다.

필수 조건

필요한 사항:

워크플로 파일 개요

GitHub Actions 워크플로는 리포지토리의 /.github/workflows/ 경로에 있는 YAML(.yml) 파일에서 정의됩니다. 이 정의는 워크플로를 구성하는 다양한 단계와 매개 변수를 포함합니다.

이 파일에는 다음 두 가지 섹션이 있습니다.

섹션 작업
인증 1. 배포 자격 증명을 생성합니다.
Deploy 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_databaseyour_password의 자리 표시자 값을 바꿉니다.

Important

  • Azure Database for MySQL 단일 서버의 경우 Uid=adminusername@servername을 사용합니다. @servername이 필요합니다.
  • Azure Database for MySQL 유연한 서버의 경우 . @servername

연결 문자열을 GitHub 비밀로 사용합니다.

GitHub 비밀 구성

  1. GitHub에서 리포지토리로 이동합니다.

  2. 탐색 메뉴에서 설정으로 이동합니다.

  3. 보안 > 비밀 및 변수 > 작업을 선택합니다.

    비밀 추가 스크린샷

  4. 새 리포지토리 비밀을 선택합니다.

  5. Azure CLI 명령의 전체 JSON 출력을 비밀의 값 필드에 붙여넣습니다. 비밀 이름을 AZURE_CREDENTIALS으로 지정합니다.

  6. 비밀 추가를 선택합니다.

워크플로 추가

  1. GitHub 리포지토리에 대한 작업으로 이동합니다.

  2. 워크플로 직접 설정을 선택합니다.

  3. 워크플로 파일의 on: 섹션 뒤에 있는 모든 항목을 삭제합니다. 예를 들어 나머지 워크플로는 다음과 같이 표시될 수 있습니다.

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. 워크플로 이름을 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 }}
    
  5. 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'
    
  6. 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
    

배포 검토

  1. GitHub 리포지토리에 대한 작업으로 이동합니다.

  2. 첫 번째 결과를 열어 워크플로 실행에 대한 자세한 로그를 확인합니다.

    GitHub Actions 실행 로그의 스크린샷

리소스 정리

Azure Database for MySQL 유연한 서버 데이터베이스 및 리포지토리가 더 이상 필요하지 않으면 리소스 그룹 및 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.

다음 단계