GitHub Actions 및 Azure DevOps에서 데이터베이스 프로젝트 빌드 및 배포
데이터베이스는 더 큰 솔루션의 핵심 구성 요소이므로, 개발자는 애플리케이션 코드를 다루는 방식과 비슷하게 데이터베이스 개발을 관리할 수 있는 효과적인 방법을 찾아야 합니다. 이 작업은 데이터베이스 개발이 데이터베이스에 저장된 데이터와 긴밀하게 얽혀 있어 복잡성이 더해지기 때문에 특히 어렵습니다.
다행히도 GitHub Actions 및 Azure DevOps Services 같은 도구는 이러한 복잡성을 관리하기 위한 강력한 솔루션을 제공합니다. 두 플랫폼 모두 DACPAC 배포를 지원하며, 데이터베이스 변경 사항을 데이터 계층 애플리케이션 구성 요소(DAC) 패키지로 패키징하여 배포 과정을 단순화합니다. 이 접근 방식은 데이터베이스 배포에서 일관성과 신뢰성을 보장할 뿐 아니라 연속 통합 및 지속적 배포(CI/CD) 파이프라인과도 자연스럽게 통합되어, 개발자가 애플리케이션 코드와 함께 데이터베이스를 유지 관리하고 업데이트하기가 더 쉬워집니다.
이 단원의 예제는 다음이 이미 준비되어 있다고 가정합니다:
- 리소스를 만들고 관리할 권한이 있는 Azure 구독.
- 다음 확장 기능이 설치된 Visual Studio Code:
- 소유자로 생성된 프라이빗 GitHub 리포지토리가 있는 GitHub 계정.
- Azure 서비스 액세스 허용이 활성화되도록 설정된 Azure SQL Database. 빠른 시작: Azure SQL Database 단일 데이터베이스 만들기.
GitHub Actions를 사용해 Azure SQL Database에 연결
GitHub Actions를 사용하여 Azure SQL Database에 연결하고 DACPAC 파일을 사용해 SQL 프로젝트를 게시할 수 있습니다.
GitHub Actions를 사용해 Azure SQL Database에 연결하는 과정은 세 가지 주요 단계로 이루어집니다.
- Visual Studio Code에서 GitHub 리포지토리를 복제하세요.
- Visual Studio Code에서 데이터베이스 프로젝트 만들기를 수행하세요.
- GitHub Actions로 연속 통합(CI)을 설정하세요.
GitHub 리포지토리를 복제합니다.
다음 단계를 따라 만들었던 GitHub 리포지토리를 복제할 수 있습니다.
- Visual Studio Code에서 보기>명령 팔레트를 선택하세요.
- 명령 팔레트에서 Git: Clone을 입력한 다음 선택하세요.
- 리포지토리 URL을 입력하고 복제를 선택하세요.
- 리포지토리 파일을 저장할 폴더를 선택하거나 만드세요.
Visual Studio Code에서 데이터베이스 프로젝트 만들기
Visual Studio Code에서 새 데이터베이스 프로젝트를 설정하고, GitHub 리포지토리를 복제한 동일한 폴더에 프로젝트를 저장하세요.
Visual Studio Code에서 데이터베이스 프로젝트를 만드는 방법에 대한 자세한 내용은 Visual Studio Code를 사용한 SQL Server 개발을 참조하세요.
데이터베이스 프로젝트를 만들었으면 Azure SQL Database를 수정하는 코드를 추가하세요. 그런 다음 변경 사항이 추적되고 버전 제어 시스템에 통합되도록 GitHub 리포지토리에 커밋하세요.
GitHub Actions로 연속 통합 설정
GitHub Actions로 연속 통합(CI)을 설정하려면, 리포지토리의 /.github/workflows/ 경로에 .yml 파일을 만드세요.
.yml 파일에는 두 개의 섹션이 있습니다.
- 인증 설정
- GitHub 워크플로 만들기
인증 설정 섹션은 GitHub 비밀을 구성하고, 두 번째 섹션은 GitHub Actions 워크플로를 만듭니다.
인증
먼저 Azure CLI에서 az ad sp create-for-rbac 명령을 사용해 서비스 주체를 만들어야 합니다. Azure 포털의 Azure Cloud Shell을 사용해 다음 Azure CLI 코드를 실행하세요. 자리표시자를 구독 ID, 리소스 그룹 이름, 앱 이름으로 바꾸세요.
az ad sp create-for-rbac --name "myML" --role contributor --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> --json-auth
출력은 역할 할당 자격 증명이 포함된 JSON 개체입니다. 출력을 GitHub 비밀로 저장할 예정이니, 이 파일을 저장해 두세요.
다음으로 SQL 연결 문자열을 만드세요. Azure Portal에서 이를 복사할 수 있습니다. Azure SQL Database에서 설정>연결 문자열을 여세요.
ADO.NET 연결 문자열을 복사한 다음 your-database 및 your-password의 자리표시자 값을 바꾸세요. 연결 문자열은 다음과 비슷합니다:
Server=tcp:my-sql-server.database.windows.net,1433;Initial Catalog={your-database};Persist Security Info=False;User ID={admin-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
이 연결 문자열도 GitHub 비밀로 저장됩니다.
GitHub 리포지토리에서 설정>보안 ->비밀 및 변수>작업에서 비밀을 추가합니다. JSON 텍스트를 저장할 새 비밀 AZURE_CREDENTIALS과(와) 연결 문자열을 저장할 새 비밀 AZURE_SQL_CONNECTION_STRING을(를) 만드세요.
이제 워크플로를 만들 준비가 되었습니다.
참고
프로덕션 환경에서는 SQL 인증 대신 GitHub Action에서 데이터베이스에 액세스할 때 관리형 ID를 사용하는 것을 고려하세요. 자세한 내용은 Azure SQL용 Microsoft Entra의 관리 ID를 참조하세요.
GitHub 워크플로 만들기
GitHub 리포지토리에서 Actions와 직접 워크플로 설정을 선택하세요. 빈 main.yml 파일이 열립니다.
이제 YAML 파일을 작성할 수 있습니다. 자세한 구문과 지침은 GitHub Actions 워크플로를 참조하세요. 예를 들어, name: 태그는 워크플로 이름을 지정하고 on 값은 워크플로 실행을 트리거하는 이벤트를 결정합니다.
팁
GitHub Actions 빠른 시작은 GitHub Actions의 추가 기능을 활용해 빠르게 시작할 수 있도록 도와줍니다.
Azure DevOps Services를 사용한 Azure SQL Database 배포
Azure DevOps Services를 사용하여 Azure SQL Database에 대한 업데이트도 배포할 수 있습니다. 시작하려면 Azure DevOps Services 계정, 버전 제어 시스템(Azure Repos 또는 GitHub 등), 그리고 SQL Database 확장이 설치된 Visual Studio Code가 필요합니다.
Azure DevOps Services에는 코드를 자동으로 빌드, 테스트, 배포하는 Azure Pipelines가 포함되어 있습니다. Azure Pipelines를 사용하면 프로젝트에서 Azure SQL Database 수정 사항의 연속 통합 및 지속적 배포(CI/CD)를 지원할 수 있습니다. 이 통합을 통해 데이터베이스 변경 사항이 일관되고 안정적으로 적용됩니다.
Azure Pipelines는 GitHub와 Azure Repos를 포함한 다양한 버전 제어 시스템과 자연스럽게 통합됩니다. Azure Pipelines를 사용하면 파이프라인의 일부로 SQL 스크립트를 실행할 수 있으며, Azure PowerShell 스크립트를 사용해 Azure에서 방화벽 규칙을 만들고 제거하여 안전하고 효율적인 데이터베이스 관리를 보장합니다.
Azure SQL Database 배포 옵션에 대한 자세한 내용은 Azure DevOps Services 문서의 Azure SQL 데이터베이스 배포를 참조하세요.