Microsoft 호스팅 또는 자체 호스팅 빌드 에이전트 중에 선택

완료됨

이 단원에서는 빌드 에이전트를 선택할 때 고려해야 할 요인에 대해 알아봅니다. Microsoft 호스팅 에이전트를 사용하면 어떤 이점과 제한이 있는지, 그리고 개발자 고유의 프라이빗 빌드 에이전트를 설정할 때 무엇을 해야 하는지 알아봅니다.

빌드 에이전트와 에이전트 풀이란 무엇일까요?

빌드 에이전트는 빌드 작업을 수행하는 시스템입니다. 빌드 프로세스를 실행하는 전용 서버라고 생각하시면 됩니다.

하루에 여러 번 빌드 요청을 수신하는 Azure Pipelines 프로젝트가 있거나 각각 동일한 유형의 빌드 에이전트를 사용할 수 있는 여러 프로젝트가 있다고 가정해 보세요. 빌드 에이전트를 에이전트 풀로 구성하면 항상 각 빌드 요청을 처리할 수 있는 서버를 사용할 수 있습니다.

빌드가 트리거되면 Azure Pipelines는 풀에서 사용 가능한 빌드 에이전트를 선택합니다. 모든 에이전트가 사용 중이면 에이전트를 사용할 수 있을 때까지 프로세스가 대기합니다.

Microsoft 호스팅 에이전트를 사용하는 경우 풀에서 사용할 VM 이미지를 지정합니다. 다음은 Ubuntu 20.04 빌드 에이전트를 사용하는 기존 빌드 구성의 예입니다.

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

Microsoft 호스팅 에이전트를 사용하는 경우 vmImage 명령을 통해 필요한 시스템 유형을 지정합니다. Microsoft는 Windows, macOS 및 다양한 Linux 버전을 실행하는 이미지를 포함하여 여러 유형의 VM 이미지를 제공합니다.

demands 섹션에서는 빌드 머신에 필요한 소프트웨어 또는 기능을 지정합니다.

프라이빗 풀이라고도 하는 개발자 고유의 풀에 있는 빌드 에이전트를 사용하는 경우 풀의 이름을 지정합니다. 예를 들면 다음과 같습니다.

pool:
  name: 'MyAgentPool'
  demands:
  - npm

demands 섹션이 필요 없으면 구문을 다음과 같이 줄일 수 있습니다.

pool: 'MyAgentPool'

빌드 에이전트를 만들고 이 모듈의 뒷부분에서 풀에 추가할 것입니다.

어떤 종류의 에이전트를 사용할 수 있나요?

빌드 에이전트를 선택할 때 다음 두 가지 요인을 고려해야 합니다.

  • 빌드하려는 운영 체제
  • Microsoft 호스팅 에이전트를 사용할 수 있는지 여부 또는 개발자 고유의 에이전트를 제공해야 하는지 여부

Azure Pipelines는 다음 운영 체제를 지원합니다.

선택하는 빌드 에이전트는 주로 코드를 빌드할 때 사용하는 도구에 따라 결정됩니다. 예를 들어 Xcode를 사용하여 애플리케이션을 빌드하는 경우 macOS 에이전트를 선택할 수 있습니다. Visual Studio가 필요한 경우 Windows 에이전트를 선택할 가능성이 높습니다.

기존 빌드 구성에서는 Microsoft 호스팅 에이전트를 사용합니다. 호스트된 에이전트는 Microsoft에서 제공하는 인프라에서 실행됩니다.

프라이빗 에이전트는 개발자가 제공하는 인프라를 사용합니다. 개발자의 에이전트는 클라우드나 데이터 센터에서 실행되는 시스템일 수 있습니다. 에이전트가 요구 사항을 충족하고 Azure Pipelines에 연결할 수 있는 경우에만 두 시스템 모두 작동합니다. 이 모듈에서는 Microsoft에서 제공하는 Azure에서 실행되는 VM을 사용합니다.

개발자 고유의 빌드 에이전트는 언제 사용해야 하나요?

많은 빌드 작업에서 필요한 모든 것을 Microsoft 호스팅 에이전트가 처리합니다. Microsoft 호스팅 에이전트는 시작하는 가장 쉬운 방법입니다.

Microsoft에서 모든 보안 및 기타 운영 체제 업데이트를 처리합니다. 개발자는 실행하려는 빌드 구성을 정의하기만 하면 됩니다.

또한 호스팅 에이전트는 여러 일반적인 유형의 애플리케이션을 빌드할 수 있는 소프트웨어를 포함하고 있습니다. 빌드 프로세스에 필요한 기타 소프트웨어를 추가할 수 있습니다.

Microsoft 호스팅 에이전트에는 다음과 같은 몇 가지 제한 사항이 있습니다.

  • 빌드 기간: 빌드 작업은 최대 6시간 동안 실행할 수 있습니다.
  • 디스크 공간: 호스트된 에이전트는 원본과 빌드 출력을 저장할 수 있는 고정된 스토리지 용량을 제공하는데, 이 용량은 스토리지에 충분하지 않을 수 있습니다.
  • CPU, 메모리, 네트워크: 호스트된 에이전트는 Microsoft Azure 범용 VM에서 실행됩니다. Standard_DS2_v2는 예상 가능한 CPU, 메모리 및 네트워크 특성을 설명합니다.
  • 대화형 작업: 호스트된 에이전트에 로그인할 수 없습니다.
  • 파일 공유: UNC(범용 명명 규칙) 파일 공유에 빌드 아티팩트를 드롭할 수 없습니다.

