Microsoft 호스팅 에이전트

Azure DevOps Services

Microsoft 호스팅 에이전트는 클라우드에서 호스트되는 Azure DevOps Services에서만 사용할 수 있습니다. 온-프레미스 TFS 또는 Azure DevOps Server에서 Microsoft 호스팅 에이전트 또는 Azure Pipelines 에이전트 풀을 사용할 수 없습니다. 이러한 온-프레미스 버전에서는 자체 호스팅 에이전트를 사용해야 합니다.

Important

Azure DevOps 콘텐츠 버전 선택기에서 버전을 선택합니다.

플랫폼 및 버전에 해당하는 이 문서의 버전을 선택합니다. 버전 선택기가 목차 위에 있습니다. Azure DevOps 플랫폼 및 버전을 조회합니다.

파이프라인이 Azure Pipelines에 있는 경우 Microsoft 호스팅 에이전트를 사용하여 작업을 실행하는 편리한 옵션이 있습니다. Microsoft 호스팅 에이전트를 사용하므로 유지 관리와 업그레이드가 자동으로 처리됩니다. 파이프라인에서 지정한 VM 이미지의 최신 버전을 항상 가져옵니다. 파이프라인을 실행할 때마다 파이프라인의 각 작업에 대한 새 가상 머신이 표시됩니다. 가상 머신은 한 작업 후에 삭제됩니다(즉, 코드 체크 아웃과 같은 가상 머신 파일 시스템에 대한 변경 내용은 다음 작업에서 사용할 수 없음). Microsoft 호스팅 에이전트는 VM 또는 컨테이너에서 직접 작업을 실행할 수 있습니다.

Azure Pipelines는 Microsoft 호스팅 에이전트를 사용하여 Azure Pipelines라는 미리 정의된 에이전트 풀을 제공합니다.

많은 팀에서 이 방법은 작업을 실행하는 가장 간단한 방법입니다. 먼저 시도해 보고 빌드 또는 배포에 작동하는지 확인할 수 있습니다. 그렇지 않은 경우 확장 집합 에이전트 또는 자체 호스팅 에이전트를 사용할 수 있습니다.

무료로 Microsoft 호스팅 에이전트를 사용해 볼 수 있습니다.

소프트웨어

Azure Pipelines 에이전트 풀은 다양한 도구와 소프트웨어를 포함하여 선택할 수 있는 여러 가상 머신 이미지를 제공합니다.

이미지 클래식 편집기 에이전트 사양 YAML VM 이미지 레이블 포함된 소프트웨어
Visual Studio 2022를 포함하는 Windows Server 2022 windows-2022 windows-latest 또는 windows-2022 링크
Visual Studio 2019를 포함하는 Windows Server 2019 windows-2019 windows-2019 링크
Ubuntu 22.04 ubuntu-22.04 ubuntu-latest 또는 ubuntu-22.04 링크
Ubuntu 20.04 ubuntu-20.04 ubuntu-20.04 링크
macOS 13 Ventura macOS-13 macOS-13 링크
macOS 12 Monterey macOS-12 macOS-latest 또는 macOS-12 링크
macOS 11 Big Sur(사용되지 않음) macOS-11 macOS-11 링크

클래식 빌드 파이프라인 의 기본 에이전트 이미지는 windows-2019이며 YAML 빌드 파이프라인의 기본 에이전트 이미지는 다음과 같습니다 ubuntu-latest. 자세한 내용은 파이프라인에서 풀 지정을 참조하세요.

테이블에서 포함된 소프트웨어 링크를 선택하여 호스트된 각 에이전트에 대해 설치된 소프트웨어를 볼 수 있습니다. macOS 이미지를 사용하는 경우 도구 버전에서 수동으로 선택할 수 있습니다. 자세히 알아보세요.

최근 업데이트

고객은 최신 버전 또는 자체 호스팅 에이전트마이그레이션하는 것이 좋습니다.

이러한 이미지를 사용하는 파이프라인을 업데이트하는 방법에 대한 자세한 내용과 지침은 Azure Pipelines 호스트 풀에서 이전 이미지 제거를 참조 하세요.

참고 항목

macOS 용량은 현재 제한됩니다. 용량이 Azure의 모든 최대 용량에 의해 제한되는 Linux 및 Windows 이미지와 달리 macOS 용량은 사용 가능한 하드웨어의 양에 따라 제한됩니다. 2024년 봄 동안 추가 용량을 사용할 수 있도록 노력하고 있지만 일부 작업에서 실행이 지연될 수 있습니다. 가능한 경우(예: Apple 에코시스템 앱을 만들지 않는 작업의 경우) 고객은 Linux 또는 Windows 이미지를 선택해야 합니다.

