다음을 통해 공유


GitHub Actions를 사용하여 Azure SQL Database에 연결하기

적용 대상:Azure SQL Database

워크플로를 통해 데이터베이스 업데이트를 Azure SQL Database에 배포하여 GitHub Actions를 시작합니다.

필수 조건

필요합니다.

워크플로 파일 개요

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

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

섹션 작업
인증 1.1. 배포 자격 증명을 생성합니다.
Deploy 1. 데이터베이스를 배포합니다.

배포 자격 증명 생성

OIDC에서 Azure 로그인 작업을 사용하려면 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 페더레이션 ID 자격 증명을 구성해야 합니다.

옵션 1: Microsoft Entra 애플리케이션

옵션 2: 사용자 할당 관리 ID

SQL 연결 문자열 복사

Azure Portal에서 Azure SQL Database로 이동하여 설정>연결 문자열을 차례로 엽니다. ADO.NET 연결 문자열을 복사합니다. your_databaseyour_password의 자리 표시자 값을 바꿉니다.

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

GitHub 비밀 구성

로그인 작업에 애플리케이션의 클라이언트 ID, 디렉터리(테넌트) ID구독 ID 를 제공해야 합니다. 이러한 값은 워크플로에서 직접 제공하거나 GitHub 비밀에 저장하고 워크플로에서 참조할 수 있습니다. 값을 GitHub 비밀로 저장하는 것이 더 안전한 옵션입니다.

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

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

    비밀 추가 스크린샷

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

    비고

    공용 리포지토리에서 워크플로 보안을 강화하려면 리포지토리 비밀 대신 환경 비밀을 사용합니다. 환경에 승인이 필요한 경우 필수 검토자 중 한 명이 승인할 때까지 작업에서 환경 비밀에 액세스할 수 없습니다.

  4. AZURE_CLIENT_ID, AZURE_TENANT_IDAZURE_SUBSCRIPTION_ID에 대한 비밀을 만듭니다. GitHub 비밀에 대한 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 다음 값을 복사합니다.

    GitHub 비밀 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID
    AZURE_CLIENT_ID 클라이언트 ID
    AZURE_SUBSCRIPTION_ID 구독 ID
    AZURE_TENANT_ID 디렉터리(테넌트) ID

    비고

    보안상의 이유로 워크플로에 직접 값을 전달하는 대신 GitHub 비밀을 사용하는 것이 좋습니다.

SQL 연결 문자열 비밀번호를 추가하십시오

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

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

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

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

  5. SQL 연결 문자열을 붙여 넣습니다. 비밀 이름을 AZURE_SQL_CONNECTION_STRING으로 지정합니다.

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

워크플로 추가

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

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

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

    name: SQL for GitHub Actions
    
    on:
        push:
            branches: [ main ]
        pull_request:
            branches: [ main ]
    
  4. 워크플로 이름을 SQL for GitHub Actions로 바꾸고, 체크 아웃 및 로그인 작업을 추가합니다. 이러한 작업은 사이트 코드를 체크 아웃하고 이전에 만든 AZURE_CREDENTIALS GitHub 비밀을 사용하여 Azure에서 인증합니다.

        name: SQL 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@v2
                   with:
                    client-id: ${{ secrets.AZURE_CLIENT_ID }}
                    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    

  1. Azure SQL 배포 작업을 사용하여 SQL 인스턴스에 연결합니다. 리포지토리의 루트 수준에 dacpac 패키지(Database.dacpac)가 있을 것입니다. 이전에 만든 GitHub 비밀(AZURE_SQL_CONNECTION_STRING)을 사용합니다.

    - uses: azure/sql-action@v2
      with:
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        path: './Database.dacpac'
        action: 'Publish'
    
  2. Azure에서 로그아웃하는 작업을 추가하여 워크플로를 완성합니다. 완성된 워크플로는 다음과 같습니다. 파일이 리포지토리의 .github/workflows 폴더에 표시됩니다.

        name: SQL 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@v2
                   with:
                    client-id: ${{ secrets.AZURE_CLIENT_ID }}
                    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
                # Azure logout 
                 - name: logout
                   run: |
                     az logout
    

배포를 검토하세요

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

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

    GitHub Actions 실행 로그

리소스 정리

Azure SQL 데이터베이스 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹과 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.

다음 단계