Azure DevOps Service는 CI/CD 파이프라인 기능을 이용해 다양한 방법을 통해서 앱을 원하는 배포 머신에 배포할 수 있습니다. 그 중에서 Deployment Groups에 배포 머신을 등록하고 이를 이용하여 앱을 배포하는 방법에 대해서는 다음과 같은 절차를 통해서 접근해 보실 수 있습니다.
Azure DevOps Repo의 구성
- Azure DevOps 포털에 로그온 합니다.
- New Project를 선택하여 새로운 Project를 생성합니다.
- 생성된 Project로 들어가서 좌측의 Repos메뉴를 선택합니다.
- 이후 Import a Repository 부분에서 사용하고자 하는 Spring Boot 예제를 import 하여 구성합니다. (예, https://github.com/spring-guides/gs-spring-boot.git )
Azure Build Pipeline을 구성
- Pipelines에서 New Pipeline을 선택합니다.
- Azure Repos Git을 선택하여 이전 단계에서 구성한 Repo를 선택합니다.
- Configure your pipeline 단계에서는 Repo에 구성된 소스를 컴파일하기 위해 Maven (build your java project and run tests with Apache Maven)을 선택합니다.
- 프로젝트 내에 azure-pipelines.yml 파일이 자동 생성되고, 아래와 같이 내용을 추가합니다.
1 | pool: |
- 빌드가 완료되면, Artifacts가 생성됩니다. 해당 Artifacts는 Azure Release Pipeline에서 download 받아서 처리될 예정입니다.
Deployment Groups의 생성
- Azure Pipelines의 메뉴 중에 Deployment Groups를 선택하고, “New”을 클릭하여 생성합니다.
- “Deployment group name”에 임의의 이름 (예를 들면, ‘testdg’)을 입력하여 생성합니다.
Personal Access Token의 생성
- Azure DevOps Portal에 로그온 후에 우측 상단에 User Settings메뉴가 존재하며, 이들 중 Personal Access Token 메뉴로 들어갑니다.
- New Token을 선택합니다.
- Name 과 Expiration Date를 원하는 내용으로 입력합니다.
- Scopes는 Custom defined를 선택하고, Show All Scopes를 클릭하여 확장합니다.
- 리스트된 Scope 중에 Deployment Groups에 Read & Manage 를 선택하여 생성합니다.
- 이후 Personal Access Token을 Copy 하여 기억합니다.
Deployment Groups에 포함될 Linux VM의 생성
- Azure Portal에 로그온 합니다.
- Create a resource 를 통해서 Virtual Machine을 생성합니다.
- 적절한 Subscription을 입력합니다.
- Resource Group에 Create New를 통해서 새롭게 생성합니다.
- Virtual machine name을 입력합니다.
- Region을 선택합니다.
- Image 를 선택합니다. (예를 들어, Ubuntu Server 18.04를 선택할 수 있습니다.)
- Size 를 선택합니다. (예를 들어, Standard D2s_V3 를 선택할 수 있습니다.)
- 테스트 및 확인을 위해서 SSH (22)를 허용할 수 있습니다.
- Review + Create 를 통해서 생성합니다.
TeamServicesAgentLinux의 설치
- Azure Portal에서 앞서서 생성한 VM 리소스를 선택합니다.
- Settings에 Extensions를 선택합니다.
- +Add를 통해 “Azure Pipeline Agent For Linux”를 선택합니다.
- “Configure Azure Pipelines Agent For Linux Extension” 화면을 통해서 구성합니다.
- Azure DevOps Organization Url 에 기존에 생성한 Azure DevOps의 Project가 존재하는 조직을 포함하여 입력합니다. (예를 들어, https://dev.azure.com/organizationName")
- Team Project에 앞서서 구성한 Team Project의 이름을 입력합니다.
- Deployment Group에 앞서서 구성한 Deployment group name을 입력합니다. 이것은 앞서서 ‘Deployment Groups의 생성’ 단계에서 입력한 이름입니다.
- Personal Access Token에는 앞서서 ‘Personal Access Token의 생성’ 단계에서 복사한 값을 입력합니다.
- Review + Create를 통해 설치합니다.
- 정상적으로 설치가 완료되면, Azure DevOps의 Deployment Groups에 생성한 Deployment Group (예를 들어, ‘Testdg’)을 선택하고, Targets를 확인하면, Healthy 상태의 VM이 등록된 것을 확인할 수 있습니다.
Release Pipeline의 구성 및 실행
- Azure DevOps 포털에서 Releases를 선택하고, 새로운 Release를 생성합니다.
- Add an Artifact를 통해서 Build Pipeline에서 설정된 Project와 Source를 선택한 후에 Add 합니다.
- Add a stage에서 Empty Job을 선택합니다.
- View Stage Task를 클릭합니다.
- 새로운 Release Pipeline의 Tasks에 존재하는 Agent Job을 선택하고, 우측의 remove 버튼을 클릭하여 제거합니다.
- Add phase options를 클릭하여, add a deployment group job을 선택합니다.
- Deployment group job 에서 임의의 Name을 입력하고, Deployment targets의 Deployment group은 앞서서 생성한 Deployment Group을 선택합니다. (예를 들어, ‘testdg’)
- Add a task to Deployment Group Job (+ 메뉴)을 통해 Task를 추가합니다. Task는 ‘Bash’를 검색하여 추가합니다.
- Bash task 안에서 Type을 inline으로 선택하고 다음의 script 를 입력합니다.
1
2
3sudo mkdir /lib/artifacts/
sudo cp $(System.DefaultWorkingDirectory)/_Test/drop/spring-boot-complete-0.0.1-SNAPSHOT.jar/lib/artifacts/
sudo java -jar /lib/artifacts/spring-boot-complete-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 & - 저장하고, release 를 생성한 후에 실행합니다.
테스트 및 확인 (Linux VM의 추가 Port 오픈)
- Azure 포털에서 이전 단계에서 생성한 VM 환경으로 들어갑니다.
- Settings의 Networking메뉴를 선택하고, 이후 Add Inbound Port Rule을 선택합니다.
- Source Port range는 “*”, Destination Port는 “8080”, Source 와 Destination을 둘 다 Any로 선택하고, TCP에 대해서 “Allow”로써 추가합니다.
- 이후 TCP 8080 포트가 오픈 됩니다.
- 해당 VM의 public IP:8080 을 통해 Spring Boot App의 실행을 확인합니다.
※본 정보의 내용(첨부문서, 링크처 등을 포함)은 작성일 현재이며, 예고없이 변경될 수 있습니다.