Azure App Service에 로컬 Git 배포

이 방법 가이드에서는 로컬 컴퓨터의 Git 리포지토리에서 Azure App Service에 앱을 배포하는 방법을 보여 줍니다.

참고 항목

SCM 기본 인증이이 비활성화되면 로컬 Git 배포가 작동하지 않으며 앱의 배포 센터에서 로컬 Git 배포를 구성할 수 없습니다.

필수 조건

이 방법 가이드의 단계를 수행하려면

  • Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

  • Git를 설치합니다.

  • 배포할 코드가 있는 로컬 Git 리포지토리가 있어야 합니다. 샘플 리포지토리를 다운로드하려면 로컬 터미널 창에서 다음 명령을 실행합니다.

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

리포지토리 준비

Azure App Service 빌드 서버에서 자동화된 빌드 기능을 가져오려면 리포지토리 루트에 프로젝트의 올바른 파일이 있는지 확인합니다.

런타임 루트 디렉터리 파일
ASP.NET(Windows만 해당) *.sln, *.csproj 또는 default.aspx
ASP.NET Core *.sln 또는 *.csproj
PHP index.php
Ruby(Linux만 해당) Gemfile
Node.JS server.js, app.js 또는 package.json(시작 스크립트 포함)
Python *.py, requirements.txt 또는 runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html 또는 iisstart.htm
WebJobs 연속 WebJobs의 경우 App_Data/jobs/continuous 아래 <job_name>/run.<extension> 또는 트리거된 웹 작업의 경우 App_Data/jobs/triggered입니다. 자세한 내용은 Kudu WebJobs 설명서를 참조하세요.
함수 Azure Functions에 대한 연속 배포를 참조하세요.

배포를 사용자 지정하려면 리포지토리 루트에 .deployment 파일을 포함합니다. 자세한 내용은 배포 사용자 지정사용자 지정 배포 스크립트를 참조하세요.

참고 항목

Visual Studio를 사용하는 경우 Visual Studio에서 자동으로 리포지토리를 만들도록 합니다. 프로젝트는 Git을 통해 즉시 배포할 준비가 됩니다.

배포 사용자 구성

Azure App Service의 배포 자격 증명 구성을 참조하세요. 사용자 범위 자격 증명 또는 애플리케이션 범위 자격 증명을 사용할 수 있습니다.

Git 사용 앱 만들기

App Service 앱이 이미 있고 해당 앱에 맞게 로컬 Git 배포를 구성하려면, 대신 기존 앱 구성을 참조하세요.

--deployment-local-git 옵션과 함께 az webapp create를 실행합니다. 예시:

az webapp create --resource-group <group-name> --plan <plan-name> --name <app-name> --runtime "<runtime-flag>" --deployment-local-git

출력에는 https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git와 같은 URL이 포함되어 있습니다. 다음 단계에서 이 URL을 사용하여 앱을 배포합니다.

기존 앱 구성

아직 앱이 없는 경우 대신 Git 사용 앱 만들기를 참조하세요.

az webapp deployment source config-local-git를 실행합니다. 예시:

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

출력에는 https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git와 같은 URL이 포함되어 있습니다. 다음 단계에서 이 URL을 사용하여 앱을 배포합니다.

이 URL에는 사용자 범위 배포 사용자 이름이 포함됩니다. 원하는 경우 대신 애플리케이션 범위 자격 증명을 사용할 수 있습니다.

웹앱 배포

  1. 로컬 터미널 창에서 디렉터리를 Git 리포지토리의 루트로 변경하고 앱에서 가져온 URL을 사용하여 Git 원격을 추가합니다. 선택한 방법에서 URL을 제공하지 않으면 <app-name>의 앱 이름과 함께 https://<app-name>.scm.azurewebsites.net/<app-name>.git을 사용합니다.

    git remote add azure <url>
    

    참고 항목

    New-AzWebApp을 사용하여 PowerShell에서 Git 사용 앱을 만든 경우 원격이 이미 생성되어 있습니다.

  2. git push azure master을 사용하여 Azure 원격으로 푸시합니다(배포 분기 변경 참조).

  3. Git 자격 증명 관리자 창에서 Azure 로그인 자격 증명이 아닌 사용자 범위 또는 애플리케이션 범위 자격 증명을 입력합니다.

    Git 원격 URL에 이미 사용자 이름과 암호가 포함되어 있으면 메시지가 표시되지 않습니다.

  4. 출력을 검토합니다. ASP.NET용 MSBuild, Node.js용 npm install 및 Python용 pip install과 같은 런타임 관련 자동화가 표시될 수 있습니다.

  5. Azure Portal의 앱으로 이동하여 콘텐츠가 배포되었는지 확인합니다.