참고 항목

Azure Pipelines 호스트된 풀은 해당 이미지에 매핑된 이름을 가진 이전 호스트된 풀을 대체합니다. 이전 호스팅 풀에 있던 모든 작업은 새 Azure Pipelines 호스팅 풀의 올바른 이미지로 자동으로 리디렉션됩니다. 일부 상황에서는 이전 풀 이름이 계속 표시되기도 하지만 백그라운드에서 호스트된 작업은 Azure Pipelines 풀을 사용하여 실행됩니다. 이 업데이트에 대한 자세한 내용은 2019년 7월 1일 - Sprint 154 릴리스 정보에서 단일 호스팅 풀 릴리스 정보를 참조하세요.

Important

Microsoft 호스팅 에이전트에 설치할 추가 소프트웨어를 요청하려면 이 문서에 대한 피드백 요청을 만들거나 지원 티켓을 열지 마세요. 대신 다양한 이미지를 생성하는 스크립트를 관리하는 리포지토리에서 문제를 엽니다.

사용되지 않는 호스트된 이미지를 사용하여 파이프라인을 식별하는 방법

사용되지 않는 이미지를 사용하는 파이프라인을 식별하려면 조직https://dev.azure.com/{organization}/{project}/_settings/agentqueues에서 다음 위치로 이동하고 이미지 이름을 필터링하여 검사. 다음 예제에서는 이미지를 검사vs2017-win2016.

이미지 이름으로 파이프라인 필터링 스크린샷

다음 예제와 같이 여기에 있는 스크립트를 사용하여 프로젝트에서 사용되지 않는 이미지에 대한 작업 기록을 쿼리할 수도 있습니다.

./QueryJobHistoryForRetiredImages.ps1 -accountUrl https://dev.azure.com/{org} -pat {pat}

Microsoft 호스팅 에이전트 사용

YAML 파이프라인에서 풀을 지정하지 않으면 파이프라인은 기본적으로 Azure Pipelines 에이전트 풀로 설정됩니다. 사용하려는 가상 머신 이미지를 지정하기만 하면 됩니다.

jobs:
- job: Linux
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - script: echo hello from Linux
- job: macOS
  pool:
    vmImage: 'macOS-latest'
  steps:
  - script: echo hello from macOS
- job: Windows
  pool:
    vmImage: 'windows-latest'
  steps:
  - script: echo hello from Windows

참고 항목

풀의 사양은 YAML 파일의 여러 수준에서 수행할 수 있습니다. 파이프라인이 예상 이미지에서 실행되고 있지 않은 경우 파이프라인, 단계 및 작업 수준에서 풀 사양을 확인해야 합니다.

하드 코딩된 참조 방지

Microsoft 호스팅 에이전트를 사용하는 경우 항상 변수를 사용하여 빌드 환경 및 에이전트 리소스를 참조합니다. 예를 들어 리포지토리가 포함된 드라이브 문자 또는 폴더를 하드 코딩하지 마세요. 호스트된 에이전트의 정확한 레이아웃은 경고 없이 변경될 수 있습니다.

하드웨어

Windows 및 Linux 이미지를 실행하는 Microsoft 호스팅 에이전트는 2코어 CPU, 7GB RAM 및 14GB의 SSD 디스크 공간을 사용하여 Azure 범용 가상 머신에 프로비전됩니다. 이러한 가상 머신은 Azure DevOps 조직과 동일한 지역에 공동 배치됩니다.

macOS 이미지를 실행하는 에이전트는 3개의 코어 CPU, 14GB RAM 및 14GB의 SSD 디스크 공간을 사용하여 Mac 전문가에게 프로비전됩니다. 이러한 에이전트는 Azure DevOps 조직의 위치에 관계없이 항상 미국에서 실행됩니다. 데이터 주권이 중요하고 조직이 미국에 없는 경우 macOS 이미지를 사용하면 안 됩니다. 자세히 알아보기.

이러한 모든 컴퓨터에는 파이프라인을 실행할 수 있는 사용 가능한 디스크 공간이 10GB 이상 있습니다. 이 여유 공간은 파이프라인이 소스 코드를 검사 패키지를 다운로드하거나 Docker 이미지를 끌어오거나 중간 파일을 생성할 때 소비됩니다.

