이 문서에서는 GitHub, Bitbucket, Azure Repos 또는 기타 리포지토리에서 업데이트를 가져와서 Azure App Service에 대한 CD(지속적인 배포)를 구성하는 방법을 설명합니다.
필수 조건
소스 제어 리포지토리의 Azure App Service 앱에 대한 쓰기 권한
리포지토리 준비
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 (시작 스크립트 포함). |
파이썬 |
*.py , requirements.txt 또는 runtime.txt . |
HTML |
default.htm , default.html , default.asp , index.htm , index.html 또는 iisstart.htm . |
WebJobs |
연속 WebJobs의 경우 <job_name>/run.<extension> 아래 App_Data/jobs/continuous 또는 트리거된 웹 작업의 경우 App_Data/jobs/triggered 입니다. 자세한 내용은 Kudu WebJobs 설명서를 참조하세요. |
기능 | Azure Functions에 대한 연속 배포를 참조하세요. |
배포를 사용자 지정하려면 리포지토리 루트에 .deployment
파일을 포함합니다. 자세한 내용은 배포 사용자 지정 및 사용자 지정 배포 스크립트를 참조하세요.
팁 (조언)
Visual Studio에서 리포지토리를 자동으로 만들 수 있습니다. 이 방법을 사용하면 프로젝트가 Git을 통해 즉시 배포할 준비가 됩니다.
연속 배포 활성화
Azure Portal에서 App Service 앱의 페이지로 이동하고 왼쪽 탐색 메뉴에서 배포 센터를 선택합니다.
원본 아래의 설정 탭에서 소스 제어 리포지토리 유형을 선택합니다.
원본 유형에 대한 지침에 따라 배포를 구성합니다.
나열된 모든 원본은 App Service Build Service를 사용하여 빌드할 수 있습니다. 일부 원본은 GitHub Actions 또는 Azure Pipelines를 사용하여 빌드할 수도 있습니다. 자세한 내용은 빌드 공급자를 참조하세요.
GitHub Actions 는 기본 GitHub 빌드 공급자입니다. 공급자를 변경하려면 공급자 변경을 선택하고 App Service Build Service 또는 Azure Pipelines를 선택한 다음 확인을 선택합니다.
필요한 경우 권한 부여 를 선택하고 GitHub에 대한 권한 부여 프롬프트를 따릅니다. 다른 사용자의 리포지토리에서 배포하려면 계정 변경을 선택합니다.
적절한 GitHub 조직, 리포지토리 및 분기를 선택합니다.
조직 또는 리포지토리를 찾을 수 없는 경우 GitHub에 대한 추가 권한을 사용하도록 설정해야 할 수 있습니다. 자세한 내용은 조직의 리포지토리에 대한 액세스 관리를 참조하세요.
보안 강화를 위해 인증 유형에서 사용자 할당 ID를 선택합니다.
Azure 계정에 필요한 권한이 있는 경우 App Service는 사용자 할당 관리 ID 를 만들거나 기존 관리 ID를 선택할 수 있습니다. 필요한 권한이 없는 경우 Azure 관리자와 협력하여 앱에 필요한 역할이 있는 ID를 만든 다음, 여기 드롭다운에서 선택합니다.
App Service는 앱의 언어 스택 설정을 기반으로 워크플로 템플릿을 선택하고 선택한 GitHub 리포지토리에 커밋합니다. 필요에 따라 미리 보기 파일을 선택하여 변경 내용을 저장하기 전에 워크플로 파일을 볼 수 있습니다.
저장을 선택합니다.
선택한 리포지토리 및 분기의 새 커밋이 이제 App Service 앱에 지속적으로 배포됩니다. 로그 탭에서 커밋 및 배포를 추적할 수 있습니다.
지속적인 배포 사용 안 함
연결된 원본에 대해 연속 배포를 사용하지 않도록 설정하려면 다음을 수행합니다.
Azure Portal에서 App Service 앱의 페이지로 이동하고 왼쪽 탐색 메뉴에서 배포 센터를 선택합니다.
설정 탭에서 연결 끊기를 선택합니다.
확인을 선택합니다.
GitHub의 경우 워크플로 파일은 기본적으로 리포지토리에 남아 있지만 배포 센터의로그 탭에 통합된 진행률이 더 이상 표시되지 않습니다.
빌드 공급자란?
빌드 공급자는 빌드, 테스트 및 배포를 자동화하여 Azure App Service를 통해 CI/CD(연속 통합 및 지속적인 업데이트) 솔루션을 빌드하는 데 도움이 됩니다. 일부 배포 원본은 몇 가지 빌드 공급자 옵션을 제공합니다. 나열된 모든 원본은 App Service Build Service를 사용하여 빌드할 수 있습니다.
나열된 빌드 공급자 옵션으로 제한되지는 않지만 App Service를 사용하면 나열된 옵션을 빠르게 설정하고 통합 배포 로깅을 시작할 수 있습니다.
GitHub Actions (GitHub 액션)
GitHub Actions 빌드 공급자는 GitHub 원본에만 사용할 수 있으며 GitHub 배포의 기본값입니다. 빌드 공급자는 App Service 빌드 및 배포 작업을 처리하는 GitHub 리포지토리에 GitHub Actions 워크플로 파일을 입금하여 CI/CD를 설정합니다.
기본 인증의 경우 GitHub Actions 빌드 공급자는 앱에 대한 게시 프로필을 GitHub 비밀로 추가합니다. 워크플로 파일은 이 비밀을 사용하여 App Service에서 인증합니다.
사용자 할당 ID의 경우 App Service는 권장되는 Microsoft OpenID Connect 인증을 사용하도록 설정하고 Azure 및 GitHub에서 필요한 리소스를 구성합니다. 자세한 내용은 GitHub Actions에 대해 사용자 할당 ID 옵션이 수행하는 작업을 참조하세요.
GitHub Actions 빌드 공급자는 워크플로 실행 로그의 정보를 캡처하여 앱 배포 센터의로그 탭에 표시합니다.
다음과 같은 여러 가지 방법으로 GitHub Actions 빌드 공급자를 사용자 지정할 수 있습니다.
- 워크플로 파일이 GitHub 리포지토리에서 생성되면 사용자 지정합니다. 자세한 내용은 GitHub Actions의 워크플로 구문을 참조하세요. 작업을 사용하여 App Service에 사용자 지정된 워크플로를 배포합니다
azure/webapps-deploy
. - 선택한 분기가 보호되는 경우 구성을 저장하지 않고 워크플로 파일을 미리 봅니다. 파일을 사용자 지정한 다음 리포지토리에 수동으로 추가합니다. 이 방법은 Azure Portal과의 로그 통합을 제공하지 않습니다.
- 기본 인증 또는 사용자 할당 ID를 사용하는 대신 Microsoft Entra ID 서비스 주체 를 사용하여 배포합니다. 포털에서 이 메서드를 구성할 수 없습니다.
App Service 빌드 서비스
App Service 빌드 서비스는 네이티브 App Service 배포 및 빌드 엔진입니다. 이 옵션을 선택하면 App Service는 권한을 부여한 리포지토리에 웹후크를 추가합니다. 리포지토리에 대한 코드 푸시는 웹후크를 트리거하고 App Service는 변경 내용을 끌어와 배포 작업을 수행합니다. 자세한 내용은 GitHub(Kudu)에서 배포를 참조하세요.
App Service 빌드 서비스를 사용하려면 웹후크가 작동하려면 SCM(Source Control Manager) 기본 인증 이 필요합니다. 기본 인증은 다른 인증 방법보다 덜 안전합니다. 자세한 내용은 다음을 참조하세요.
Azure Pipelines (애저 파이프라인스)
Azure Pipelines는 Azure DevOps의 빌드 구성 요소입니다. 지원되는 원본 리포지토리에서 App Service에 앱을 빌드, 테스트 및 배포하도록 파이프라인을 구성할 수 있습니다.
Azure Pipelines를 빌드 공급자로 사용하려면 App Service 배포 센터에서Azure Pipelines 옵션을 선택한 다음, Azure DevOps로 직접 이동하여 파이프라인을 구성합니다. 자세한 내용은 Azure Pipelines를 사용하여 App Service에 배포를 참조하세요.
질문과 대답
- 기본 인증을 사용하지 않도록 설정된 경우 GitHub Actions 빌드 공급자는 어떻게 작동하나요?
- 배포 중에 오류가 발생하거나 예측할 수 없는 동작이 발생할 수 있는 앱은 어떻게 되나요?
- 사용자 할당 ID 옵션은 GitHub Actions에 대해 무엇을 수행하나요?
- "관리 ID에 역할 기반 액세스를 할당하고 페더레이션된 자격 증명을 구성할 수 있는 권한이 이 앱에 충분하지 않습니다." 오류가 표시되는 이유는 무엇인가요?
- "이 ID에는 이 앱에 대한 쓰기 권한이 없습니다. 다른 ID를 선택하거나 관리자와 협력하여 이 앱의 ID에 웹사이트 기여자 역할을 부여하세요."라는 오류가 표시되는 이유는 무엇인가요?
기본 인증을 사용하지 않도록 설정된 경우 GitHub Actions 빌드 공급자는 어떻게 작동하나요?
기본 인증을 사용하지 않도록 설정하면 GitHub Actions 빌드 공급자가 기본 인증에서 작동하지 않습니다. 대신 사용자 할당 ID 옵션과 함께 GitHub Actions를 사용해 보세요. 자세한 내용은 기본 인증을 사용하지 않고 배포를 참조하세요.
배포 중에 오류가 발생하거나 예측할 수 없는 동작이 발생할 수 있는 앱은 어떻게 되나요?
공식적으로 지원되는 배포 방법은 앱을 실행하는 데 사용되는 /home/site/wwwroot 폴더의 파일을 변경합니다. 잠긴 파일로 인해 배포가 실패할 수 있습니다. 또한 파일이 모두 동시에 업데이트되지 않는 경우 배포 중에 앱이 예측 불가능하게 동작할 수 있으며, 이는 고객 관련 앱에 바람직하지 않습니다.
이러한 문제를 방지하는 몇 가지 방법이 있습니다.
- 압축을 풀지 않고 ZIP 패키지에서 직접 앱을 실행합니다.
- 배포 중에 앱을 중지하거나 오프라인 모드를 사용하도록 설정합니다. 자세한 내용은 배포 중 잠긴 파일 처리를 참조하세요.
- 자동 전환을 켠 상태로 스테이징 슬롯에 배포합니다.
사용자 할당 ID 옵션은 GitHub Actions에 대해 무엇을 수행하나요?
GitHub 원본에 대한 사용자 할당 ID를 선택하면 App Service는 Azure 및 GitHub에서 필요한 모든 리소스를 구성합니다. App Service를 활용하면 GitHub Actions를 사용하여 권장되는 Microsoft OpenID Connect 인증을 사용할 수 있습니다.
특히 App Service는 다음 작업을 수행합니다.
- Azure에서 사용자가 할당한 관리 ID와 GitHub에서 선택한 리포지토리 및 분기 간에 페더레이션 자격 증명을 만듭니다.
- 선택한 GitHub 리포지토리의 페더레이션 자격 증명에서 비밀
AZURE_CLIENT_ID
,AZURE_TENANT_ID
및AZURE_SUBSCRIPTION_ID
를 만듭니다. - 앱에 ID를 할당합니다.
그런 다음 GitHub 리포지토리의 Azure/login
GitHub Actions 워크플로에서 작업을 사용하여 OpenID Connect를 사용하여 앱으로 인증할 수 있습니다. 예를 보려면 GitHub 리포지토리에 워크플로 파일 추가를 참조하세요.
Azure 계정에 필요한 권한이 있는 경우 App Service는 사용자 할당 관리 ID를 만들고 자동으로 구성합니다. 이 ID는 앱의 ID 페이지에 표시되지 않습니다. Azure 계정에 필요한 권한이 없으면 필요한 역할이 있는 기존 ID를 선택해야 합니다.
"관리 ID에 역할 기반 액세스를 할당하고 페더레이션된 자격 증명을 구성할 수 있는 권한이 이 앱에 충분하지 않습니다."라는 오류가 표시되는 이유는 무엇인가요?
이 메시지는 Azure 계정에 GitHub Actions에 대한 사용자 할당 관리 ID를 만드는 데 필요한 권한이 없음을 나타냅니다. 앱으로 범위가 지정된 다음 권한이 필요합니다.
Microsoft.Authorization/roleAssignments/write
Microsoft.ManagedIdentity/userAssignedIdentities/write
기본적으로 Azure 사용자 액세스 관리자 및 소유자 역할에는 이러한 권한이 있지만 기여자 역할은 그렇지 않습니다. 필요한 권한이 없는 경우 Azure 관리자와 협력하여 웹 사이트 참가자 역할이 있는 사용자 할당 관리 ID를 만듭니다. 그런 다음, App Service 배포 센터의 GitHub 원본에 대한 ID 드롭다운 목록에서 해당 ID를 선택할 수 있습니다.
대체 단계 사용에 대한 자세한 내용은 GitHub Actions를 사용하여 App Service에 배포를 참조하세요.
"이 ID에는 이 앱에 대한 쓰기 권한이 없습니다. 다른 ID를 선택하거나 관리자와 협력하여 이 앱의 ID에 웹사이트 기여자 역할을 부여하세요."라는 오류가 표시되는 이유는 무엇인가요?
이 메시지는 선택한 사용자가 할당한 관리 ID가 GitHub 리포지토리와 App Service 앱 간에 OpenID Connect를 활성화하는 데 필요한 역할을 가지고 있지 않음을 나타냅니다. ID에는 앱의 소유자, 기여자 또는 웹 사이트 참가자 역할이 있어야 합니다. ID에 필요한 최소 권한 역할은 웹사이트 기여자입니다.