Azure Pipelines란 무엇인가요?

완료됨

Microsoft Azure Pipelines는 코드 프로젝트를 자동으로 빌드, 테스트, 배포하는 데 사용할 수 있는 클라우드 서비스입니다. 다른 사용자가 사용할 수 있도록 설정할 수도 있으며, 이 경우 모든 언어 또는 프로젝트 형식에 대해서만 작동합니다.

Mara는 Azure Pipelines에서 팀의 빌드 프로세스를 복제하는 데 큰 관심이 있습니다. 테스터인 Amita는 마침내 여유 시간이 생겼고 상황을 파악하고자 합니다. Mara는 이제 Azure Pipelines를 사용하여 Space Game 웹 사이트를 위한 자동화된 빌드 파이프라인을 설정한다는 자신의 계획을 알려줄 좋은 기회라고 생각했습니다.

Mara의 계획을 듣고 Amita는 약간 주저하지만 Mara의 계획은 빌드 프로세스를 복제하되 교체하는 것이 아니기 때문에 호기심도 생깁니다. Amita는 빌드 프로세스에서 몇 가지 개선 사항을 사용할 수 있다는 점을 알고 있습니다.

Amita: 흥미롭게 들리긴 하지만 DevOps 관련 요점부터 입증하고 싶어할 것 같아요!

Mara: 저에 대해 이미 잘 알고 계시네요!

Amita: 우리가 이미 한 일을 하려고 하는데 어떤 개선 사항을 기대하시나요?

Mara: Azure Pipelines로 이전하면 많은 이점이 있습니다. Azure Pipelines는 클라우드 서비스입니다. 코드를 자동으로 빌드, 테스트하는 데 사용할 수 있죠. 그리고 해당 코드를 다른 사람이 사용하도록 할 수도 있어요. 모든 언어 또는 프로젝트 형식에 작동합니다.

빌드 서버에 문제가 발생하고 최신 상태로 유지하는 것도 어려워집니다. Azure Pipelines는 Microsoft에서 호스트하고 유지 관리하는 빌드 서버를 제공하므로 항상 최신 패치와 보안 업데이트가 있습니다. 따라서 빌드 서버 유지 관리에 대해 걱정할 필요가 없죠.

게다가 다른 사람이 작성한 모든 종류의 스크립트도 있습니다. 하지만 그중 일부는 어떻게 작동하는지조차 이해하지 못합니다. Azure Pipelines는 작업 카탈로그가 함께 제공됩니다. ‘작업’은 일련의 입력으로 추상화된 패키지 스크립트 또는 절차입니다. 빌드 스크립트가 수행하는 기능을 해당 작업에 매핑하려고 합니다. 최소한의 작업 방식을 표준화하고 자동화 수준을 높일 수 있습니다.

Azure Pipelines에서는 다양한 언어와 앱 유형을 사용할 수 있습니다. 이러한 방향으로 확장하려는 경우에는 도구를 바꿀 필요가 없습니다.

Amita: 이기적으로 보인다는 것을 알지만 제가 왜 신경을 써야 하죠? 저의 가장 큰 문제는 언제 빌드가 테스트할 준비가 되는지 알지 못한다는 거예요. 때때로 잊지 않고 스프레드시트를 업데이트하면 좋지만 대부분은 까맣게 잊어버리죠. 늘 제가 마지막에 업데이트 사실을 알게 되는 것 같아요.

Mara: 맞아요, 그 문제를 쉽게 해결할 수 있어요. 빌드가 준비되면 메일 또는 다른 알림을 통해 Amita 님에게 자동으로 알리도록 파이프라인을 설정할 수 있어요. 누군가가 알려줄 때까지 기다릴 필요가 없습니다.

Amita: 좋아요, 이제 목표는 앱을 빌드하고 준비가 되면 제게 알려주시는 거죠?

Mara: 맞아요! 물론, 더 큰 계획이 있긴 해요. 모두가 첫 번째 단계를 마음에 들어 하니 진정한 연속 통합을 경험할 수 있도록 해당 단계를 빌드하려고 합니다.

Amita: 연속 통합에 대해 5분 정도 간단하게 설명 좀 부탁드려요.

Mara: 그림을 그려볼게요.

Mara가 화이트보드로 이동하여 파이프라인을 그립니다.

손으로 그린 CI 파이프라인 그림 스크린샷. 빌드, 테스트, 확인 스테이지가 코드에 작동합니다. 빌드 아티팩트가 출력입니다.

Mara: 저의 CI 파이프라인입니다. CI는 팀원이 변경 내용을 버전 제어로 커밋할 때마다 코드 빌드와 테스트를 자동화하는 프로세스입니다. 테스트를 아직 자동화하지 않았는데 시간이 좀 걸릴 거예요.