배포 분기 변경

App Service 리포지토리에 커밋을 푸시하면 App Service는 기본적으로 master 분기에 파일을 배포합니다. 많은 Git 리포지토리가 master에서 main으로 이동하고 있으므로 다음 두 가지 방법 중 하나로 App Service 리포지토리의 올바른 분기로 푸시해야 합니다.

  • 다음과 같은 명령을 사용하여 명시적으로 master에 배포합니다.

    git push azure main:master
    
  • DEPLOYMENT_BRANCH 앱 설정을 지정하여 배포 분기를 변경한 다음 사용자 지정 분기에 커밋을 푸시합니다. Azure CLI를 사용하여 수행하려면 다음을 수행합니다.

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    

    설정에서 구성을 선택하고 이름이 DEPLOYMENT_BRANCH이고 값이 main인 새 애플리케이션 설정을 추가하여 Azure Portal에서 DEPLOYMENT_BRANCH 앱 설정을 변경할 수도 있습니다.

배포 문제 해결

Git을 사용하여 Azure에서 App Service 앱에 게시할 때 다음과 같은 일반적인 오류 메시지가 표시될 수 있습니다.

메시지 원인 해결 방법
Unable to access '[siteURL]': Failed to connect to [scmAddress] 앱이 실행 중이지 않습니다. Azure Portal에서 앱을 시작합니다. 웹앱이 중지되면 Git 배포를 사용할 수 없습니다.
Couldn't resolve host 'hostname' azure 원격의 주소 정보가 잘못되었습니다. git remote -v 명령을 사용하여 모든 원격을 관련 URL과 함께 나열합니다. azure 원격의 URL이 올바른지 확인합니다. 필요한 경우 제거하고 올바른 URL을 사용하여 이 원격을 다시 만드세요.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. git push 중에 분기를 지정하지 않았거나 .gitconfigpush.default 값을 설정하지 않았습니다. git push를 다시 실행하고 기본 분기를 지정합니다(git push azure main).
Error - Changes committed to remote repository but deployment to website failed. azure의 앱 배포 분기와 일치하지 않는 로컬 분기를 푸시했습니다. 현재 분기가 master인지 확인합니다. 기본 분기를 변경하려면 DEPLOYMENT_BRANCH 애플리케이션 설정을 사용합니다(배포 분기 변경 참조).
src refspec [branchname] does not match any. azure 원격에서 기본 이외의 분기로 푸시하려고 했습니다. git push를 다시 실행하고 기본 분기를 지정합니다(git push azure main).
RPC failed; result=22, HTTP code = 5xx. 이 오류는 HTTPS를 통해 큰 git 리포지토리를 푸시하려고 시도하는 경우 발생할 수 있습니다. postBuffer를 확장하도록 로컬 머신에서 git 구성을 변경합니다. 예: git config --global http.postBuffer 524288000
Error - Changes committed to remote repository but your web app not updated. 추가 필수 모듈을 지정하는 package.json 파일이 있는 Node.js 앱을 배포했습니다. 실패에 관한 추가 컨텍스트는 이 오류 전의 npm ERR! 오류 메시지를 검토하세요. 다음은 이 오류 및 해당 npm ERR! 메시지의 알려진 원인입니다.

잘못된 형식의 package.json 파일: npm ERR! Couldn't read dependencies.

Windows용 이진 배포가 없는 네이티브 모듈:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
또는
npm ERR! [modulename@version] preinstall: \make || gmake\

추가 리소스