본문 바로가기
IT/Azure

DevOps로 ASP.NET 빌드 후 WebApp에 배포

by rapker 2023. 4. 25.
반응형
728x90


ASP.NET으로 제작된 웹 프로그램을 Azure App Service인 WebApp에 배포하는 시나리오 입니다.

  • Repo -> Build -> Staging -> Production



사전 필요학습

  1. Git (Clone, commit, push)
  2. ASP.Net Framework (프로젝트 생성)
  3. Azure WebApp (생성, 슬롯)

 

사전 준비

  1. Azure WebApp 생성
  2. WebApp에 Staging 이라는 슬롯 생성
  3. Git 설치
  4. ASP.NET 프로젝스 생성

 


학습 목표

  1. Pipeline - Build
  2. Pipeline - Release (Azure App Service - Web App)
    1.  Staging 배포 후 Production으로 자동 배포
    2.  Staging 배포 후 Production으로 수동 배포

 

 

가이드 목록

  1. 프로젝트 생성
  2. 레포지토리
  3. Pipelines - Build
  4. Pipelines - Release
    1. Staging에 자동배포
    2. Production에 자동배포
  5. Production 수동배포로 변경
  6. 배포 시나리오
    1. 시나리오 1
    2. 시나리오 2

 





프로젝트 생성


GO DevOps







레포지토리


DevOps에는 프로젝트 별로 Git Repository를 제공 합니다.
다른 Git 서비스를 이용하고 DevOps에는 빌드와 배포만 사용하고자 할 때는 이 단 계를 건너 뛰어도 됩니다.


레포지토리를 생성하거나 다른 Git으로부터 가져올 수 있습니다.

여기서는 새로 생성하는방법을 알아 볼께요

레포지토리 초기화

  • Add a .gitignore : git에서 관리하지 않을 목록 (예제 에서는 Visual Studio 사용)
  • Initialize : Repository 초기화




레포지토리 크리덴셜 생성
    DevOps 계정에 Repository Credential을 생성해주어야 합니다.
    Credential은 DevOps계정당 하나만 설정되는 항목이므로 이미 다른 프로젝트에서 생성한적이 있으면 이 단계는 스킵해도 됩니다.




아래 화면은 이미 크리덴셜이 있는 상태





레포지토리에 ASP.NET Framework 프로젝트 Push (생략)


반응형




Pipelines - Build



DevOps Build Pipeline 생성



다양한 Git 서비스로부터 빌드를 실행할 수 있습니다.


Azure Web App for ASP.NET Template 선택



빌드 파이프라인 설정 시작


Web App이 생성되어 있는 구독 선택후 인증


Web App 선택


사용하지 않을 Task 비활성화

  • VsTest 생성하지 않았고
  • 배포(Deploy)는 Pipeline - Release에서 별도로 설정

 


빌드설정 저장 하면서 빌드 성공 확인을 위해 빌드 실행




아래와 같이 빌드가 성공해야 합니다.

 




Pipelines - Release



릴리스 파이프라인은 크게 2가지 형태로 구성되어 있습니다.

  1. Artifacts - 어떤 내용을
  2. Stages - 어디로 배포 한다.


Artifact에서 Staging 배포를 거쳐 Production 으로 자동 배포하는 설정입니다.

  • Release Pipeline 생성




Stage 설정 - Staging


Staging 이라는 Stage 생성


Staging Stage 설정 시작




Azure 구독, 앱서비스 Type, 앱서비스 선택



Deploy to Slot or App Service Environment 선택하여 WebApp이 위치한 리소스 그룹 선택과, WebApp의 슬롯 staging 선택 후 저장

 


Artifacts 설정


Artifact 추가 시작



빌드된 결과물을 배포하기 위해 배포하려는 빌드 파이프 라인 선택

 




빌드가 끝났을때 마다 본 Pipeline이 실행될 수 있도록 트리거 설정




이전에 빌드 했던 결과물을 Azure WebApp - Staging에 배포가 되는지 확인

 

 

 

 

Stage 추가 - Production



Production 으로의 배포 환경을 추가하기위해 Pipeline의 설정으로 들어갑니다.


Stage 추가




Web App이 생성되어 있는 구독 선택 후 해당 앱서비스 선택



배포슬롯 선택 (Production)

 

 

 

Product 배포 확인


이전에 빌드 했던 결과물이 Staging배포 후 Production까지 자동으로 배포가 되는지 확인

배포 시작


릴리스 정보 보기 클릭



Staging Stage 배포중


Production Stage 배포중


Staging, Production에 자동 배포 완료

 



Production 수동 배포로 변경


지금까지의 설정은
빌드가 발생하면 Staging배포 후 Production까지 자동으로 배포 환경입니다.

이번엔
빌드 후 Staging까지는 자동으로 배포 되지만 Production 배포는 수동으로 진행하도록 변경합니다.

Pipeline 설정으로 진입



트리거 설정 진입

 

트리거 옵션 변경 : After stage -> Manual only

 

 


배포 시나리오

시나리오 1

  1. DevOps CI/CD환경 구축 후
  2. 여러번의 빌드가 있었고
  3. 최근 빌드된 내용까지 Staging에 반영되어 있다.
  4. 현재 Staging에 있는 버전이 안정적인듯 보이므로
  5. Production으로 배포 하려고 한다.


현재 파이프라인 상태



Staging에 마지막으로 배포되었던 결과물을 Production으로 배포 시작



Production 환경을 Release-2 에서 Release-7로 배포




배포후 파이프라인의 배포 상황

 



시나리오 1-1

 

  1. 앗뿔사 시나리오 1 에서 배포 했던 버전이 있어서
  2. 이전에 Staging에만 배포했던 것중
  3. 안정적이였다고 판단되는 버전을
  4. Production으로 배포하려고 한다.

 


Staging에만 배포되었던 Release-6을 Production으로 배포




현재 배포되어 있는 Release-7 에서 Release-6으로 배포




배포후 파이프라인의 배포 상황



반응형
LIST