Important

Microsoft 호스팅 에이전트의 디스크 공간을 늘리거나 더 강력한 컴퓨터를 프로비전하라는 요청을 처리할 수 없습니다. Microsoft 호스팅 에이전트의 사양이 요구 사항을 충족하지 않는 경우 자체 호스팅 에이전트 또는 확장 집합 에이전트를 고려해야 합니다.

네트워킹

일부 설정에서는 에이전트가 배포되는 IP 주소의 범위를 알아야 할 수 있습니다. 예를 들어 방화벽을 통해 호스트된 에이전트에 액세스 권한을 부여해야 하는 경우 IP 주소로 해당 액세스를 제한할 수 있습니다. Azure DevOps는 Azure 글로벌 네트워크를 사용하므로 IP 범위는 시간에 따라 달라집니다. Microsoft는 지역별로 구분된 Azure 데이터 센터의 IP 범위를 나열하는 주간 JSON 파일을 게시합니다. 이 파일은 새로운 계획된 IP 범위로 매주 업데이트됩니다. 최신 버전의 파일만 다운로드할 수 있습니다. 이전 버전이 필요한 경우 사용할 수 있게 되면 매주 다운로드하여 보관해야 합니다. 새 IP 범위는 다음 주에 적용됩니다. 최신 목록을 유지하려면 자주(매주 한 번 이상) 검사 것이 좋습니다. 에이전트 작업이 실패하기 시작하는 경우 첫 번째 주요 문제 해결 단계는 구성이 최신 IP 주소 목록과 일치하는지 확인하는 것입니다. 호스트된 에이전트의 IP 주소 범위는 미국 서부 지역과 같이 AzureCloud.westus 주별 파일에 AzureCloud.<region>나열됩니다.

호스트된 에이전트는 조직과 동일한 Azure 지역에서 실행됩니다. 각 지리에는 하나 이상의 지역이 포함됩니다. 에이전트가 조직과 동일한 지역에서 실행될 수 있지만 그렇게 보장되지는 않습니다. 에이전트에 대해 가능한 IP 범위의 전체 목록을 가져오려면 지리에 포함된 모든 지역의 IP 범위를 사용해야 합니다. 예를 들어 조직이 미국 지리에 있는 경우 해당 지역의 모든 지역에 대해 IP 범위를 사용해야 합니다.

지리를 확인하려면 Azure geography 테이블로 이동하여 https://dev.azure.com/<your_organization>/_settings/organizationOverview지역을 가져와서 연결된 지리를 찾습니다. 지리를 식별한 후에는 해당 지역의 모든 지역에 대해 주간 파일IP 범위를 사용합니다.

Important

ExpressRoute 또는 VPN과 같은 프라이빗 연결을 사용하여 Microsoft 호스팅 에이전트를 회사 네트워크에 연결할 수 없습니다. Microsoft 호스팅 에이전트와 서버 간의 트래픽은 공용 네트워크를 통해 발생합니다.

Microsoft 호스팅 에이전트에 대해 가능한 IP 범위를 식별하려면

  1. 조직 설정에서 조직의 지역을 식별합니다.
  2. 조직의 지역에 대한 Azure Geography를 식별합니다.
  3. 지역 이름을 주간 파일에 사용되는 형식(예: AzureCloud.westus 형식AzureCloud.<region>)에 따라 매핑합니다. Azure Geography 목록의 지역 이름을 .NET용 Azure 관리 라이브러리에서 지역 클래스의 소스 코드에 정의된 지역 생성자에 전달된 지역 이름을 검토하여 주간 파일에 사용되는 형식에 매핑할 수 있습니다.

    참고 항목

    .NET용 Azure 관리 라이브러리에 지리에 대한 지역을 나열하는 API가 없으므로 다음 예제와 같이 수동으로 나열해야 합니다.

  4. 주간 파일에서 지리의 모든 지역에 대한 IP 주소를 검색합니다. 지역이 브라질 남부 또는 서유럽인 경우 다음 참고 사항에 설명된 대로 대체 지역에 따라 추가 IP 범위를 포함해야 합니다.

참고 항목

용량 제한으로 인해 브라질 남부 또는 서유럽 지역의 일부 조직에서는 때때로 호스트된 에이전트가 예상 지역 외부에 있는 것을 볼 수 있습니다. 이러한 경우 이전 섹션에서 설명한 대로 지리의 모든 지역에 대한 IP 범위를 포함할 뿐만 아니라 용량 대체 지역의 지역에 대한 추가 IP 범위를 포함해야 합니다.

