다음을 통해 공유


Azure Database for MySQL - 유연한 서버에 대한 Azure Pipelines

적용 대상: Azure Database for MySQL - 유연한 서버

Azure Pipelines를 사용하여 빌드가 성공할 때마다 Azure Database for MySQL 유연한 서버에 데이터베이스 업데이트를 자동으로 배포할 수 있습니다. Azure CLI 작업을 사용해서 데이터베이스에 대해 SQL 파일 또는 인라인 SQL 스크립트로 데이터베이스를 업데이트할 수 있습니다. 이 작업은 Linux, macOS 또는 Windows 운영 체제에서 실행되는 플랫폼 간 에이전트에서 실행할 수 있습니다.

필수 조건

  • Azure 계정. 계정이 없으면 체험 계정을 얻습니다.

  • Azure 계정에 대한 Azure Resource Manager 서비스 연결

  • Microsoft 호스팅 에이전트에 Azure CLI가 미리 설치되어 있어야 합니다. 하지만 프라이빗 에이전트를 사용하는 경우 빌드 및 릴리스 에이전트를 실행하는 컴퓨터에 Azure CLI를 설치합니다. 에이전트가 Azure CLI가 설치된 컴퓨터에서 이미 실행되고 있으면 모든 관련 스테이지 변수가 업데이트되도록 에이전트를 다시 시작합니다.

이 빠른 시작에서는 다음과 같은 가이드 중 하나에서 만들어진 리소스를 시작 지점으로 사용합니다.

  • Azure Portal 또는 Azure CLI를 사용하여 Azure Database for MySQL 유연한 서버 인스턴스를 만듭니다.

SQL 파일 사용

다음 예제에서는 데이터베이스 인수를 전달하고 execute 명령어를 실행하는 방법을 보여줍니다.

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptLocation: inlineScript
    arguments:
      -SERVERNAME mydemoserver `
      -DBNAME pollsdb `
      -DBUSER pollsdbuser`
      -DBPASSWORD pollsdbpassword
    inlineScript: |
      az login --allow-no-subscription
      az mysql flexible-server execute --name $(SERVERNAME) \
      --admin-user $(DBUSER) --admin-password '$(DBPASSWORD)' \
      --database-name $(DBNAME) \
      --file-path /code/sql/db-schema-update.sql

인라인 SQL 스크립트 사용

다음 예제에서는 execute 명령어를 사용하여 인라인 SQL 스크립트를 실행하는 방법을 보여줍니다.

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptLocation: inlineScript
    arguments:
      -SERVERNAME mydemoserver `
      -DBNAME pollsdb `
      -DBUSER pollsdbuser`
      -DBPASSWORD pollsdbpassword
      -INLINESCRIPT 
    inlineScript: |
      az login --allow-no-subscription
      az mysql flexible-server execute --name $(SERVERNAME) \
      --admin-user $(DBUSER) --admin-password '$(DBPASSWORD)' \
      --database-name $(DBNAME) \
      --query-text "UPDATE items SET items.retail = items.retail * 0.9 WHERE items.id =100;" 

작업 입력

Azure Pipelines에서 Azure CLI 작업을 사용할 때 모든 작업 입력의 전체 목록을 볼 수 있습니다.

매개 변수 설명
azureSubscription (필수) 배포에 대한 Azure Resource Manager 구독을 제공합니다. 이 매개 변수는 선택한 작업 버전이 0.*일 때만 표시됩니다. Azure CLI 작업 v1.0은 Azure Resource Manager 구독만 지원합니다.
scriptType (필수) 스크립트 유형을 제공합니다. 지원되는 스크립트는 PowerShell, PowerShell Core, Bat, 셸 및 스크립트입니다. Linux 에이전트에서 실행할 때 bash 또는 pscore 중 하나를 선택합니다. Windows 에이전트를 실행할 때 batch, pspscore 중 하나를 선택합니다.
scriptLocation (필수) 실제 파일 경로와 같은 스크립트 경로를 제공하거나 스크립트 인라인을 제공하는 경우 Inline script를 사용합니다. 기본값은 scriptPath입니다.
scriptPath (필수) 스크립트의 정규화된 경로(Windows 기반 에이전트를 사용하는 경우에는 .ps1, .bat 또는 .cmd, Linux 기반 에이전트를 사용하는 경우에는 .ps1 또는 .sh ) 또는 기본 작업 디렉터리에 상대적인 경로입니다.
inlineScript (필수) 여기에서 스크립트를 인라인으로 작성할 수 있습니다. Windows 에이전트를 사용할 때는 PowerShell 또는 PowerShell Core 또는 일괄 처리 스크립팅을 사용하고, Linux 기반 에이전트를 사용할 때는 PowerShell Core 또는 셸 스크립팅을 사용합니다. 일괄 처리 파일의 경우 모든 Azure 명령 앞에 ‘call’ 접두사를 사용합니다. 또한 인수를 사용해서 이 스크립트로 사전 정의된 및 사용자 정의 변수를 전달할 수 있습니다.
PowerShell/PowerShellCore/셸 예제: az --version az account show
일괄 처리 예제: call az --version call az account show.
arguments (선택 사항) 스크립트에 전달되는 모든 인수를 제공합니다. 예를 들면 -SERVERNAME mydemoserver입니다.
powerShellErrorActionPreference (선택 사항) PowerShell/PowerShell Core 스크립트 위에서 $ErrorActionPreference = 'VALUE' 줄을 앞에 추가합니다. 기본값은 stop입니다. 지원되는 값은 stop, continue 및 silentlyContinue입니다.
addSpnToEnvironment (선택 사항) 선택한 Azure 엔드포인트의 서비스 주체 ID 및 키를 스크립트의 실행 환경에 추가합니다. 스크립트에서 $env:servicePrincipalId, $env:servicePrincipalKey 및 $env:tenantId 변수를 사용할 수 있습니다. 이것은 Azure 엔드포인트에 서비스 주체 인증 체계가 있는 경우에만 적용됩니다. 기본값은 false입니다.
useGlobalConfig (선택 사항) false이면 이 작업에 고유 개별 Azure CLI 구성 디렉터리가 사용됩니다. 병렬 릴리스에서 Azure CLI 작업을 실행하는 데 사용될 수 있습니다.
기본값: false
workingDirectory (선택 사항) 스크립트가 실행되는 현재 작업 디렉터리입니다. Empty는 $(System.DefaultWorkingDirectory)에 해당하는 리포지토리(빌드) 또는 아티팩트(릴리스)의 루트입니다.
failOnStandardError (선택 사항) true이면 오류가 StandardError 스트림에 기록될 때 이 작업이 실패합니다. 표준 오류를 무시하고 종료 코드를 사용하여 상태를 확인하려면 확인란을 선책 취소합니다. 기본값은 false입니다.
powerShellIgnoreLASTEXITCODE (선택 사항) false이면 스크립트 끝에 if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } 줄이 추가됩니다. 이렇게 하면 외부 명령의 마지막 종료 코드가 PowerShell의 종료 코드로 전파됩니다. 그렇지 않으면 줄이 스크립트 끝에 추가되지 않습니다. 기본값은 false입니다.

CLI 작업 문제가 있으면 빌드 및 릴리스 문제 해결 방법을 참조하세요.

다음 단계

Azure 배포에는 몇 가지 관련된 작업이 있습니다.