Azure Pipelines 에이전트

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Azure Pipelines를 사용하여 코드를 빌드하거나 소프트웨어를 배포하려면 하나 이상의 에이전트가 필요합니다. 코드 베이스와 팀이 성장함에 따라 여러 에이전트가 필요합니다.

파이프라인이 실행되면 시스템은 하나 이상의 작업을 시작합니다. 에이전트는 한 번에 하나의 작업을 실행하는 설치된 에이전트 소프트웨어가 있는 컴퓨팅 인프라입니다.

Azure Pipelines는 여러 가지 유형의 에이전트를 제공합니다.

에이전트 유형 설명 가용성
Microsoft 호스팅 에이전트 Microsoft에서 호스트 및 관리하는 에이전트입니다. Azure DevOps Services
자체 호스팅 에이전트 VM(가상 머신)에서 호스트되는 에이전트를 구성하고 관리합니다. Azure DevOps Services(아주르 데브옵스 서비스), Azure DevOps Server(아주르 데브옵스 서버)
관리되는 DevOps 풀의 에이전트 관리형 DevOps 풀은 완전히 관리되는 서비스입니다. 에이전트에 전원을 공급하는 가상 머신 또는 컨테이너는 사용자 고유의 Azure 구독이 아닌 Microsoft Azure 구독에 있습니다. Azure DevOps Services
Azure 가상 머신 스케일 세트 에이전트 Azure Virtual Machine Scale Sets를 사용하고 요구에 맞게 자동 크기 조정될 수 있는 자체 호스팅 에이전트의 한 형태입니다.

자동 크기 조정 가능한 자체 호스팅 에이전트 풀을 사용하려는 경우 Managed DevOps 풀을 고려하는 것이 좋습니다. 자세한 내용은 Azure Virtual Machine Scale Sets 에이전트와 관리되는 DevOps 풀 비교관리되는 DevOps 풀 개요를 참조하세요.
Azure DevOps Services

에이전트의 호스트 컴퓨터 또는 컨테이너에서 직접 작업을 실행할 수 있습니다.

Microsoft에서 호스팅하는 에이전트

파이프라인이 Azure Pipelines에 있는 경우 Microsoft 호스팅 에이전트를 사용하여 작업을 편리하게 실행할 수 있습니다. Microsoft 호스팅 에이전트를 사용하면 유지 관리 및 업그레이드가 자동으로 수행됩니다.

파이프라인에 지정한 최신 버전의 VM 이미지가 항상 있습니다. 파이프라인을 실행할 때마다 파이프라인의 각 작업에 대한 새 가상 머신이 표시됩니다. 가상 머신은 한 작업 후에 삭제됩니다. 코드 체크 아웃과 같이 작업이 가상 머신 파일 시스템에 적용하는 모든 변경 내용은 다음 작업에서 사용할 수 없습니다.

Microsoft 호스팅 에이전트는 VM 또는 컨테이너에서 직접 작업을 실행할 수 있습니다.

Azure Pipelines는 Microsoft 호스팅 에이전트와 함께 미리 정의된 Azure Pipelines라는 에이전트 풀을 제공합니다.

많은 팀에서 이 프로세스는 작업을 실행하는 가장 간단한 방법입니다. 먼저 빌드 또는 배포에 적합한지 확인할 수 있습니다. 그렇지 않은 경우 Virtual Machine Scale Sets 에이전트 또는 자체 호스팅 에이전트를 사용할 수 있습니다.

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

Microsoft 호스팅 에이전트에 대해 자세히 알아봅니다.

자체 호스팅 에이전트

자체 호스팅 에이전트는 작업을 실행하고 직접 관리하도록 설정한 에이전트입니다. Azure Pipelines 또는 Azure DevOps Server에서 자체 호스팅 에이전트를 사용할 수 있습니다. 자체 호스팅 에이전트는 빌드 및 배포에 필요한 종속 소프트웨어를 설치하는 데 더 많은 제어를 제공합니다. 또한 머신 수준 캐시 및 구성은 실행에서 실행까지 유지되어 속도를 높일 수 있습니다.

컴퓨터당 여러 에이전트를 설치할 수 있지만 컴퓨터당 하나의 에이전트만 설치하는 것이 좋습니다. 둘 이상의 에이전트를 설치하면 성능 및 파이프라인의 결과에 부정적인 영향을 줄 수 있습니다.

자체 호스팅 에이전트를 설치하기 전에 Microsoft 호스팅 에이전트 풀이 적합한지 확인할 수 있습니다. 대부분의 경우 Microsoft 호스팅 에이전트 풀을 시작하는 가장 간단한 방법입니다. 시도해 보세요.

Linux, macOS 및 Windows 머신에 에이전트를 설치할 수 있습니다. Docker 컨테이너에 에이전트를 설치할 수도 있습니다. 자체 호스팅 에이전트 설치에 대한 자세한 내용은 다음을 참조하세요.

macOS에서는 macOS Gatekeeper 보호가 실행 시 TAR 파일 ./config.sh 의 각 어셈블리에 대해 표시되지 않도록 다운로드 보관 파일의 특수 특성을 지워야 합니다. 다음 명령은 파일의 확장 특성을 지웁니다.

xattr -c vsts-agent-osx-x64-V.v.v.tar.gz  ## replace V.v.v with the version in the filename downloaded.
 
# then unpack the gzip tar file normally:

tar xvfz vsts-agent-osx-x64-V.v.v.tar.gz

컴퓨터에 에이전트를 설치한 후 작업에 필요한 다른 소프트웨어를 해당 컴퓨터에 설치할 수 있습니다.

참고 사항

에이전트는 이전 버전과 대부분 호환됩니다. Azure DevOps에서 더 높은 버전의 에이전트를 요구하지 않는 한 에이전트의 모든 버전은 Azure DevOps 버전과 호환되어야 합니다.

