Azure Pipelines 에이전트

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Pipelines를 사용하여 코드를 빌드하거나 소프트웨어를 배포하려면 하나 이상의 에이전트가 필요합니다. 코드와 사람을 더 추가하게 되면 결국에는 에이전트가 더 많이 필요하게 됩니다.

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

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

에이전트 유형 설명 가용성
Microsoft 호스팅 에이전트 Microsoft에서 호스트 및 관리하는 에이전트 Azure DevOps Services
자체 호스팅 에이전트 VM에서 호스트되는 구성 및 관리 에이전트 Azure DevOps Services, Azure DevOps Server
Azure Virtual Machine Scale Set 에이전트 요구 사항에 맞게 자동 크기 조정될 수 있는 Azure Virtual Machine Scale Sets를 사용하는 자체 호스팅 에이전트의 한 형태 Azure DevOps Services

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

Microsoft 호스팅 에이전트

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

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

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

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

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

자체 호스팅 에이전트

작업을 실행하기 위해 직접 설정하고 관리하는 에이전트는 자체 호스팅 에이전트입니다. Azure Pipelines 또는 Azure DevOps Server(이전에는 TFS(Team Foundation Server))에서 자체 호스팅 에이전트를 사용할 수 있습니다. 자체 호스팅 에이전트를 사용하면 빌드 및 배포에 필요한 종속 소프트웨어 설치를 보다 강력하게 제어할 수 있습니다. 또한 머신 수준 캐시 및 구성은 실행에서 실행까지 유지되어 속도를 높일 수 있습니다.

참고 항목

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

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

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

참고 항목

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 버전과 호환되어야 합니다.

모든 최신 패치 및 버그 수정이 보장되는 유일한 버전이므로 최신 버전의 에이전트만 지원합니다.

노드 실행기 버전

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

모든 공식 Azure DevOps 작업은 노드 10을 범용 처리기로 사용하므로 고객은 오래된 노드 6 라이브러리를 사용하는 사용자 지정 작업을 계속 사용할 수 있습니다. 현재 수명이 종료된 노드와의 이전 버전과의 호환성을 지원하기 위해 지정된 노드 실행기를 수동으로 설치하는 다음 셀프 서비스 메서드를 제공합니다.

  • 노드 6 실행기를 수동으로 설치합니다. 노드 6 실행기를 수동으로 설치하는 방법에 대한 자세한 내용은 노드 6 지원을 참조하세요.

  • 오래된 노드 6 라이브러리가 필요한 파이프라인에서 NodeTaskRunnerInstaller@0 작업을 사용합니다.

  • 노드 6을 포함하는 에이전트 패키지를 설치합니다.

    Azure Pipelines는 두 가지 버전의 에이전트 패키지를 제공합니다.

    • vsts-agent-* 패키지는 노드 6을 지원합니다.
    • pipelines-agent-* 패키지는 노드 6을 지원하지 않습니다. 이 버전의 패키지는 나중에 기본 에이전트 패키지가 됩니다.

    노드 6 종속 작업을 사용하지 않고 에이전트 컴퓨터에 노드 6을 설치하지 않으려는 경우 대체 에이전트 다운로드 섹션에서 https://github.com/microsoft/azure-pipelines-agent/releases에이전트 설치할 수 있습니다.

Azure 가상 머신 확장 집합 에이전트

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

Virtual Machine Scale Set, 대기 상태로 유지할 에이전트 수, 확장 집합의 최대 가상 머신 수를 지정하고 Azure Pipelines는 에이전트의 크기 조정을 관리합니다.

자세한 내용은 Azure 가상 머신 확장 집합 에이전트를 참조하세요.

병렬 작업

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

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

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

Important

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. 에이전트 풀을 선택합니다.

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

    1. Azure DevOps, 컬렉션 설정을 선택합니다.

      컬렉션 설정, 2019.

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

      에이전트 풀, 2019를 선택합니다.

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

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

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

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

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

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

      기능 탭을 선택합니다.

      참고 항목

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

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

      원하는 풀을 선택합니다.

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

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

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

      에이전트 기능 탭.

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

      원하는 탭, 2019를 선택합니다.

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

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

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

      기능 탭, 2019를 선택합니다.

  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에 에이전트를 등록합니다. 에이전트 풀에 에이전트를 등록하려면 에이전트 풀 관리자 여야 합니다. 에이전트 풀 관리자의 ID는 등록 시에만 필요하고 에이전트에 유지되지 않으며, 에이전트와 Azure Pipelines 또는 Azure DevOps Server 간의 후속 통신에 사용되지 않습니다. 등록이 완료되면 에이전트는 수신기 OAuth 토큰을 다운로드하고 이를 사용하여 작업 큐를 수신 대기합니다.

  2. 에이전트는 HTTP 긴 설문 조사를 사용하여 Azure Pipelines/Azure DevOps Server의 작업 큐에 새 작업 요청이 게시되었는지 확인하기 위해 수신 대기합니다. 작업을 사용할 수 있는 경우 에이전트는 작업 및 작업별 OAuth 토큰을 다운로드합니다. 이 토큰은 파이프라인에 지정된 범위 ID 에 대해 Azure Pipelines/Azure DevOps Server에 의해 생성됩니다. 이 토큰은 단기적인 것으로, 에이전트가 리소스(예: 소스 코드)에 액세스하거나 해당 작업 내의 Azure Pipelines 또는 Azure DevOps Server에서 리소스를 수정(예: 테스트 결과 업로드)하는 데 사용됩니다.

  3. 작업이 완료되면 에이전트가 작업별 OAuth 토큰을 삭제하고 수신기 OAuth 토큰을 사용하여 새 작업 요청이 있는지 확인하기 위해 다시 돌아갑니다.

