Azure App Service에 .NET Core 웹 앱과 WebJob을 Azure DevOps(Azure Pipelines)로 배포

할 일



웹 애플리케이션 + WebJob 애플리케이션을 Azure App Service에 자동 배포하고 싶습니다!

소스 코드와 App Service는 ↓ 느낌의 것을 상정한다.





파이프라인을 만드는 절차



우선 전체상으로부터.

기본적인 사고방식은 publish할 때 App Service와 WebJob(Kudu)의 파일 폴더 구성에 맞추어 출력하고 그대로 App Service에 배포한다는 것이다.



템플릿에서 만들기



Pipelines -> Builds -> New -> New build pipeline



Use the classic editor



리포지토리 선택



ASP.NET Core 템플릿 선택





이것을 베이스로 파이프라인을 만든다.

dotnet restore/build/test



특히 바꾸지 않아도 된다.

dotnet publish



WebJob과 웹 응용 프로그램마다 publish 작업을 만듭니다.

Job publish




변경할 부분
변경 내용


Publish Web Projects
체크 해제

Zip Published Projects
체크 해제

Add project name to publish path
체크 해제

Path to project(s)
.csproj 파일을 명시적으로 설정하도록 변경

Arguments
output 파라미터를 아래와 같이 변경

--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)/App_Data/jobs/triggered/{ジョブ名}
JobA에 대한 작업



JobB에 대한 작업



웹 앱 publish




변경할 부분
변경 내용


Zip Published Projects
체크 해제

Add project name to publish path
체크 해제




run.cmd 및 settings.job 만들기



Powershell 작업을 추가하고 각 작업에 대해 run.cmd 및 settings.job을 만드는 스크립트를 작성합니다.
※run.cmd 와 settings.job 는 미리 WebJob 의 프로젝트 바로 아래에 두어도 된다. 이 경우이 절차는 건너 뜁니다.






변경할 부분
변경 내용


유형
인라인으로 변경

스크립트
스크립트 작성(샘플 및 스크린샷 참조)

Advanced -> Working Directory$(Build.ArtifactStagingDirectory)

아래는 분당 실행되는 작업의 run.cmd 및 settings.job을 생성하는 스크립트 샘플입니다.
"dotnet {モジュール名}.dll" | out-file App_Data/jobs/triggered/{ジョブ名}/run.cmd -Encoding ASCII; 
"{`"schedule`": `"0 * * * * *`"}" | out-file App_Data/jobs/triggered/{ジョブ名}/settings.job -Encoding ASCII; 



App Service 배포



Azure App Service Deploy 작업을 추가하고 구독, App Service 이름 등 필요한 설정을 포함합니다.





변경할 부분
변경 내용


Package or folder$(Build.ArtifactStagingDirectory)
Additional Deployment Options
Deployment method를 Zip Deploy로 설정




Publish Artifact



그대로 둘 수 있습니다.

테스트 실행



Save & queue 하면 파이프라인을 실행할 수 있다.





Enable system diagnostics를 체크하면 로그 출력이 상세해진다. 만약 실행에 실패했을 경우는 로그를 보고 원인을 특정한다.



실행 결과 확인



Azure 포털과 웹 사이트를 보면서 움직이는 것이 확인되었습니다!





끝.

참고

좋은 웹페이지 즐겨찾기