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

적용 대상: Azure Database for PostgreSQL - 단일 서버 Azure Database for PostgreSQL - 유연한 서버

Important

Azure Database for PostgreSQL - 단일 서버는 곧 사용 중지됩니다. Azure Database for PostgreSQL - 유연한 서버로 업그레이드하는 것이 좋습니다. Azure Database for PostgreSQL - 유연한 서버로 마이그레이션하는 방법에 대한 자세한 내용은 Azure Database for PostgreSQL 단일 서버에 대한 새로운 소식을 참조하세요.

Azure Database for PostgreSQL 유연한 서버에 데이터베이스 업데이트를 배포하는 워크플로를 사용하여 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>",
    (...)
  }

Azure Database for PostgreSQL 유연한 서버 연결 문자열을 복사합니다.

Azure Portal에서 Azure Database for PostgreSQL 유연한 서버 인스턴스로 이동하여 설정>연결 문자열을 엽니다. ADO.NET 연결 문자열을 복사합니다. your_databaseyour_password의 자리 표시자 값을 바꿉니다. 연결 문자열은 다음과 비슷합니다.

Important

  • Azure Database for PostgreSQL 단일 서버의 경우 user=adminusername@servername을 사용합니다. @servername은 필수입니다.
  • Azure Database for PostgreSQL 유연한 서버의 경우 @servername 없이 user= adminusername을 사용합니다.
psql host={servername.postgres.database.azure.com} port=5432 dbname={your_database} user={adminusername} password={your_database_password} sslmode=require

연결 문자열을 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. 워크플로 이름을 PostgreSQL for GitHub Actions로 바꾸고, 체크 아웃 및 로그인 작업을 추가합니다. 이러한 작업은 사이트 코드를 체크 아웃하고 이전에 만든 GitHub 비밀을 사용하여 Azure에서 인증을 받습니다.

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v1
        with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  5. Azure PostgreSQL 배포 작업을 사용하여 Azure Database for PostgreSQL 유연한 서버 인스턴스에 연결합니다. POSTGRESQL_SERVER_NAME을 사용자의 서버 이름으로 바꿉니다. 리포지토리의 루트 수준에 data.sql이라는 Azure Database for PostgreSQL 유연한 서버 데이터 파일이 있어야 합니다.

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        plsql-file: './data.sql'
    
  6. Azure에서 로그아웃하는 작업을 추가하여 워크플로를 완성합니다. 완성된 워크플로는 다음과 같습니다. 파일이 리포지토리의 .github/workflows 폴더에 표시됩니다.

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    
    jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v1
        with:
            client-id: ${{ secrets.AZURE_CREDENTIALS }}
    
    - uses: azure/postgresql@v1
      with:
        server-name: POSTGRESQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        plsql-file: './data.sql'
    
        # Azure logout
    - name: logout
      run: |
         az logout
    

배포 검토

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

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

    GitHub Actions 실행 로그.

리소스 정리

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

다음 단계