최신 버전의 에이전트만 지원합니다. 이는 모든 up-to-date 패치 및 버그 수정이 보장되는 유일한 버전이기 때문입니다.

Node.js 실행기 버전

에이전트는 다양한 Node.js 처리기를 사용하는 대상 작업을 지원하기 위해 여러 버전의 Node.js 라이브러리와 함께 제공됩니다.

모든 공식 Azure DevOps 작업은 Node.js 20 라이브러리를 범용 처리기로 사용합니다. 그러나 고객은 지원 종료 Node.js 버전을 사용하는 사용자 지정 작업을 계속 사용할 수 있습니다. 확장/사용자 지정 작업 작성자는 현재 Node.js 버전으로 작업을 업데이트/테스트해야 합니다.

Azure Pipelines의 Node.js 실행기 수명 주기에 대한 자세한 내용은 Azure Pipelines 에이전트의Node.js 실행기를 참조하세요.

Azure Virtual Machine Scale Sets 에이전트

Azure Virtual Machine Scale Sets 에이전트는 요구 사항에 맞게 자동 크기 조정될 수 있는 자체 호스팅 에이전트의 한 형태입니다. 이처럼 탄력적이므로 항상 전용 에이전트를 실행할 필요성이 감소합니다. Microsoft 호스팅 에이전트와 달리 에이전트가 실행되는 컴퓨터의 크기와 이미지에 대한 유연성이 있습니다.

Azure Pipelines는 에이전트의 크기 조정을 관리합니다. 다음 요소를 지정합니다.

  • 가상 머신 확장 집합
  • 대기 상태로 유지할 에이전트 수
  • 확장 집합의 최대 가상 머신 수

자세한 내용은 Azure Virtual Machine Scale Sets 에이전트를 참조하세요.

DevOps 풀의 관리되는 에이전트

관리형 DevOps 풀을 사용하면 개발 팀이 팀의 특정 요구 사항에 맞게 조정된 Azure DevOps 에이전트 풀을 빠르고 쉽게 스핀업할 수 있습니다.

관리되는 DevOps 풀:

  • 보안 모범 사례를 구현합니다.
  • 비용과 성능의 균형을 맞추는 방법을 제공합니다.
  • 가장 일반적인 시나리오에 대한 경로를 제공합니다.
  • 사용자 지정 풀을 만들고 유지 관리하는 데 걸리는 시간을 크게 줄입니다.

관리형 DevOps 풀은 Azure Virtual Machine Scale Sets 에이전트 풀의 진화입니다. 사용자 지정 풀의 확장성 및 안정성을 개선하여 사용자 지정 풀 만들기를 더욱 간소화합니다. 관리형 DevOps 풀은 완전히 관리되는 서비스입니다. 에이전트를 실행하는 가상 머신이나 컨테이너는 귀하의 Azure 구독이 아닌 Microsoft Azure 구독에 존재하며, 이는 Azure Virtual Machine Scale Sets 에이전트 풀과 유사합니다. 자세한 내용은 관리 DevOps 풀 설명서를 참조하세요.

병렬 작업

병렬 작업의 개념은 조직에서 동시에 실행할 수 있는 작업 수를 나타냅니다. 조직에 단일 병렬 작업이 있는 경우 조직에서 한 번에 하나의 작업을 실행할 수 있습니다. 다른 모든 동시 작업은 첫 번째 작업이 완료될 때까지 큐에 대기됩니다. 두 작업을 동시에 실행하려면 2개의 병렬 작업이 필요합니다. Azure Pipelines에서 Microsoft 호스팅 인프라 또는 자체(자체 호스팅) 인프라에서 병렬 작업을 실행할 수 있습니다.

Microsoft는 병렬 작업을 하나 이상 포함하는 모든 조직에 기본적으로 무료 서비스 계층을 제공합니다. 실행해야 하는 동시 파이프라인 수에 따라 여러 Microsoft 호스팅 또는 자체 호스팅 에이전트를 동시에 사용하려면 더 많은 병렬 작업이 필요할 수 있습니다. 병렬 작업 및 다양한 무료 서비스 계층에 대한 자세한 내용은 Azure Pipelines의 병렬 작업을 참조 하세요.

여러 에이전트를 동시에 사용하려면 더 많은 병렬 작업이 필요할 수 있습니다.

중요

Azure DevOps Server 2019부터는 릴리스에서 자체 호스팅 동시 작업에 대한 비용을 지불하지 않습니다. 가지고 있는 에이전트 수에 의해서만 제한됩니다.

기능 및 특징

모든 자체 호스팅 에이전트에는 수행할 수 있는 작업을 나타내는 기능 집합이 있습니다. 기능은 이름/값 쌍으로 구성되며 다음 중 하나입니다:

  • 에이전트 소프트웨어가 검색하는 기능( 시스템 기능이라고 함).
  • 사용자 기능이라고 정의하는 기능입니다.

에이전트 소프트웨어는 다양한 시스템 기능을 자동으로 결정합니다. 이러한 기능에는 컴퓨터의 이름, 운영 체제 유형 및 컴퓨터에 설치된 특정 소프트웨어 버전이 포함됩니다. 또한 컴퓨터에 정의된 환경 변수는 시스템 기능 목록에 자동으로 표시됩니다.

환경 변수를 기능으로 저장하는 경우 저장된 기능 값은 에이전트가 실행될 때 환경 변수를 설정하는 데 사용됩니다. 또한 에이전트가 실행되는 동안 환경 변수를 변경하면 해당 변수는 어떤 작업에서도 선택되고 사용되지 않습니다. 변경되는 중요한 환경 변수를 기능으로 저장하지 않으려면 에이전트에 이를 무시하도록 지시할 수 있습니다. VSO_AGENT_IGNORE 무시할 쉼표로 구분된 변수 목록을 사용하여 환경 변수를 설정합니다. 예를 들어, 소프트웨어를 설치할 때 무시할 수 있는 중요한 변수는 PATH입니다.