에이전트와 Azure Pipelines/Azure DevOps Server 간에 교환된 메시지의 페이로드는 비대칭형 암호화를 사용하여 보호됩니다. 각 에이전트에는 공개-프라이빗 키 쌍이 있으며, 등록 중에 공개 키가 서버와 교환됩니다. 서버는 공개 키를 사용하여 작업의 페이로드를 암호화한 후에 에이전트에 전송합니다. 에이전트는 해당 프라이빗 키를 사용하여 작업 콘텐츠의 암호를 해독합니다. 이러한 방식으로 파이프라인 또는 변수 그룹에 저장된 비밀이 에이전트와 교환될 때 보안이 유지됩니다.

참고 항목

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

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

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

참고 항목

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

온-프레미스 환경이 Microsoft 호스팅 에이전트 풀에 연결되지 않은 경우(일반적으로 중간 방화벽 때문에) 온-프레미스 컴퓨터에서 자체 호스팅 에이전트를 수동으로 구성해야 합니다. 아래 계통도처럼 에이전트가 대상 온-프레미스 환경에 연결되어 있고 인터넷에 연결되어 있어야만 Azure Pipelines 또는 Team Foundation Server에 연결할 수 있습니다.

온-프레미스 환경에 대한 에이전트 연결

인증

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

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

Windows 에이전트에는 Azure DevOps Server에서 다음과 같은 두 가지 추가 인증 옵션이 있습니다.

Important

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

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

대화형과 서비스의 차이점

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

  1. 서비스로. 운영 체제의 서비스 관리자를 활용하여 에이전트의 수명 주기를 관리할 수 있습니다. 또한 에이전트를 자동으로 업그레이드하는 환경은 서비스로 실행할 때 더욱 향상됩니다.

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

    참고 항목

    자동 로그온을 사용하도록 설정하거나 화면 보호기를 사용하지 않도록 설정하면 다른 사용자가 컴퓨터로 이동하고 자동으로 로그온되는 계정을 사용할 수 있으므로 보안 위험이 있습니다. 이러한 방식으로 에이전트를 실행하도록 구성하는 경우 컴퓨터가 실제로 보호되고 있는지(예: 보안 시설에 있는지) 확인해야 합니다. 원격 데스크톱을 사용하여 에이전트가 자동 로그온으로 실행되는 컴퓨터에 액세스하는 경우 원격 데스크톱을 닫으면 컴퓨터가 잠기고 이 에이전트에서 실행되는 UI 테스트가 실패할 수 있습니다. 이를 방지하려면 tscon 명령을 사용하여 원격 데스크톱에서 연결을 끊습니다. 예시:

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

에이전트 계정

에이전트를 서비스로 실행하든 대화형으로 실행하든 에이전트를 실행하는 데 사용할 컴퓨터 계정을 선택할 수 있습니다. (Azure Pipelines 또는 Azure DevOps Server에 에이전트를 등록할 때 사용하는 자격 증명과 다릅니다.) 에이전트 계정 선택은 빌드 및 배포 작업에서 실행되는 작업의 요구 사항에만 따라 달라집니다.

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

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

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

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 파일을 로컬 파일로 사용할 다음 폴더에 수동으로 복사합니다. 에이전트 폴더가 없으면 만듭니다.

  • Windows: %ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux: usr/share/Microsoft/Azure DevOps/Agents
  • macOS: usr/share/Microsoft/Azure DevOps/Agents

에이전트 폴더가 없으면 만듭니다.

FAQ

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

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

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

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

      조직 설정을 선택합니다.

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

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

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

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

      컬렉션 설정을 선택합니다.

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

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

    1. Azure DevOps, 컬렉션 설정을 선택합니다.

      컬렉션 설정, 2019.

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

      에이전트 풀, 2019를 선택합니다.

  2. 에이전트가 포함된 풀을 클릭합니다.

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

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

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

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

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

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

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

      기능 탭을 선택합니다.

      참고 항목

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

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

      원하는 풀을 선택합니다.

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

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

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

      에이전트 기능 탭.

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

      원하는 탭, 2019를 선택합니다.

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

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

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

      기능 탭, 2019를 선택합니다.

  5. Agent.Version 기능을 찾습니다. 최신 게시된 에이전트 버전에 대해 이 값을 검사 수 있습니다. 나열된 가장 높은 버전 번호는 Azure Pipelines 에이전트를 참조하고 페이지를 검사.

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

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

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

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

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

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

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

대부분의 경우에는 그렇습니다. 특히:

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

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

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

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

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

병렬 빌드 작업이 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 버전 매핑에 대한 자세한 내용은 API 및 Azure DevOps Server 버전 매핑을 참조 하세요.

URI 매개 변수

이름 그런 다음 필수 Type 설명
agentId query False string 업데이트할 에이전트입니다. 지정하지 않으면 모든 에이전트에 대해 업데이트가 트리거됩니다.
organization path True string Azure DevOps 조직의 이름입니다.
poolId path True integer int32 사용할 에이전트 풀
api-version query False string 사용할 API의 버전입니다. 이 API 버전을 사용하려면 '6.0'으로 설정해야 합니다.

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

참고 항목

Azure Pipelines 에이전트는 GitHub에서 오픈 소스.

자세한 정보

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