GitHub Actions를 사용하여 Azure SQL Database에 연결하기
적용 대상: 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. 데이터베이스를 배포합니다. |
배포 자격 증명 생성
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>",
(...)
}
SQL 연결 문자열 복사
Azure Portal에서 Azure SQL Database로 이동하여 설정>연결 문자열을 차례로 엽니다. ADO.NET 연결 문자열을 복사합니다. your_database
및 your_password
의 자리 표시자 값을 바꿉니다.
AZURE_SQL_CONNECTION_STRING
연결 문자열을 GitHub 비밀로 사용합니다.
GitHub 비밀 구성
GitHub에서 리포지토리로 이동합니다.
탐색 메뉴에서 설정으로 이동합니다.
보안 > 비밀 및 변수 > 작업을 선택합니다.
새 리포지토리 비밀을 선택합니다.
Azure CLI 명령의 전체 JSON 출력을 비밀의 값 필드에 붙여넣습니다. 비밀 이름을
AZURE_CREDENTIALS
으로 지정합니다.비밀 추가를 선택합니다.
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@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
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@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/sql-action@v2 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'Publish' # Azure logout - name: logout run: | az logout
배포 검토
GitHub 리포지토리에 대한 작업으로 이동합니다.
첫 번째 결과를 열어 워크플로 실행에 대한 자세한 로그를 확인합니다.
리소스 정리
Azure SQL 데이터베이스 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹과 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.