파이프라인을 작성할 때 에이전트의 특정 요구를 지정합니다 . 시스템은 파이프라인에 지정된 요구 사항과 일치하는 기능이 있는 에이전트에만 작업을 보냅니다. 결과적으로 에이전트 기능을 사용하면 작업을 특정 에이전트로 보낼 수 있습니다.

요구 사항 및 기능은 작업의 요구 사항을 충족하는 에이전트와 작업을 일치시킬 수 있도록 자체 호스팅 에이전트에서 사용하도록 설계되었습니다. Microsoft 호스팅 에이전트를 사용하는 경우 작업의 요구 사항과 일치하는 에이전트에 대한 이미지를 선택합니다. Microsoft 호스팅 에이전트에 기능을 추가할 수 있지만 Microsoft 호스팅 에이전트에서 기능을 사용할 필요는 없습니다.

요구 설정

YAML 빌드 파이프라인에 요구 사항을 추가하려면 demands: 섹션에 pool 줄을 추가합니다.

pool:
  name: Default
  demands: SpecialSoftware # exists check for SpecialSoftware

기능의 존재를 확인하거나 기능 값과 비교할 수 있습니다. 자세한 내용은 YAML 스키마 - 요구 사항을 참조 하세요.

에이전트 기능 구성

버전 및 시스템 기능을 포함하여 에이전트 세부 정보를 보고 해당 사용자 기능을 관리할 수 있습니다. 에이전트 풀로 이동하여 원하는 에이전트의 기능 탭을 선택합니다.

  1. 웹 브라우저에서 에이전트 풀로 이동합니다.

    1. 조직에 로그인합니다(https://dev.azure.com/{yourorganization}).

    2. Azure DevOps>조직 설정을 선택합니다.

      조직 설정을 선택하는 방법을 보여 주는 스크린샷.

    3. 에이전트 풀을 선택합니다.

      에이전트 풀 탭을 선택하는 방법을 보여 주는 스크린샷

    1. 프로젝트 컬렉션(http://your-server/DefaultCollection)에 로그인합니다.

    2. Azure DevOps>컬렉션 설정을 선택합니다.

      컬렉션 설정을 선택하는 방법을 보여 주는 스크린샷.

    3. 에이전트 풀을 선택합니다.

      에이전트 풀을 선택합니다.

    에이전트 풀로 이동하여 선택하는 방법을 보여 주는 스크린샷

  2. 기능 탭으로 이동합니다.

    1. 에이전트 풀 탭에서 원하는 에이전트 풀을 선택합니다.

      에이전트 풀에서 원하는 에이전트 풀을 선택합니다.

    2. 에이전트를 선택하고 원하는 에이전트를 선택합니다.

      에이전츠를 선택한 후 에이전트를 선택하세요.

    3. 기능 탭을 선택합니다.

      기능 탭을 선택합니다.

      참고 사항

      Microsoft 호스팅 에이전트는 시스템 기능을 표시하지 않습니다. Microsoft 호스팅 에이전트에 설치된 소프트웨어 목록은 Microsoft 호스팅 에이전트 사용을 참조하세요.

    1. 에이전트 풀 탭에서 원하는 풀을 선택합니다.

      원하는 풀을 선택합니다.

    2. 에이전트를 선택하고 원하는 에이전트를 선택합니다.

      에이전트 목록을 열고 원하는 에이전트를 선택하세요.

    3. 기능 탭을 선택합니다.

      에이전트 기능 탭.

  3. 에이전트에 새 기능을 등록하려면 새 기능 추가를 선택합니다.

자체 호스팅 에이전트에 새 소프트웨어를 설치한 후 새 기능이 표시되도록 에이전트를 다시 시작해야 합니다. 자세한 내용은 Windows 에이전트 다시 시작, Linux 에이전트 다시 시작 및 Mac 에이전트 다시 시작을 참조하세요.

통신

Azure Pipelines와의 통신

Azure DevOps Server와의 통신

에이전트는 Azure Pipelines 또는 Azure DevOps Server와 통신합니다. 실행해야 하는 작업을 결정하고 로그 및 작업 상태를 보고합니다. 에이전트는 항상 이 통신을 시작합니다.

에이전트를 구성하는 방법에 따라 에이전트의 모든 메시지는 HTTP 또는 HTTPS를 통해 Azure Pipelines 또는 Azure DevOps Server로 전달됩니다. 이 끌어오기 모델을 사용하면 다음 예제와 같이 에이전트를 다른 토폴로지로 구성할 수 있습니다.

온-프레미스 설치의 에이전트 토폴로지를 보여 주는 그래픽입니다.

Azure DevOps Services의 에이전트 토폴로지 그래픽

에이전트와 Azure Pipelines 또는 Azure DevOps Server 간의 일반적인 통신 패턴은 다음과 같습니다.

  1. 사용자는 에이전트를 에이전트 풀에 추가하여 Azure Pipelines 또는 Azure DevOps Server에 에이전트를 등록합니다. 해당 에이전트 풀에 에이전트를 등록하려면 에이전트 풀 관리자 역할이 있어야 합니다. 에이전트 풀 관리자 역할은 등록 시에만 필요하며 에이전트에서 유지되지 않습니다. 에이전트와 Azure Pipelines 또는 Azure DevOps Server 간의 추가 통신에는 사용되지 않습니다.

    등록이 완료되면 에이전트가 a listener OAuth token 를 다운로드하여 작업 큐를 수신 대기하는 데 사용합니다.

  2. 에이전트는 HTTP 긴 설문 조사를 사용하여 새 작업 요청이 Azure Pipelines 또는 Azure DevOps Server의 작업 큐에 게시되는지 확인합니다. 작업을 사용할 수 있는 경우 에이전트는 작업 및 job-specific OAuth token을 다운로드합니다. Azure Pipelines 또는 Azure DevOps Server는 파이프라인에 지정된 범위가 지정된 ID에 대한 수명이 짧은 토큰 생성합니다.

    에이전트는 토큰을 사용하여 해당 작업 내의 Azure Pipelines 또는 Azure DevOps Server에서 리소스에 액세스하거나 수정합니다. 예를 들어 토큰을 사용하여 소스 코드에 액세스하거나 테스트 결과를 업로드합니다.

  3. 에이전트는 작업이 완료된 후 작업별 OAuth 토큰을 삭제한 다음 수신기 OAuth 토큰을 사용하여 새 작업 요청이 있는지 확인합니다.

에이전트와 Azure Pipelines 또는 Azure DevOps Server 간에 교환되는 메시지의 페이로드는 비대칭 암호화를 사용하여 보호됩니다.

각 에이전트에는 공개-프라이빗 키 쌍이 있으며, 등록 중에 공개 키가 서버와 교환됩니다. 서버는 공개 키를 사용하여 에이전트에 보내기 전에 작업의 페이로드를 암호화합니다. 에이전트는 프라이빗 키를 사용하여 작업 콘텐츠의 암호를 해독합니다.

이 메서드는 에이전트와 교환할 때 파이프라인 또는 변수 그룹에 저장된 비밀을 보호합니다.

참고 사항

에이전트는 UTF-8 클라이언트 인코딩 출력을 지원합니다. 그러나 시스템에서 UTF-8 인코딩을 사용하지 않는 경우 로그 출력에 몇 가지 문제가 발생할 수 있습니다. 예를 들어 로그에는 시스템 인코딩에서 인식하지 못하는 문자가 포함될 수 있으므로 기호가 왜곡되거나 누락된 것처럼 보일 수 있습니다.

대상 서버에 배포하기 위해 통신

에이전트를 사용하여 서버 세트에 아티팩트를 배포하는 경우 해당 서버에 대한 "가시선" 연결이 있어야 합니다. 기본적으로 Microsoft 호스팅 에이전트 풀은 Azure에서 실행되는 Azure 웹 사이트 및 서버에 연결됩니다.

Azure 리소스가 Azure 가상 네트워크에서 실행되는 경우 Microsoft 호스팅 에이전트가 배포되는 에이전트 IP 범위를 가져올 수 있습니다. 그런 다음 에이전트의 액세스를 허용하도록 Azure 가상 네트워크에 대한 방화벽 규칙을 구성할 수 있습니다.

일반적으로 중간 방화벽으로 인해 온-프레미스 환경에 Microsoft 호스팅 에이전트 풀에 연결되지 않은 경우 온-프레미스 컴퓨터에서 자체 호스팅 에이전트를 수동으로 구성해야 합니다. 에이전트는 대상 온-프레미스 환경에 연결하고 인터넷에 액세스하여 Azure Pipelines 또는 Azure DevOps Server에 연결해야 합니다. 이 프로세스는 다음 도해에서 시연됩니다.

온-프레미스 환경에 대한 에이전트 연결을 보여 주는 그래픽입니다.

인증

에이전트를 등록하려면 에이전트 풀에서 관리자 역할 의 멤버여야 합니다. 에이전트 풀 관리자의 ID는 등록 시에만 필요하며 에이전트에 유지되지 않습니다. 에이전트와 Azure Pipelines 또는 Azure DevOps Server 간의 후속 통신에는 사용되지 않습니다. 에이전트를 구성하려면 서버의 로컬 관리자여야 합니다.

에이전트를 등록할 때 다음 인증 유형 중에서 선택합니다. 에이전트 설정 프로세스는 각 인증 유형에 필요한 특정 추가 정보를 묻는 메시지를 표시합니다. 자세한 내용은 자체 호스팅 에이전트 인증 옵션을 참조 하세요.

  • 개인용 액세스 토큰입니다.
  • 대체: 기본 인증을 사용하여 Azure DevOps Server에 연결합니다. 대체를 선택하면 자격 증명을 입력하라는 메시지가 표시됩니다.

또한 Windows 에이전트는 Azure DevOps Server에서 다음과 같은 두 가지 인증 옵션을 제공합니다.

  • 협상: Windows 인증 체계(예: NTLM(New Technology LAN Manager) 또는 Kerberos)를 통해 로그인한 사용자 이외의 사용자로 Azure DevOps Server에 연결합니다. 협상을 선택하면 자격 증명을 묻는 메시지가 표시됩니다.
  • 통합: (기본값) Windows 인증 체계(예: NTLM 또는 Kerberos)를 통해 로그인한 사용자의 자격 증명을 사용하여 Azure DevOps Server에 Windows 에이전트를 연결합니다. 이 방법을 선택한 후에는 자격 증명을 묻는 메시지가 표시되지 않습니다.

중요

대체 인증, 협상 또는 통합 인증을 사용하도록 인증 방법을 지원 하도록 서버를 구성해야 합니다.

에이전트를 등록하는 데 사용하는 인증 방법은 에이전트 등록 중에만 사용됩니다. 등록 후 에이전트가 Azure Pipelines와 통신하는 방법에 대한 자세한 내용은 Azure Pipelines 또는 Azure DevOps Server와의 통신을 참조하세요.

대화형과 서비스의 차이점

자체 호스팅 에이전트를 서비스 또는 대화형 프로세스로 실행할 수 있습니다.

에이전트를 구성한 후에는 먼저 대화형 모드에서 에이전트가 작동하는지 확인하는 것이 좋습니다. 그런 다음 프로덕션 사용을 위해 다음 모드 중 하나로 에이전트를 실행하여 안정적으로 실행 상태로 유지하도록 하는 것이 좋습니다. 또한 이러한 모드에서는 머신을 다시 시작하는 경우 에이전트가 자동으로 시작됩니다.

  • 서비스: 운영 체제의 서비스 관리자를 사용하여 에이전트의 수명 주기를 관리할 수 있습니다. 에이전트를 서비스로 실행할 때 에이전트를 자동 업그레이드하는 환경이 더 좋습니다.

  • 자동 로그인을 사용하도록 설정된 대화형 프로세스: 경우에 따라 프로덕션 사용을 위해 에이전트를 대화형으로 실행해야 할 수 있습니다(예: UI 테스트를 실행하려면). 이 모드에서 실행되도록 에이전트를 구성하면 화면 보호기를 사용할 수 없습니다. 일부 도메인 정책에서는 자동 로그인을 사용하도록 설정하거나 화면 보호기를 사용하지 않도록 설정할 수 없습니다. 이러한 경우 도메인 정책에서 예외를 검색하거나 도메인 정책이 적용되지 않는 작업 그룹 컴퓨터에서 에이전트를 실행해야 할 수 있습니다.

    참고 사항

    자동 로그인을 사용하도록 설정하거나 화면 보호기를 사용하지 않도록 설정하면 보안 위험이 있습니다. 다른 사용자는 컴퓨터에 액세스하고 자동으로 로그인하는 계정을 사용할 수 있습니다. 이러한 방식으로 실행되도록 에이전트를 구성하는 경우 컴퓨터가 물리적으로 보호되었는지 확인해야 합니다(예: 보안 시설에 있음).

    원격 데스크톱을 사용하여 에이전트가 자동 로그인으로 실행 중인 컴퓨터에 액세스하는 경우 원격 데스크톱을 닫으면 컴퓨터가 잠깁니다. 이 에이전트에서 실행되는 모든 UI 테스트가 실패할 수 있습니다. 이 문제를 방지하려면 명령을 사용하여 tscon 원격 데스크톱에서 연결을 끊습니다. 예시:

    %windir%\System32\tscon.exe 1 /dest:console

에이전트 계정

에이전트를 서비스로 실행하든 대화형으로 실행하든 에이전트를 실행하는 데 사용할 컴퓨터 계정을 선택할 수 있습니다. 에이전트 계정 선택은 빌드 및 배포 작업에서 실행되는 작업의 요구 사항에만 따라 달라집니다.

예를 들어 Windows 인증을 사용하여 외부 서비스에 액세스하여 작업을 실행하려면 해당 서비스에 대한 액세스 권한이 있는 계정을 사용하여 에이전트를 실행해야 합니다. 그러나 브라우저가 필요한 Selenium 또는 코딩된 UI 테스트와 같은 UI 테스트를 실행하는 경우 브라우저가 에이전트 계정의 컨텍스트에서 열립니다.

Windows에서는 네트워크 서비스 또는 로컬 서비스와 같은 서비스 계정을 사용하는 것이 좋습니다. 이러한 계정 권한은 제한되며 암호가 만료되지 않으므로 에이전트는 시간이 지남에 따라 관리가 덜 필요합니다.

이러한 자격 증명은 Azure Pipelines 또는 Azure DevOps Server에 에이전트를 등록할 때 사용하는 자격 증명과 다릅니다.

에이전트 버전 및 업그레이드

Azure Pipelines에서 몇 주마다 에이전트 소프트웨어를 업데이트합니다. 에이전트 버전을 형식 {major}.{minor}으로 나타냅니다. 예를 들어 에이전트 버전이 2.1면 주 버전이 2 고 부 버전이 1있습니다.

Microsoft 호스팅 에이전트를 최신 상태로 유지합니다. 최신 버전의 에이전트가 마이너 버전에서만 다른 경우 Azure Pipelines는 자체 호스팅 에이전트를 자동으로 업데이트할 수 있습니다. 기본 설정은 활성화됩니다. 에이전트를 선택한 다음 설정을 선택하여 에이전트 풀에서 이 설정을 구성할 수 있습니다. 플랫폼 기능 또는 파이프라인의 작업 중 하나에 최신 버전의 에이전트가 필요한 경우 업그레이드가 요청됩니다.

자체 호스팅 에이전트를 대화형으로 실행하거나 사용 가능한 최신 버전의 에이전트가 있는 경우 에이전트를 수동으로 업그레이드해야 할 수 있습니다. 조직의 에이전트 풀 탭에서 에이전트를 업그레이드할 수 있습니다. 호환되는 에이전트 없이는 파이프라인을 실행할 수 없습니다.

자체 호스팅 에이전트를 업데이트하려면

  1. 프로젝트 설정>에이전트 풀로 이동합니다.

    에이전트 풀을 찾아 선택하는 방법을 보여 주는 스크린샷

  2. 에이전트 풀을 선택한 다음 모든 에이전트 업데이트를 선택합니다.

    모든 에이전트 업데이트를 선택하는 방법을 보여 주는 스크린샷

    ... 메뉴에서 업데이트 에이전트를 선택하여 에이전트를 개별적으로 업데이트할 수도 있습니다.

    에이전트 업데이트 선택 방법을 보여 주는 스크린샷

  3. 업데이트를 선택하여 확인합니다.

    업데이트를 선택하여 확인하는 방법을 보여 주는 스크린샷

  4. 업데이트 요청은 풀의 각 에이전트에 대해 큐에 대기되며 현재 실행 중인 작업이 완료되면 실행됩니다. 업그레이드는 일반적으로 몇 분 정도 걸립니다. 이 시간은 에이전트 소프트웨어의 최신 버전(약 200MB)을 다운로드하고, 압축을 풀고, 새 버전으로 에이전트를 다시 시작하기에 충분합니다. 에이전트 탭에서 에이전트의 상태를 모니터링할 수 있습니다 .

모든 Azure DevOps Server 업데이트로 에이전트 소프트웨어를 업데이트합니다. 에이전트 버전을 형식 {major}.{minor}으로 나타냅니다. 예를 들어 에이전트 버전이 2.1면 주 버전은 2이고 부 버전은 1입니다.

Azure DevOps Server에 최신 버전의 에이전트가 있고 최신 에이전트가 버전에서만 다른 경우 일반적으로 자동으로 업그레이드할 수 있습니다. 플랫폼 기능 또는 파이프라인에서 사용하는 작업 중 하나에 최신 버전의 에이전트가 필요한 경우 업그레이드가 요청됩니다. Azure DevOps Server 2019부터 새 서버 릴리스를 기다릴 필요가 없습니다. 새 버전의 에이전트를 애플리케이션 계층에 업로드할 수 있으며 해당 버전은 업그레이드로 제공됩니다.

에이전트를 대화형으로 실행하거나 최신 버전의 에이전트를 사용할 수 있는 경우 에이전트를 수동으로 업그레이드해야 할 수 있습니다. 프로젝트 컬렉션 아래의 에이전트 풀 탭에서 에이전트를 쉽게 업그레이드할 수 있습니다. 호환되는 에이전트 없이는 파이프라인을 실행할 수 없습니다.

에이전트의 버전을 볼 수 있습니다. 에이전트 풀로 이동하여 에이전트 기능 구성에 설명된 대로 원하는 에이전트에 대한 기능 탭을 선택합니다.

에이전트 업데이트를 프로그래밍 방식으로 트리거하려면 특정 에이전트 풀에 대해 프로그래밍 방식으로 에이전트 업데이트를 트리거하는 방법 섹션에 설명된 대로 에이전트 업데이트 API를 사용할 수 있습니다.

인터넷에 액세스할 수 없는 서버의 경우 에이전트 ZIP 파일을 로컬 파일로 사용할 다음 폴더에 수동으로 복사합니다. 에이전트 폴더가 없으면 생성하십시오.

  • 윈도우: %ProgramData%\Microsoft\Azure DevOps\Agents
  • 리눅스: usr/share/Microsoft/Azure DevOps/Agents
  • Macos: usr/share/Microsoft/Azure DevOps/Agents

에이전트 디렉터리 구조

에이전트에서 파이프라인 작업이 실행되면 소스 코드, 이진 파일 및 아티팩트를 저장하기 위해 디렉터리 구조가 만들어집니다.

에이전트의 홈 디렉터리가 에이전트가 설치된 디렉터리입니다. 디렉터리의 위치는 일반적으로 다음과 같습니다.

  • Microsoft 호스팅 에이전트: C:\agents\<agent version> Windows에서, /Users/runner/runners/<agent version> macOS에서, 그리고 /home/vsts/agents/<agent version> Linux에서
  • 자체 호스팅 에이전트: C:\agent Windows, Users/<username>/agent (~/agent) macOS 및 /home/vsts/agent Linux.

에이전트의 작업 디렉터리에는 원본 및 작업 출력이 저장되는 작업 영역이 포함됩니다. 작업 디렉터리에는 일반적으로 다음과 같은 위치가 있습니다.

  • Microsoft 호스팅 에이전트: C:\a Windows에서, /Users/runner/work macOS에서, 및 /home/vsts/work Linux에서
  • 자체 호스팅 에이전트: C:\agent\_work Windows, ~/agent/work macOS 및 /home/agent/_work Linux에서.

작업 디렉터리 구조는 다음과 같습니다.


    - /work directory
        - /1 build directory/pipeline workspace
            - /s source/working directory
            - /b binaries directory
            - /a artifacts staging directory
            - /TestResults Test results directory
디렉토리 설명 예제 미리 정의된 변수
에이전트 홈 디렉터리 에이전트가 설치된 위치입니다. Microsoft 호스팅 에이전트:
   윈도우: C:\agents\3.248.0
   리눅스: /home/vsts/agents/3.248.0
   Macos: /Users/runner/runners/3.248.0
자체 호스팅 에이전트:
   윈도우: C:\agent
   리눅스: home/agent
   Macos: ~/agent
Agent.HomeDirectory
작업 디렉터리 에이전트에서 소스 코드, 이진 파일 및 아티팩트가 저장되는 위치입니다. Microsoft 호스팅 에이전트:
   윈도우: C:\a
   리눅스: /home/vsts/work
   Macos: /Users/runner/work
자체 호스팅 에이전트:
   윈도우: C:\agent\_work
   리눅스: /home/agent/_work
   Macos: ~/agent/work
Agent.WorkFolder
Agent.RootDirectory
System.WorkFolder
빌드 디렉터리 또는 작업 영역 파이프라인 작업이 실행되는 위치입니다. Microsoft 호스팅 에이전트:
   윈도우: C:\a\1
   리눅스: /home/vsts/work/1
   Macos: /Users/runner/work/1
자체 호스팅 에이전트:
   윈도우: C:\agent\_work\1
   리눅스: /home/agent/_work/1
   Macos: ~/agent/work/1
Agent.BuildDirectory
Pipeline.Workspace
s - 원본 또는 작업 디렉터리 리포지토리에서 체크 아웃된 소스 코드를 포함합니다. 작업에 여러 checkout 단계가 있는 경우 소스 코드가 리포지토리의 하위 폴더s로 명명된 디렉터리로 체크 아웃됩니다. Microsoft 호스팅 에이전트:
   윈도우: C:\a\1\s
   리눅스: /home/vsts/work/1/s
   Macos: /Users/runner/work/1/s
자체 호스팅 에이전트:
   윈도우: C:\agent\_work\1\s
   리눅스: /home/agent/_work/1/s
   Macos: ~/agent/work/1/s
Build.SourcesDirectory
Build.RepositoryLocalPath
System.DefaultWorkingDirectory
b - 바이너리 디렉터리 빌드 출력을 포함합니다. Microsoft 호스팅 에이전트:
   윈도우: C:\a\1\b
   리눅스: /home/vsts/work/1/b
   Macos: /Users/runner/work/1/b
자체 호스팅 에이전트:
   윈도우: C:\agent\_work\1\b
   리눅스: /home/agent/_work/1/b
   Macos: ~/agent/work/1/b
Build.BinariesDirectory
a - 아티팩트 준비 디렉터리 빌드 아티팩트가 포함됩니다. 자체 호스팅 에이전트의 실행 간에 데이터를 정리합니다. Microsoft 호스팅 에이전트:
   윈도우: C:\a\1\a
   리눅스: /home/vsts/work/1/a
   Macos: /Users/runner/work/1/a
자체 호스팅 에이전트:
   윈도우: C:\agent\_work\1\a
   리눅스: /home/agent/_work/1/a
   Macos: ~/agent/work/1/a
Build.StagingDirectory
Build.ArtifactStagingDirectory
System.ArtifactsDirectory
TestResults 디렉토리 테스트 결과를 포함합니다. 자체 호스팅 에이전트의 실행 간에 데이터를 정리합니다. Microsoft 호스팅 에이전트:
   윈도우: C:\a\1\TestResults
   리눅스: /home/vsts/work/1/TestResults
   Macos: /Users/runner/work/1/TestResults
자체 호스팅 에이전트:
   윈도우: C:\agent\_work\1\TestResults
   리눅스: /home/agent/_work/1/TestResults
   Macos: ~/agent/work/1/TestResults
Common.TestResultsDirectory

Microsoft 호스팅 에이전트에서는 각 실행에서 다른 에이전트가 사용되므로 실행 간에 작업 디렉터리가 유지되지 않습니다. 자체 호스팅 에이전트에서 아티팩트 스테이징 디렉터리 및 테스트 결과 디렉터리만 기본적으로 실행 간에 정리됩니다. 작업 영역 정리 옵션에 대한 자세한 내용은 작업 영역참조하세요.

미리 정의된 변수에 대한 자세한 내용은 미리 정의된 변수 참조하세요.

FAQ

어떻게 할까요? 최신 에이전트 버전이 있는지 확인하시겠습니까?

  1. 에이전트 풀 탭으로 이동합니다.

    1. 조직에 로그인합니다(https://dev.azure.com/{yourorganization}).

    2. Azure DevOps>조직 설정을 선택합니다.

      조직 설정을 선택하는 방법을 보여 주는 스크린샷.

    3. 에이전트 풀을 선택합니다.

      에이전트 풀 탭을 선택하는 방법을 보여 주는 스크린샷

    1. 프로젝트 컬렉션(http://your-server/DefaultCollection)에 로그인합니다.

    2. Azure DevOps>컬렉션 설정을 선택합니다.

      컬렉션 설정을 선택하는 방법을 보여 주는 스크린샷.

    3. 에이전트 풀을 선택합니다.

      에이전트 풀을 선택합니다.

    에이전트 풀로 이동하여 선택하는 방법을 보여 주는 스크린샷

  2. 에이전트가 포함된 풀을 선택합니다.

  3. 에이전트가 사용하도록 설정되어 있는지 확인합니다.

  4. 기능 탭으로 이동합니다.

    1. 에이전트 풀 탭에서 원하는 에이전트 풀을 선택합니다.

      에이전트 풀에서 원하는 에이전트 풀을 선택합니다.

    2. 에이전트를 선택하고 원하는 에이전트를 선택합니다.

      에이전츠를 선택한 후 에이전트를 선택하세요.

    3. 기능 탭을 선택합니다.

      기능 탭을 선택합니다.

      참고 사항

      Microsoft 호스팅 에이전트는 시스템 기능을 표시하지 않습니다. Microsoft 호스팅 에이전트에 설치된 소프트웨어 목록은 Microsoft 호스팅 에이전트 사용을 참조하세요.

    1. 에이전트 풀 탭에서 원하는 풀을 선택합니다.

      원하는 풀을 선택합니다.

    2. 에이전트를 선택하고 원하는 에이전트를 선택합니다.

      에이전트 목록을 열고 원하는 에이전트를 선택하세요.

    3. 기능 탭을 선택합니다.

      에이전트 기능 탭.

  5. Agent.Version 기능을 찾아보세요. 이 값을 Azure Pipelines 에이전트 페이지의 최신 게시된 에이전트 버전과 비교할 수 있습니다.

  6. 각 에이전트는 최신 버전의 에이전트가 필요한 작업을 실행할 때 자동으로 업데이트됩니다. 일부 에이전트를 수동으로 업데이트하려면 풀을 마우스 오른쪽 단추로 클릭한 다음 모든 에이전트 업데이트를 선택합니다.

Azure DevOps Server 풀의 일부인 에이전트를 업데이트할 수 있나요?

예. Azure DevOps Server 2019부터 로컬 디스크에서 에이전트 패키지 파일을 찾도록 서버를 구성할 수 있습니다. 이 구성은 릴리스 당시 서버와 함께 제공된 기본 버전을 재정의합니다. 이 시나리오는 서버에 인터넷에 액세스할 수 없는 경우에도 적용됩니다.

  1. 인터넷에 액세스할 수 있는 컴퓨터에서 Azure Pipelines 에이전트 GitHub 릴리스 페이지에서 최신 버전의 에이전트 패키지 파일(.zip 또는 .tar.gz 형식)을 다운로드합니다.

  2. 선택한 방법(예: USB 드라이브, 네트워크 전송 등)을 사용하여 다운로드한 패키지 파일을 각 Azure DevOps 서버 애플리케이션 계층으로 전송합니다. 에이전트 파일을 폴더 아래에 배치합니다 %ProgramData%\Microsoft\Azure DevOps\Agents . Agents 폴더가 없는 경우, 이러한 폴더를 만드십시오.

  3. 모두 준비됐습니다! 이제 Azure DevOps Server는 에이전트가 업데이트 될 때마다 로컬 파일을 사용합니다. 각 에이전트는 최신 버전의 에이전트가 필요한 작업을 실행할 때 자동으로 업데이트됩니다. 그러나 일부 에이전트를 수동으로 업데이트하려면 풀을 마우스 오른쪽 단추로 클릭한 다음 모든 에이전트 업데이트를 선택합니다.

자체 호스팅 에이전트는 Microsoft 호스팅 에이전트에 비해 성능상 이점이 있나요?

대부분의 경우에는 그렇습니다. 자체 호스팅 에이전트를 사용하는 경우 증분 빌드를 실행할 수 있습니다. 예를 들어 리포지토리를 정리하지 않고 클린 빌드를 수행하지 않는 파이프라인을 정의하는 경우 일반적으로 빌드가 더 빠르게 실행됩니다. 파이프라인이 완료된 후 에이전트가 제거되므로 캐싱과 같은 기능을 사용하지 않는 한 Microsoft 호스팅 에이전트에서는 이러한 이점을 얻을 수 없습니다.

Microsoft 호스트팅 에이전트는 빌드를 시작하는 데 더 오래 걸릴 수 있습니다. Microsoft 호스팅 에이전트에 작업을 할당하는 데 몇 초밖에 걸리지 않지만 시스템의 부하에 따라 에이전트를 할당하는 데 몇 분 정도 걸릴 수 있습니다.

동일한 머신에 자체 호스팅 에이전트를 여러 개 설치할 수 있나요?

예. 이 방법은 많은 공유 리소스를 사용하지 않는 작업을 실행하는 에이전트에 적합할 수 있습니다. 예를 들어 주로 배포를 오케스트레이션하고 에이전트 자체에서 많은 작업을 수행하지 않는 릴리스를 실행하는 에이전트에 대해 이 방법을 시도할 수 있습니다.

다른 경우에는 동일한 컴퓨터에서 여러 에이전트를 실행하여 효율성을 크게 얻지 못할 수 있습니다. 예를 들어 많은 디스크 공간과 입력/출력 리소스를 사용하는 빌드를 실행하는 에이전트에게는 가치가 없을 수 있습니다.

병렬 빌드 작업이 동일한 싱글톤 도구 배포(예: npm 패키지)를 사용하는 경우에도 문제가 발생할 수 있습니다. 한 빌드는 종속성을 업데이트하고 다른 빌드는 종속성을 사용할 수 있으므로 신뢰할 수 없는 결과와 오류가 발생할 수 있습니다.

파이프라인 작업이 취소될 때 에이전트는 무엇을 합니까?

Microsoft 호스트된 에이전트의 경우 에이전트가 삭제되어 Azure Pipelines 풀로 반환됩니다.

자체 호스팅 에이전트의 경우:

  • 파이프라인이 취소되면 에이전트는 현재 단계를 실행하는 프로세스에 명령 시퀀스를 보냅니다.
  • 첫 번째 명령은 7.5초의 시간 제한으로 전송됩니다.
  • 프로세스가 종료되지 않으면 두 번째 명령이 2.5초 시간 제한으로 전송됩니다.
  • 프로세스가 종료되지 않으면 에이전트가 이 프로세스를 강제로 종료하도록 명령합니다.
  • 프로세스가 두 개의 초기 종료 요청을 무시하면 강제로 종료됩니다.

초기 요청에서 종료까지의 시간은 약 10초입니다.

파이프라인을 취소하기 위해 프로세스에 발급된 명령은 에이전트 운영 체제에 따라 다릅니다.

  • macOS 및 Linux: 전송된 SIGINT명령 다음에는 SIGTERM다음 명령이 잇습니다 SIGKILL.
  • Windows: 프로세스로 전송되는 Ctrl+C명령 뒤에는 Ctrl+Break다음 명령이 잇습니다 Process.Kill.

특정 에이전트 풀에 대해 프로그래밍 방식으로 에이전트 업데이트를 트리거하는 방법은 무엇입니까?

다음 API를 사용하여 풀에 대한 에이전트 업데이트를 트리거할 수 있습니다.

POST https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0
POST https://{server url}/tfs/{collection}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0

참고 사항

자세한 내용은 API 및 Azure DevOps Server 버전 매핑을 참조하세요.

URI 매개 변수

이름 안에 필수 유형 설명
agentId 쿼리 False 문자열 업데이트할 에이전트. 지정하지 않으면 모든 에이전트에 대해 업데이트가 트리거됩니다.
organization 경로 True 문자열 Azure DevOps 조직의 이름입니다.
poolId 경로 True 정수 int32 사용할 에이전트 풀입니다.
api-version 쿼리 False 문자열 사용할 API의 버전입니다. 이 버전의 API를 사용하려면 값을 .로 설정 6.0해야 합니다.

에이전트 업데이트를 트리거하려면 요청 본문이 비어 있어야 합니다.

Azure Pipelines 에이전트는 GitHub의 오픈 소스입니다.

에이전트에 대한 자세한 내용은 Azure DevOps 학습 경로를 사용하여 빌드 애플리케이션에서 다음 모듈을 참조하세요.