티스토리 뷰
<참조> https://azuredevopslabs.com/labs/vstsextend/python/
개요
Python은 서버사이드 스크립팅 언어이며 동적 및 대화형 웹 페이지를 만들기 위한 강력한 도구이다.
이 랩에서는 Azure DevOps를 사용하여 Python 애플리케이션을 Azure App Service에 배포하는 방법을 보여준다. 배포를 위해 Django 프레임워크를 사용할 것이다.
추가 학습을 원한다면 Microsoft Learn에서 Azure Pipelines 모듈로 Python 배포 자동화를 확인하라.
랩을 위한 전제 조건
1. 이 실습의 전제 조건을 알아 보려면 시작하기 페이지를 참조한다.
2. Azure DevOps 데모 생성기 링크를 클릭하고 시작하기 페이지의 지침에 따라 프로젝트를 Azure DevOps에 프로비저닝 한다.
실습 1: 소스 코드 검토
이 실습에서는 Django 프레임워크를 사용하여 빌드 된 간단한 Python 웹 애플리케이션을 사용한다. Django는 빠른 개발과 깔끔하고 실용적인 디자인을 장려하는 고수준 Python 웹 프레임워크이다. 이 실습에서는 Azure DevOps 데모 생성기에 의해 프로비저닝 된 소스 코드를 검토한다.
1. Azure DevOps 데모 생성기를 사용하여 위에서 만든 프로젝트로 이동한다.
2. Repos를 선택한다. 이 리포지토리에는 다음의 폴더가 있다.
- Application Python 및 Django를 사용하여 개발 된 웹 애플리케이션이 존재
- unit_tests CI 파이프라인의 일부. 실행할 수 있는 단위 테스트 케이스가 거의 없음
- functional_test 애플리케이션 배포 후 CD 파이프라인의 일부로 실행할 수 있는 Selenium 테스트 케이스가 존재
다음 실습에서는 Azure DevOps CI 파이프라인을 사용하여 이 애플리케이션을 빌드하고 Azure DevOps CD 파이프라인을 사용하여 애플리케이션을 Azure App Service에 배포한다.
실습 2: CI 파이프라인 검토
Python은 인터프리트 언어이므로 컴파일이 필요하지 않다. 이 실습에서는 단위 테스트를 실행하고 배포 용 릴리즈에서 사용할 애플리케이션 파일을 보관한다.
1. Pipelines → Pipelies로 이동한다. Python-CI에서 오른 쪽 확장메뉴를 클릭하여 Edit을 선택한다.
2. 빌드 파이프라인은 다음과 같다. 이 파이프라인에는 애플리케이션의 의존성을 설치하고, 단위 테스트를 실행하고, 애플리케이션을 웹 애플리케이션에 배포 할 수 있는 zip 파일(패키지)로 아카이브 및 게시하는 태스크가 있다.
3. Use Python Version 태스크를 선택한다. 이 태스크는 빌드 또는 릴리즈 파이프라인에서 에이전트에서 실행할 Python 버전을 선택하고 선택적으로 PATH에 추가하는 데 사용된다.
4. Install dependencies 태스크를 선택한다.이 태스크에서는 Command Line task를 사용하여 Django 프레임워크 버전 등과 같은 애플리케이션의 종속성을 설치한다.
5. pytest 태스크를 선택한다. 이 태스크에서는 pytest를 사용하여 Unit tests를 실행하기 위해 또한 Command Line task를 사용하며 테스트 결과를 test-results.xml 파일에 게시한다.
6. Publish Test Results를 선택한다. 이 태스크를 사용하여 이전 태스크의 테스트 결과를 Azure Pipelines에 게시한다. 게시된 테스트 결과는 빌드 또는 릴리즈 요약의 테스트 탭에 표시된다.
7. Archive application태스크를 선택한다. Archive files 태스크를 사용하여 릴리즈 파이프라인에서 사용할 애플리케이션 폴더에서 zip(패키지) 파일을 생성한다.
8.. Archive Tests 태스크를 선택한다. 릴리즈 파이프라인에서 배포 후 실행해야하는 Selenium 기능 테스트가 거의 없다. Archive files 태스크를 사용하여 릴리즈 파이프라인에서 사용할 테스트 폴더에서 zip (패키지) 파일을 생성하고 있다.
9. Publish Artifacts 태스크를 선택한다. 이 태스크는 빌드 아티팩트 (이전 태스크의 애플리케이션 및 테스트 패키지)를 Azure Pipelines에 게시하는 데 사용된다.
10. Triggers를 선택하고 Enable continuous integration를 선택한다. 빌드 파이프라인의 지속적 통합 트리거는 코드 변경이 커밋 될 때마다 시스템이 새 빌드를 자동으로 큐에 넣어야 함을 나타낸다. 변경 사항을 Save 한다.
실습 3: 릴리즈 파이프라인 구성
이 실습에서는 배포의 일부로 Azure CLI를 사용하여 Azure 리소스를 만들고 Python 애플리케이션을 프로비저닝 된 App 서비스에 배포하도록 릴리즈(CD) 파이프라인을 구성한다.
1. Pipelines 탭 아래 Releases로 이동한다. Python-CD를 선택하고 Edit을 클릭한다.
2. Dev 스테이지를 선택하고 1 job, 7 Tasks를 클릭하여 파이프라인 태스크를 확인한다.
3. 다음과 같은 태스크가 표시된다.
4. Azure CLI 태스크를 선택한다. 드롭 다운 목록에서 Azure 구독을 선택하고 Authorize를 클릭하여 Azure 서비스 연결을 구성한다.
이 태스크에서는 Azure CLI 명령을 사용하여 Python 웹 애플리케이션을 배포하는 데 필요한 Azure 리소스를 만든다.
명령을 관찰하면 $(Location), $(ResourceGroup) 등과 같은 변수가 거의 표시되지 않는다.
이는 리소스를 배포하는 데 필요한 값이며 값은 변수 섹션에 정의되어 있다. 필요한 경우이 변수 값을 원하는대로 수정할 수 있다.
5. Azure App Service Manage 태스크를 선택한다. 위에서 리소스가 생성 된 Azure 구독에 대한 서비스 연결을 선택한다. 이 태스크를 사용하여 Python 웹 애플리케이션을 지원하기 위해 이전 태스크에서 만든 Azure 앱 서비스 용 Python 확장을 설치한다. App Service 이름이 $(appservice-name) 인 변수로 설정되어 있는지 확인한다.(안 되어 있을 것이며 설정이 필요하다.)
6. Azure App Service Deploy 태스크를 선택한다. 설정이 아래와 같은지 확인한다. 이 태스크는 위에서 프로비전 된 Azure 앱 서비스에 애플리케이션 패키지를 배포하는 데 사용된다.
7. Run Functional Tests 태스크를 선택한다. 여기서는 애플리케이션이 Azure 앱 서비스에 배포 된 후 명령 줄 태스크를 사용하여 Selenium 테스트를 실행한다. 그리고 Publish Test Results 테스크를 사용하여 릴리즈 요약에 테스트 결과가 게시된다.
8. Continuous deployment trigger를 활성화 하자. Pipelines을 선택하고 Continuous deployment trigger 옵션을 선택한다. 트리거를 Enabled하고 변경사항을 Save 한다.
(Agent phase에서 Agent pool을 Azure Pipelines로 선택하고 Agent Specification을 windows-2019로 선택하는 과정에 대한 설명이 누락 되었다. 이 과정을 수행하면 Save가 활성화 된다.)
이제 필요한 Azure 리소스를 프로비저닝하고 웹 애플리케이션을 배포하고 기능 테스트를 실행하도록 릴리즈 파이프라인을 구성했다.
실습 4: 코드 변경으로 빌드 및 릴리즈 파이프라인 트리거
이전 실습에서는 빌드 및 릴리즈 파이프라인을 구성하고 CI-CD를 활성화했다. CI-CD를 트리거하도록 코드를 업데이트하겠다.
1. Repos 탭으로 이동하여 아래 경로로 이동하여 파일을 편집한다.
Application/app/templates/app/index.html
2. Edit 을 클릭하고 32번 줄로 이동하여 Continuous Delivery를 Continuous Delivery for Python로 수정하고 코드를 Commit 한다.
3. CI-CD 트리거를 활성화 했으므로 빌드가 자동으로 대기열에 추가된다. Pipelines 탭에서 Pipelines로 이동하여 진행중인 빌드를 확인한다.
빌드 요약의 Tests 탭에서 테스트 결과를 볼 수 있다. 빌드가 완료되면 CD 파이프라인을 트리거한다. 파이프라인 아래의 릴리즈로 이동하여 링크 된 릴리즈가 진행 중임을 알 수 있다. 릴리즈는 Azure 웹앱을 프로비저닝하고 연결된 빌드에서 생성된 zip 파일을 배포한다.
4. 이제 Pipelines 탭 아래의 Releases로 이동하여 진행중인 릴리즈를 확인한다.
5. 릴리즈가 성공하면 Azure Portal에 로그인하고 Python이라는 이름의 Resource Group으로 이동한다. 리소스 App Service 및 App Service Plan이 표시된다. App Service를 선택하고 개요 탭에서 Browse를 클릭하여 배포된 애플리케이션을 확인한다.
요약
이 랩에서는 Azure에서 Azure DevOps를 사용하여 Python 코드에 대한 CI (지속적 통합) 및 CD (지속적 배포) 파이프라인을 만드는 방법을 보여준다.
'Azure와 함께 하는 DevOps' 카테고리의 다른 글
50. 컨테이너용 Azure Web App에 도커로 된 JAVA 앱 배포하기 (0) | 2020.09.21 |
---|---|
49. Terraform과 Azure 파이프라인으로 클라우드의 인프라 배포 자동화하기 (0) | 2020.09.14 |
47. Azure DevOps 프로젝트로 .NET용 CI/CD 파이프라인 생성 (0) | 2020.08.31 |
46. Docker 기반 웹 애플리케이션 Azure 앱 서비스에 배포하기 (0) | 2020.08.24 |
45. LaunchDarkly와 Azure Devops로 기능 플래그 관리 (0) | 2020.08.17 |