적용 대상:Azure SQL Database
워크플로를 통해 데이터베이스 업데이트를 Azure SQL Database에 배포하여 GitHub Actions를 시작합니다.
필수 조건
필요합니다.
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- dacpac 패키지(
Database.dacpac
)가 있는 GitHub 리포지토리. GitHub 계정이 없는 경우 무료로 가입하세요. - Azure SQL Database. 빠른 시작: Azure SQL Database 단일 데이터베이스 만들기
- 데이터베이스로 가져올 .dacpac 파일.
워크플로 파일 개요
GitHub Actions 워크플로는 리포지토리의 /.github/workflows/
경로에 있는 YAML(.yml) 파일에서 정의됩니다. 이 정의는 워크플로를 구성하는 다양한 단계와 매개 변수를 포함합니다.
이 파일에는 다음 두 가지 섹션이 있습니다.
섹션 | 작업 |
---|---|
인증 | 1.1. 배포 자격 증명을 생성합니다. |
Deploy | 1. 데이터베이스를 배포합니다. |
배포 자격 증명 생성
OIDC에서 Azure 로그인 작업을 사용하려면 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 페더레이션 ID 자격 증명을 구성해야 합니다.
옵션 1: Microsoft Entra 애플리케이션
- Azure Portal, Azure CLI 또는 Azure PowerShell에서 서비스 주체를 사용하여 Microsoft Entra 애플리케이션을 만듭니다.
- 클라이언트 ID, 구독 ID 및 디렉터리(테넌트) ID의 값을 복사하여 나중에 GitHub Actions 워크플로에서 사용합니다.
- Azure Portal, Azure CLI 또는 Azure PowerShell을 통해 서비스 주체에 적절한 역할을 할당합니다.
- GitHub Actions에서 발급한 토큰을 GitHub 리포지토리에 신뢰하도록 Microsoft Entra 애플리케이션 에서 페더레이션 ID 자격 증명을 구성합니다.
옵션 2: 사용자 할당 관리 ID
- 사용자 할당 관리 정체성 만들기.
- 클라이언트 ID, 구독 ID 및 디렉터리(테넌트) ID의 값을 복사하여 나중에 GitHub Actions 워크플로에서 사용합니다.
- 사용자 할당 관리 ID에 적절한 역할을 할당합니다.
- GitHub Actions에서 발급한 토큰을 GitHub 리포지토리에 신뢰하도록 사용자 할당 관리 ID에서 페더레이션 ID 자격 증명을 구성합니다.
SQL 연결 문자열 복사
Azure Portal에서 Azure SQL Database로 이동하여 설정>연결 문자열을 차례로 엽니다.
ADO.NET 연결 문자열을 복사합니다.
your_database
및 your_password
의 자리 표시자 값을 바꿉니다.
AZURE_SQL_CONNECTION_STRING
연결 문자열을 GitHub 비밀로 사용합니다.
GitHub 비밀 구성
로그인 작업에 애플리케이션의 클라이언트 ID, 디렉터리(테넌트) ID 및 구독 ID 를 제공해야 합니다. 이러한 값은 워크플로에서 직접 제공하거나 GitHub 비밀에 저장하고 워크플로에서 참조할 수 있습니다. 값을 GitHub 비밀로 저장하는 것이 더 안전한 옵션입니다.
GitHub에서 리포지토리로 이동합니다.
보안 > 비밀 및 변수 > 작업을 선택합니다.
새 리포지토리 비밀을 선택합니다.
비고
공용 리포지토리에서 워크플로 보안을 강화하려면 리포지토리 비밀 대신 환경 비밀을 사용합니다. 환경에 승인이 필요한 경우 필수 검토자 중 한 명이 승인할 때까지 작업에서 환경 비밀에 액세스할 수 없습니다.
AZURE_CLIENT_ID
,AZURE_TENANT_ID
및AZURE_SUBSCRIPTION_ID
에 대한 비밀을 만듭니다. GitHub 비밀에 대한 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 다음 값을 복사합니다.GitHub 비밀 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID AZURE_CLIENT_ID 클라이언트 ID AZURE_SUBSCRIPTION_ID 구독 ID AZURE_TENANT_ID 디렉터리(테넌트) ID 비고
보안상의 이유로 워크플로에 직접 값을 전달하는 대신 GitHub 비밀을 사용하는 것이 좋습니다.
SQL 연결 문자열 비밀번호를 추가하십시오
GitHub에서 리포지토리로 이동합니다.
탐색 메뉴에서 설정으로 이동합니다.
보안 > 비밀 및 변수 > 작업을 선택합니다.
새 리포지토리 비밀을 선택합니다.
SQL 연결 문자열을 붙여 넣습니다. 비밀 이름을
AZURE_SQL_CONNECTION_STRING
으로 지정합니다.비밀 추가를 선택합니다.
워크플로 추가
GitHub 리포지토리에 대한 작업으로 이동합니다.
워크플로 직접 설정을 선택합니다.
워크플로 파일의
on:
섹션 뒤에 있는 모든 항목을 삭제합니다. 예를 들어 나머지 워크플로는 다음과 같습니다.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]
워크플로 이름을
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 }}
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'
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
배포를 검토하세요
GitHub 리포지토리에 대한 작업으로 이동합니다.
첫 번째 결과를 열어 워크플로 실행에 대한 자세한 로그를 확인합니다.
리소스 정리
Azure SQL 데이터베이스 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹과 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.