조직이 브라질 남부 지역에 있는 경우 용량 대체 지역은 미국.

조직이 서유럽 지역에 있는 경우 용량 대체 지역은 프랑스입니다.

Mac IP 범위는 GitHub의 macOS 클라우드에서 호스트되므로 위의 Azure IP에 포함되지 않습니다. 여기에 제공된 지침을 사용하여 GitHub 메타데이터 API를 사용하여 IP 범위를 검색할 수 있습니다.

예시

다음 예제에서는 미국 서부 지역의 조직에 대한 호스트된 에이전트 IP 주소 범위가 주간 파일에서 검색됩니다. 미국 서부 지역은 미국 지역에 있으므로 미국 지역의 모든 지역에 대한 IP 주소가 포함됩니다. 이 예제에서는 IP 주소가 콘솔에 기록됩니다.

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace WeeklyFileIPRanges
{
    class Program
    {
        // Path to the locally saved weekly file
        const string weeklyFilePath = @"C:\MyPath\ServiceTags_Public_20230904.json";

        static void Main(string[] args)
        {
            // United States geography has the following regions:
            // Central US, East US, East US 2, East US 3, North Central US, 
            // South Central US, West Central US, West US, West US 2, West US 3
            // This list is accurate as of 9/8/2023
            List<string> USGeographyRegions = new List<string>
            {
                "centralus",
                "eastus",
                "eastus2",
                "eastus3",
                "northcentralus",
                "southcentralus",
                "westcentralus",
                "westus",
                "westus2",
                "westus3"
            };

            // Load the weekly file
            JObject weeklyFile = JObject.Parse(File.ReadAllText(weeklyFilePath));
            JArray values = (JArray)weeklyFile["values"];

            foreach (string region in USGeographyRegions)
            {
                string tag = $"AzureCloud.{region}";
                Console.WriteLine(tag);

                var ipList =
                    from v in values
                    where tag.Equals((string)v["name"], StringComparison.OrdinalIgnoreCase)
                    select v["properties"]["addressPrefixes"];

                foreach (var ip in ipList.Children())
                {
                    Console.WriteLine(ip);
                }
            }
        }
    }
}

서비스 태그

Microsoft 호스팅 에이전트는 서비스 태그로 나열할 수 없습니다. 호스트된 에이전트에 리소스에 대한 액세스 권한을 부여하려는 경우 IP 범위 허용 목록 메서드를 따라야 합니다.

보안

Microsoft 호스팅 에이전트는 보안 Azure 플랫폼에서 실행됩니다. 그러나 다음과 같은 보안 고려 사항을 알고 있어야 합니다.

  • Microsoft 호스팅 에이전트는 Azure 공용 네트워크에서 실행되지만 공용 IP 주소는 할당되지 않습니다. 따라서 외부 엔터티는 Microsoft 호스팅 에이전트를 대상으로 할 수 없습니다.
  • Microsoft 호스팅 에이전트는 개별 VM에서 실행되며, 각 실행 후에 다시 이미지화됩니다. 각 에이전트는 단일 조직 전용이며 각 VM은 단일 에이전트만 호스트합니다.
  • 보안 관점에서 Microsoft 호스팅 에이전트에서 파이프라인을 실행하는 데는 몇 가지 이점이 있습니다. 포크에서 기여 같은 신뢰할 수 없는 코드를 파이프라인에서 실행하는 경우 회사 네트워크에 상주하는 자체 호스팅 에이전트보다 Microsoft 호스팅 에이전트에서 파이프라인을 실행하는 것이 더 안전합니다.
  • 파이프라인이 방화벽 뒤에 있는 회사 리소스에 액세스해야 하는 경우 Azure 지역에 대한 IP 주소 범위를 허용해야 합니다. 이렇게 하면 IP 주소 범위가 다소 크고 이 범위의 컴퓨터가 다른 고객에게도 속할 수 있으므로 노출이 증가할 수 있습니다. 이를 방지하는 가장 좋은 방법은 내부 리소스에 액세스할 필요가 없도록 하는 것입니다. 서버 집합에 아티팩트를 배포하는 방법에 대한 자세한 내용은 대상 서버에 배포할 통신을 참조하세요.
  • 호스트된 이미지는 CIS 강화 벤치마크를 준수하지 않습니다. CIS 강화 이미지를 사용하려면 자체 호스팅 에이전트 또는 확장 집합 에이전트를 만들어야 합니다.