‘파이프라인’은 앱에 대한 연속 통합 프로세스를 정의하고, 작업()이라는 단계로 구성되어 있습니다. 빌드, 테스트, 배포 단계가 실행되는 방법을 정의하는 스크립트로 생각할 수 있습니다. 스크립트를 작업에 매핑하려고 해요.

코드 변경 내용()을 제출하면 파이프라인이 실행됩니다. 파이프라인이 자동으로 실행되도록 구성하거나 파이프라인을 수동으로 실행할 수 있습니다. GitHub, Bitbucket 또는 Subversion과 같은 소스 리포지토리에 파이프라인을 연결합니다. 이 스프린트를 위한 작업 중 하나는 GitHub 사용을 시작하는 것이므로 이 프로젝트에 GitHub를 사용할 거예요.

‘빌드 에이전트’ 는 코드를 빌드하거나 배포합니다. 빌드 또는 배포가 실행되면 시스템은 하나 이상의 작업을 시작합니다. 에이전트는 한 번에 빌드 또는 배포 작업을 하나씩 실행하는 설치 가능한 소프트웨어입니다. Azure Pipelines를 사용하므로 Microsoft 호스팅 에이전트를 사용할 수 있습니다. Microsoft 호스팅 에이전트를 사용하므로 유지 관리와 업그레이드가 자동으로 처리됩니다. 파이프라인을 실행할 때마다 새로운 가상 머신을 얻게 됩니다. 사용 중인 Ubuntu 22.04를 비롯하여 선택할 수 있는 가상 머신 이미지가 여러 개 있습니다.

파이프라인의 최종 제품은 빌드 아티팩트()입니다. 아티팩트는 앱을 테스트하거나 배포하는 데 필요한 컴파일된 최소 단위라고 할 수 있습니다. 예를 들어 다음 항목이 아티팩트일 수 있습니다.

  • .jar 또는 .zip 파일로 패키지된 Java 또는 .NET 앱.
  • C++ 또는 JavaScript 라이브러리.
  • 가상 머신, 클라우드 또는 Docker 이미지.

정말 간단하죠. 우리도 이렇게 할 수 있죠.

Amita: 멋진데요. 아티팩트를 얻기 위해 해야 할 일과 걸리는 시간을 알아볼까요. 데모를 제공해 주실 수 있죠.

Mara: 그럴게요!

빌드 에이전트 관리

이제 사용자와 팀이 Azure Pipelines에 익숙해지게 되었으므로 빌드 에이전트에 대해 좀 더 알아보겠습니다. 빌드 에이전트는 빌드 또는 배포 작업을 한번에 하나씩 실행하는 설치 가능한 소프트웨어의 일부입니다. 코드를 빌드하거나 소프트웨어를 배포하려면 하나 이상의 에이전트가 필요합니다. 코드와 사람을 더 추가하게 되면 결국에는 에이전트가 두 개 이상 필요하게 됩니다. 에이전트에는 두 가지 기본 범주가 있습니다.

  • Microsoft 호스팅 에이전트는 Microsoft에서 관리하는 에이전트이며 유지 관리 및 업그레이드가 자동으로 처리됩니다. 파이프라인을 실행할 때마다 파이프라인의 각 작업에 대한 새 에이전트를 가져옵니다. 이 모듈에서는 Microsoft 호스팅 에이전트를 사용하는 로컬 개발 환경을 선택하는 경우 Microsoft 호스팅 에이전트에서 파이프라인을 실행하게 됩니다. Microsoft에서 호스트하는 에이전트에서 파이프라인을 실행하려면 조직에 Microsoft에서 호스트된 병렬 작업이 하나 이상 있어야 합니다. Microsoft 호스트된 병렬 작업 수를 확인하여 Microsoft에서 호스트하는 병렬 작업이 하나 이상 있는지 확인합니다. Microsoft에서 호스트하는 병렬 작업 수가 0인 경우(새 Azure DevOps 조직에는 일반적으로 병렬 작업이 0개임) 무료 부여를 요청할 수 있습니다. 무료 지원 승인 프로세스에는 일반적으로 영업일 기준 2~3일이 소요됩니다.

  • 자체 호스팅 에이전트는 사용자가 관리하는 에이전트입니다. 에이전트 소프트웨어 및 원하는 도구를 설치하여 가상 머신 또는 컨테이너를 구성하고 Azure DevOps에 에이전트를 등록합니다. 이 모듈에서는 자체 호스팅 에이전트를 사용하여 GitHub Codespaces 개발 환경을 선택하는 경우 GitHub Codespaces 컨테이너에서 실행되는 자체 호스팅 에이전트를 사용합니다. GitHub Codespaces 컨테이너에서 에이전트를 자체 호스팅하는 것은 일반적인 프로덕션 시나리오는 아니지만 이 학습 모듈을 완료할 수 있는 환경을 제공합니다.

지식 점검

1.

다음 중 ‘빌드 아티팩트’의 예는 무엇인가요?