호스트된 에이전트는 비교적 설정하기 쉽지만, 방금 설명한 제한 사항을 차치하고 개발자 고유의 빌드 에이전트를 사용할 때 얻을 수 있는 이점이 있습니다.

예를 들어 호스트된 에이전트를 사용하는 경우 인프라를 다른 Azure DevOps 사용자와 공유하게 됩니다. 일반적으로 몇 초 이내에 빌드가 시작되지만, Microsoft 시스템의 부하에 따라 더 오래 걸릴 수도 있습니다.

또한 호스트된 에이전트를 사용하면 각 빌드에 클린 시스템을 가져오게 됩니다. 개발자 고유의 빌드 에이전트를 사용하면 매번 클린 빌드를 수행할 것인지 아니면 증분 빌드를 수행할 것인지 결정할 수 있습니다. 증분 빌드를 사용하면 기존 빌드 도구와 컴파일된 코드를 기반으로 빌드합니다. 증분 빌드는 시스템에 이미 여러 도구와 종속 구성 요소가 설치되어 있으므로 완료하는 데 시간이 덜 걸릴 수 있습니다.

그 대신 빌드 인프라가 개발자의 것이므로 개발자는 빌드 에이전트를 최신 소프트웨어와 보안 패치로 업데이트해야 합니다.

프라이빗 빌드 에이전트는 어떻게 설정하나요?

프라이빗 빌드 에이전트에는 애플리케이션을 빌드하는 데 필요한 소프트웨어가 포함되어 있습니다. 시스템에서 Azure Pipelines에 연결하여 빌드 작업을 수신할 수 있게 해주는 에이전트 소프트웨어도 포함되어 있습니다.

프라이빗 에이전트를 설정할 때 빌드가 실행되는 인프라를 제공합니다. 따라서 유연하게 에이전트를 가져오고 유지 관리할 수 있습니다.

예를 들어 다음을 수행할 수 있습니다.

  • 빌드 에이전트를 수동으로 설정: 시스템을 가져오고, 로그인하고, 빌드 도구와 에이전트 소프트웨어를 대화형으로 설치합니다.

  • 프로세스 자동화: 여기서는 시스템을 가져오고, 스크립트 또는 도구를 실행하여 빌드 도구와 에이전트 소프트웨어를 설치합니다. 시스템이 온라인 상태가 된 후 또는 프로비저닝 프로세스 중에 에이전트를 구성할 수 있습니다.

    예를 들어, Azure에서 빌드 에이전트를 실행할 때 Azure Resource Manager 템플릿(ARM 템플릿) 또는 Bicep을 사용하여 시스템을 실행하고 시스템이 빌드 에이전트로 기능하도록 구성하는 작업을 한 단계로 처리할 수 있습니다. 프로세스를 자동화하는 또 다른 방법은 HashiCorp의 Terraform입니다. Terraform은 Azure를 비롯한 다양한 종류의 인프라와 함께 작동합니다.

  • 이미지 만들기: 구성된 환경의 이미지 또는 스냅샷을 만듭니다. 그런 다음 이미지를 사용하여 풀에 필요한 만큼 동일한 시스템을 만들 수 있습니다.

수동 구성은 프로세스를 이해할 수 있으므로 시작하기에 좋은 방법입니다. 빌드 에이전트가 하나만 필요한 경우 가장 빠르게 설정하는 방법이기도 합니다.

자동화는 여러 빌드 에이전트가 필요하거나 정기적으로 빌드 인프라를 가져오고 중지해야 할 때 유용합니다. 여러 에이전트가 필요한 경우 수동 프로세스에서 자동화 프로세스로 이전할 수 있습니다.

이미지는 자동화의 한 가지 형태입니다. 모든 소프트웨어를 미리 구성했기 때문에 시간을 절약할 수 있습니다. 그 대신 정기적으로 이미지를 다시 빌드하여 최신 OS 패치와 빌드 도구를 통합해야 합니다. HashiCorp의 Packer는 인기 있는 이미지 만들기 도구입니다.

Space Game 시나리오의 경우 프라이빗 빌드 에이전트를 사용하기로 결정합니다.

지식 점검

1.

비디오 게임을 빌드한다고 가정해 보겠습니다. 빌드 프로세스를 실행하는 데 2시간이 걸리고 게임 자산을 컴파일하기 위해 18GB~20GB의 디스크 공간이 사용됩니다. 어떤 빌드 에이전트를 사용하시겠습니까?

2.

macOS, Linux, Windows에서 실행되는 애플리케이션을 빌드한다고 가정해 보겠습니다. 각 대상 플랫폼용 앱을 어떤 방법으로 빌드하시겠어요?

3.

자체 호스팅 빌드 에이전트는