기능 및 제한 사항

Microsoft 호스팅 에이전트:

  • 위의 소프트웨어가 있어야 합니다. 도구 설치 관리자 작업을 사용하여 빌드 또는 릴리스 중에 소프트웨어를 추가할 수도 있습니다.
    • 파이프라인의 각 작업에 대해 새로 이미지화된 에이전트를 가져옵니다.
  • 원본 및 빌드 출력에 10GB의 스토리지를 제공합니다.
  • 무료 계층 제공:
    • 공개 프로젝트: 매월 전체 시간 제한 없이 최대 360분(6시간) 동안 실행할 수 있는 10개의 무료 Microsoft 호스팅 병렬 작업입니다. 무료 계층 한도를 늘리려면 문의하세요 .
    • 프라이빗 프로젝트: 매월 1,800분(30시간)을 사용할 때까지 매번 최대 60분 동안 실행할 수 있는 하나의 무료 병렬 작업입니다. 병렬 작업당 추가 용량을 구입할 수 있습니다. 유료 병렬 작업을 사용하면 월별 시간 제한이 없으며 최대 360분(6시간) 동안 각 작업을 실행할 수 있습니다. Microsoft에서 호스팅하는 병렬 작업을 구입합니다.
    • 새 Azure DevOps 조직을 만들 때는 기본적으로 이러한 무료 부여가 제공되지 않습니다. 퍼블릭 또는 프라이빗 프로젝트에 대한 무료 부여를 요청하려면 요청을 제출합니다.
  • Microsoft Azure 범용 가상 머신 Standard_DS2_v2 실행합니다.
  • Windows에서 관리자로 실행하고 Linux에서 암호 없는 sudo 사용자로 실행합니다.
  • (Linux에만 해당) 6GB의 실제 메모리와 13GB의 총 메모리를 제공하는 단계를 cgroup 실행합니다.
  • 정기적으로 업데이트되는 VM 이미지를 사용합니다(3주마다).

Microsoft 호스팅 에이전트는 다음을 제공하지 않습니다.

  • 원격으로 연결하는 기능입니다.
  • UNC 파일 공유아티팩트를 삭제하는 기능입니다.
  • 컴퓨터를 회사 네트워크에 직접 조인하는 기능입니다.
  • 더 크거나 더 강력한 빌드 머신을 가져올 수 있습니다.
  • 사용자 지정 소프트웨어를 미리 로드하는 기능입니다. 도구 설치 관리자 작업이나 스크립트를 통해 파이프라인을 실행하는 동안 소프트웨어를 설치할 수 있습니다.
  • 빌드를 더 빠르게 시작하고 실행할 수 있는 자체 호스팅 에이전트를 사용하여 얻을 수 있는 잠재적 성능 이점 자세한 정보
  • XAML 빌드를 실행하는 기능입니다.
  • 이전 VM 이미지 버전으로 롤백하는 기능입니다. 항상 최신 버전을 사용합니다.

Microsoft 호스팅 에이전트가 요구 사항을 충족하지 않는 경우 자체 호스팅 에이전트를 배포하거나 확장 집합 에이전트를 사용할 수 있습니다.

FAQ

이미지에 포함된 소프트웨어를 보려면 어떻게 해야 하나요?

소프트웨어 테이블에서 포함된 소프트웨어 링크를 선택하여 호스트된 각 에이전트에 대해 설치된 소프트웨어를 볼 수 있습니다.

참고 항목

기본적으로 Windows 에이전트는 에이전트 소프트웨어와 함께 번들로 제공되는 Git 버전을 사용합니다. Microsoft는 에이전트와 함께 번들로 제공되는 Git 버전을 사용하는 것이 좋지만 이 기본 동작을 재정의하고 에이전트 컴퓨터가 경로에 설치한 Git 버전을 사용하는 몇 가지 옵션이 있습니다.

  • 파이프라인에 명명된 System.PreferGitFromPath 파이프라인 변수를 true 설정합니다.
  • 자체 호스팅 에이전트에서 에이전트 루트 디렉터리에 .env라는 파일을 만들고 파일에 줄을 System.PreferGitFromPath=true 추가할 수 있습니다. 자세한 내용은 각 개별 에이전트에 대해 서로 다른 환경 변수를 설정하는 어떻게 할까요? 참조하세요.

파이프라인에서 사용되는 Git의 버전을 보려면 다음 예제와 같이 파이프라인의 단계에 대한 checkout 로그를 확인할 수 있습니다.

Syncing repository: PathFilter (Git)
Prepending Path environment variable with directory containing 'git.exe'.
git version
git version 2.26.2.windows.1

Microsoft는 이미지에 넣을 소프트웨어 및 버전을 어떻게 선택하나요?

이미지에 포함된 소프트웨어 버전에 대한 자세한 내용은 설치된 소프트웨어에 대한 지침에서 확인할 수 있습니다.

이미지는 언제 업데이트되나요?

이미지는 일반적으로 매주 업데이트됩니다. 첫 번째 부분이 이미지가 업데이트된 날짜를 나타내는 형식 20200113.x 인 상태 배지를 검사 수 있습니다.

필요한 소프트웨어가 제거되거나 최신 버전으로 대체되면 어떻게 해야 하나요?

Microsoft 호스팅 에이전트 사용 테이블에서 포함된 소프트웨어 링크를 선택하여 GitHub 문제를 제출하여 알려줄 수 있습니다.

필요한 소프트웨어의 정확한 버전을 포함하는 자체 호스팅 에이전트를 사용할 수도 있습니다. 자세한 내용은 자체 호스팅 에이전트를 참조 하세요.

처리 능력, 메모리 또는 디스크 공간이 더 많은 더 큰 컴퓨터가 필요한 경우 어떻게 해야 하나요?

Microsoft 호스팅 에이전트의 메모리, 처리 능력 또는 디스크 공간을 늘릴 수는 없지만 원하는 사양으로 컴퓨터에서 호스트되는 자체 호스팅 에이전트 또는 확장 집합 에이전트를 사용할 수 있습니다.

Microsoft 호스팅 에이전트를 선택할 수 없으며 빌드 또는 배포를 큐에 대기할 수 없습니다. 어떻게 해야 합니까?

Microsoft 호스팅 에이전트는 TFS 또는 Azure DevOps Server가 아닌 Azure Pipelines에서만 사용할 수 있습니다.

기본적으로 조직의 모든 프로젝트 기여자 Microsoft 호스팅 에이전트에 액세스할 수 있습니다. 그러나 조직 관리자는 Microsoft 호스팅 에이전트의 액세스를 제한하여 사용자 또는 프로젝트를 선택할 수 있습니다. Azure DevOps 조직의 소유자에게 Microsoft 호스팅 에이전트를 사용할 수 있는 권한을 부여하도록 요청합니다. 에이전트 풀 보안을 참조하세요.

Microsoft 호스트된 에이전트에서 실행되는 내 파이프라인은 완료하는 데 더 많은 시간이 걸립니다. 어떻게 속도를 높일 수 있나요?

파이프라인이 최근에 느려진 경우 상태 페이지에서 중단이 있는지 검토합니다. 서비스에 문제가 있을 수 있습니다. 또는 애플리케이션 코드 또는 파이프라인에서 변경한 사항을 검토합니다. 체크 아웃하는 동안 리포지토리 크기가 증가했거나 더 큰 아티팩트를 업로드했거나 더 많은 테스트를 실행했을 수 있습니다.

파이프라인을 설정하고 Microsoft 호스트된 에이전트의 성능을 로컬 컴퓨터 또는 자체 호스팅 에이전트와 비교하는 경우 작업을 실행하는 데 사용하는 하드웨어의 사양을 확인합니다. Microsoft는 더 크거나 강력한 컴퓨터를 제공할 수 없습니다. 이 성능이 허용되지 않는 경우 자체 호스팅 에이전트 또는 확장 집합 에이전트 사용을 고려할 수 있습니다.

더 많은 에이전트가 필요합니다. 무엇을 도와드릴까요?

모든 Azure DevOps 조직에는 오픈 소스 프로젝트에 대한 몇 가지 무료 병렬 작업과 프라이빗 프로젝트의 경우 매달 한 번의 무료 병렬 작업 및 제한된 분이 제공됩니다. 오픈 소스 프로젝트에 대한 추가 시간 또는 병렬 작업이 필요한 경우 지원에 문의하세요. 프라이빗 프로젝트에 추가 시간(분) 또는 병렬 작업이 필요한 경우 더 구입할 수 있습니다.

내 파이프라인은 자체 호스팅 에이전트에서 성공하지만 Microsoft 호스팅 에이전트에서는 실패합니다. 어떻게 해야 합니까?

자체 호스팅 에이전트에는 올바른 종속성이 모두 설치되어 있는 반면 동일한 종속성, 도구 및 소프트웨어는 Microsoft 호스팅 에이전트에 설치되지 않을 수 있습니다. 먼저 위의 표에 포함된 소프트웨어에 대한 링크를 따라 Microsoft 호스팅 에이전트에 설치된 소프트웨어 목록을 주의 깊게 검토합니다. 그런 다음 자체 호스팅 에이전트에 설치된 소프트웨어와 비교합니다. 경우에 따라 Microsoft 호스팅 에이전트에 필요한 도구(예: Visual Studio)가 있을 수 있지만 필요한 모든 선택적 구성 요소가 설치되지 않았을 수 있습니다. 차이점을 발견하면 다음 두 가지 옵션이 있습니다.

  • 추가 소프트웨어에 대한 요청을 추적하는 리포지토리에서 새 문제를 만들 수 있습니다. 지원에 문의하면 Microsoft 호스팅 에이전트에서 새 소프트웨어를 설정하는 데 도움이 되지 않습니다.

  • 자체 호스팅 에이전트 또는 확장 집합 에이전트를 사용할 수 있습니다. 이러한 에이전트를 사용하면 파이프라인을 실행하는 데 사용되는 이미지를 완전히 제어할 수 있습니다.

내 빌드는 로컬 컴퓨터에서 성공하지만 Microsoft 호스팅 에이전트에서 실패합니다. 어떻게 해야 합니까?

로컬 컴퓨터에는 올바른 종속성이 모두 설치되어 있는 반면 동일한 종속성, 도구 및 소프트웨어는 Microsoft 호스팅 에이전트에 설치되지 않을 수 있습니다. 먼저 위의 표에 포함된 소프트웨어에 대한 링크를 따라 Microsoft 호스팅 에이전트에 설치된 소프트웨어 목록을 주의 깊게 검토합니다. 그런 다음 로컬 컴퓨터에 설치된 소프트웨어와 비교합니다. 경우에 따라 Microsoft 호스팅 에이전트에 필요한 도구(예: Visual Studio)가 있을 수 있지만 필요한 모든 선택적 구성 요소가 설치되지 않았을 수 있습니다. 차이점을 발견하면 다음 두 가지 옵션이 있습니다.

  • 추가 소프트웨어에 대한 요청을 추적하는 리포지토리에서 새 문제를 만들 수 있습니다. 새 소프트웨어를 설치하기 위한 최선의 선택입니다. 지원에 문의해도 Microsoft 호스팅 에이전트에서 새 소프트웨어를 설정하는 데 도움이 되지 않습니다.

  • 자체 호스팅 에이전트 또는 확장 집합 에이전트를 사용할 수 있습니다. 이러한 에이전트를 사용하면 파이프라인을 실행하는 데 사용되는 이미지를 완전히 제어할 수 있습니다.

"디바이스에 공간이 남아 있지 않음"이라는 오류와 함께 파이프라인이 실패합니다.

Microsoft 호스팅 에이전트의 디스크에 작업을 실행할 수 있는 여유 공간이 10GB밖에 없습니다. 이 공간은 소스 코드를 검사 때, 패키지를 다운로드할 때, Docker 이미지를 다운로드할 때 또는 중간 파일을 생성할 때 소비됩니다. 아쉽게도 Microsoft 호스팅 이미지에서 사용할 수 있는 여유 공간을 늘릴 수 없습니다. 이 공간에 맞게 파이프라인을 재구성할 수 있습니다. 또는 자체 호스팅 에이전트 또는 확장 집합 에이전트를 사용하는 것이 좋습니다.

Microsoft 호스팅 에이전트에서 실행되는 파이프라인을 사용하려면 회사 네트워크의 서버에 액세스해야 합니다. 방화벽에서 허용하는 IP 주소 목록을 얻으려면 어떻게 해야 할까요?

에이전트 IP 범위 섹션 을 참조하세요.

Microsoft 호스팅 에이전트에서 실행되는 파이프라인은 회사 네트워크의 서버 이름을 확인할 수 없습니다. 이 문제를 어떻게 해결할 수 있나요?

DNS 이름으로 서버를 참조하는 경우 해당 DNS 이름을 통해 서버가 인터넷에서 공개적으로 액세스할 수 있는지 확인합니다. IP 주소로 서버를 참조하는 경우 IP 주소가 인터넷에서 공개적으로 액세스할 수 있는지 확인합니다. 두 경우 모두 에이전트와 회사 네트워크 간의 방화벽에 에이전트 IP 범위가 허용되는지 확인합니다 .

Azure Storage 계정에서 SAS IP 권한 부여 오류가 발생합니다.

SAS 오류 코드가 표시되는 경우 Azure Storage 규칙으로 인해 Microsoft 호스팅 에이전트의 IP 주소 범위가 허용되지 않기 때문일 가능성이 큽니다. 몇 가지 해결 방법이 있습니다.

  1. Azure Storage 계정에 대한 IP 네트워크 규칙을 관리하고 호스트된 에이전트의 IP 주소 범위를 추가합니다.
  2. 파이프라인에서 Azure CLI를 사용하여 스토리지에 액세스하기 직전에 Azure Storage 계정에 대한 네트워크 규칙 집합을 업데이트한 다음 이전 규칙 집합을 복원합니다.
  3. 자체 호스팅 에이전트 또는 확장 집합 에이전트를 사용합니다.

호스트된 macOS 에이전트에서 도구 버전을 수동으로 선택하려면 어떻게 해야 하나요?

Xamarin

호스트된 macOS 에이전트는 Xamarin SDK 버전 및 연결된 Mono 버전을 단일 번들 symlink에서 사용할 수 있는 Xamarin SDK 위치에 대한 symlink 집합으로 저장합니다.

호스트된 macOS 에이전트에서 사용할 Xamarin SDK 버전을 수동으로 선택하려면 빌드의 일부로 Xamarin 빌드 작업 전에 다음 bash 명령을 실행하여 필요한 Xamarin 버전 번들에 대한 symlink를 지정합니다.

/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh <symlink>"

사용 가능한 모든 Xamarin SDK 버전 및 symlink 목록은 에이전트 설명서에서 찾을 수 있습니다.

이 명령은 Xamarin SDK 이외의 Mono 버전을 선택하지 않습니다. Mono 버전을 수동으로 선택하려면 아래 지침을 참조하세요.

Xamarin.iOS 또는 Xamarin.Mac 앱을 빌드하기 위해 기본이 아닌 버전의 Xcode를 사용하는 경우 이 명령줄을 추가로 실행해야 합니다.

/bin/bash -c "echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'$(xcodeRoot);sudo xcode-select --switch $(xcodeRoot)/Contents/Developer"

어디 $(xcodeRoot) = /Applications/Xcode_13.2.app

호스트된 macOS 에이전트 풀의 Xcode 버전은 여기에서 에이전트 및 macos-11 에이전트macos-12 대해 찾을 수 있습니다.

Xcode

Azure Pipelines 및 TFS에 포함된 Xcode 작업을 사용하는 경우 해당 작업의 속성에서 Xcode 버전을 선택할 수 있습니다. 그렇지 않은 경우 호스트된 macOS 에이전트 풀에서 사용할 Xcode 버전을 수동으로 설정하려면 빌드 작업 전에 xcodebuild 이 명령줄을 빌드의 일부로 실행하여 필요에 따라 Xcode 버전 번호 13.2를 바꿉니다.

/bin/bash -c "sudo xcode-select -s /Applications/Xcode_13.2.app/Contents/Developer"

호스트된 macOS 에이전트 풀의 Xcode 버전은 여기에서 에이전트 및 macos-11 에이전트macos-12 대해 찾을 수 있습니다.

이 명령은 Xamarin 앱에서 작동하지 않습니다. Xamarin 앱을 빌드하기 위한 Xcode 버전을 수동으로 선택하려면 위의 지침을 참조하세요.

Mono

호스트된 macOS 에이전트 풀에서 사용할 Mono 버전을 수동으로 선택하려면 Mono 빌드 작업 전에 빌드의 각 작업에서 이 스크립트를 실행하여 필요한 Mono 버전으로 symlink를 지정합니다(사용 가능한 모든 symlink 목록은 위의 Xamarin 섹션에서 찾을 수 있음).

SYMLINK=<symlink>
MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK
echo "##vso[task.setvariable variable=DYLD_FALLBACK_LIBRARY_PATH;]$MONOPREFIX/lib:/lib:/usr/lib:$DYLD_LIBRARY_FALLBACK_PATH"
echo "##vso[task.setvariable variable=PKG_CONFIG_PATH;]$MONOPREFIX/lib/pkgconfig:$MONOPREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
echo "##vso[task.setvariable variable=PATH;]$MONOPREFIX/bin:$PATH"