클래식 릴리스 및 아티팩트 변수

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

클래식 릴리스 및 아티팩트 변수는 파이프라인 전체에서 데이터를 교환하고 전송하는 편리한 방법입니다. 각 변수는 문자열로 저장되며 해당 값은 파이프라인 실행 간에 변경될 수 있습니다.

변수는 템플릿 구문 분석 시간에만 사용할 수 있는 런타임 매개 변수와 다릅니다.

DevOps CI/CD 프로세스의 각 단계에 애플리케이션을 배포하기 위한 작업을 작성할 때 변수는 다음을 수행하는 데 도움이 됩니다.

  • 보다 일반적인 배포 파이프라인을 한 번 정의한 다음 각 단계에 대해 쉽게 사용자 지정합니다. 예를 들어 변수를 사용하여 웹 배포에 대한 연결 문자열 나타낼 수 있으며 이 변수의 값을 한 단계에서 다른 단계로 변경할 수 있습니다. 이러한 변수는 사용자 지정 변수입니다.

  • 배포 파이프라인이 실행되는 특정 릴리스, 단계, 아티팩트 또는 에이전트 의 컨텍스트에 대한 정보를 사용합니다. 예를 들어 스크립트를 다운로드하려면 빌드의 위치 또는 에이전트의 작업 디렉터리에 액세스하여 임시 파일을 만들어야 할 수 있습니다. 이러한 변수는 기본 변수입니다.

참고 항목

YAML 파이프라인의 경우 자세한 내용은 사용자 정의 변수미리 정의된 변수를 참조하세요.

기본 변수

실행 컨텍스트에 대한 정보는 기본 변수를 통해 실행 중인 작업에 사용할 수 있습니다. 작업 및 스크립트는 이러한 변수를 사용하여 실행 중인 시스템, 릴리스, 단계 또는 에이전트에 대한 정보를 찾을 수 있습니다. System.Debug를 제외하고 이러한 변수는 읽기 전용이며 해당 값은 시스템에서 자동으로 설정됩니다. 가장 중요한 변수 중 일부는 다음 표에 설명되어 있습니다. 전체 목록을 보려면 모든 변수의 현재 값 보기를 참조 하세요.

릴리스에 대한 모든 변수 의 현재 값을 보고 기본 변수 를 사용하여 디버그 모드에서 릴리스를 실행할 수 있습니다.

시스템

변수 이름 설명
System.TeamFoundationServerUri Azure Pipelines의 서비스 연결 URL입니다. 스크립트 또는 태스크에서 이를 사용하여 Azure Pipelines REST API를 호출합니다.

예: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri Team Foundation 컬렉션 또는 Azure Pipelines의 URL입니다. 스크립트 또는 태스크에서 이를 사용하여 빌드 및 버전 제어와 같은 다른 서비스에서 REST API를 호출합니다.

예: https://dev.azure.com/fabrikam/
System.CollectionId 이 빌드 또는 릴리스가 속한 컬렉션의 ID입니다.

예: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId 현재 릴리스가 속한 릴리스 파이프라인의 ID입니다.

예: 1
System.TeamProject 이 빌드 또는 릴리스가 속한 프로젝트의 이름입니다.

예: Fabrikam
System.TeamProjectId 이 빌드 또는 릴리스가 속한 프로젝트의 ID입니다.

예: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory 릴리스 배포 중에 아티팩트가 다운로드되는 디렉터리입니다. 에이전트에 아티팩트가 다운로드되어야 하는 경우 모든 배포 전에 디렉터리가 지워집니다. Agent.ReleaseDirectory 및 System.DefaultWorkingDirectory와 동일합니다.

예: C:\agent\_work\r1\a
System.DefaultWorkingDirectory 릴리스 배포 중에 아티팩트가 다운로드되는 디렉터리입니다. 에이전트에 아티팩트가 다운로드되어야 하는 경우 모든 배포 전에 디렉터리가 지워집니다. Agent.ReleaseDirectory 및 System.ArtifactsDirectory와 동일합니다.

예: C:\agent\_work\r1\a
System.WorkFolder 모든 빌드 또는 릴리스에 대해 하위 폴더가 만들어지는 이 에이전트의 작업 디렉터리입니다. Agent.RootDirectory 및 Agent.WorkFolder와 동일합니다.

예: C:\agent\_work
System.Debug 사용자가 설정할있는 유일한 시스템 변수입니다. 오류를 찾는 데 도움이 되도록 디버그 모드 에서 릴리스를 실행하려면 이 값을 true로 설정합니다.

예: true

Release

변수 이름 설명
Release.AttemptNumber 이 릴리스가 이 단계에서 배포된 횟수입니다.

예: 1
Release.DefinitionEnvironmentId 해당 릴리스 파이프라인에 있는 단계의 ID입니다.

예: 1
Release.DefinitionId 현재 릴리스가 속한 릴리스 파이프라인의 ID입니다.

예: 1
Release.DefinitionName 현재 릴리스가 속한 릴리스 파이프라인의 이름입니다.

예: fabrikam-cd
Release.Deployment.RequestedFor 현재 진행 중인 배포를 트리거(시작)한 ID의 표시 이름입니다.

예: Mateo Escobedo
Release.Deployment.RequestedForEmail 현재 진행 중인 배포를 트리거(시작)한 ID의 이메일 주소입니다.

예: mateo@fabrikam.com
Release.Deployment.RequestedForId 현재 진행 중인 배포를 트리거(시작)한 ID의 ID입니다.

예: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID 배포의 ID입니다. 작업당 고유합니다.

예: 254
Release.DeployPhaseID 배포가 실행되는 단계의 ID입니다.

예: 127
Release.EnvironmentId 배포가 현재 진행 중인 릴리스의 스테이지 인스턴스 ID입니다.

예: 276
Release.EnvironmentName 배포가 현재 진행 중인 단계의 이름입니다.

예: Dev
Release.EnvironmentUri 배포가 현재 진행 중인 릴리스의 스테이지 인스턴스 URI입니다.

예: vstfs://ReleaseManagement/Environment/276
Release.Environments. {stage-name}. 상태 단계의 배포 상태.

예: InProgress
Release.PrimaryArtifactSourceAlias 주 아티팩트 원본의 별칭

예: fabrikam\_web
Release.Reason 배포의 이유입니다. 지원되는 값은 다음과 같습니다.
ContinuousIntegration - 빌드가 완료된 후 연속 배포에서 릴리스가 시작되었습니다.
Manual - 릴리스가 수동으로 시작되었습니다.
None - 배포 이유가 지정되지 않았습니다.
Schedule - 릴리스가 일정에서 시작되었습니다.
Release.ReleaseDescription 릴리스 시 제공된 텍스트 설명입니다.

예: Critical security patch
Release.ReleaseId 현재 릴리스 레코드의 식별자입니다.

예: 118
Release.ReleaseName 현재 릴리스의 이름입니다.

예: Release-47
Release.ReleaseUri 현재 릴리스의 URI입니다.

예: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL 이 릴리스의 URL입니다.

예: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Release.RequestedFor 릴리스를 트리거한 ID의 표시 이름입니다.

예: Mateo Escobedo
Release.RequestedForEmail 릴리스를 트리거한 ID의 이메일 주소입니다.

예: mateo@fabrikam.com
Release.RequestedForId 릴리스를 트리거한 ID입니다.

예: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsDownload 에이전트에 아티팩트 다운로드를 건너뛸지 여부를 지정하는 부울 값입니다.

예: FALSE
Release.TriggeringArtifact.Alias 릴리스를 트리거한 아티팩트 별칭입니다. 이 값은 릴리스가 수동으로 예약되거나 트리거될 때 비어 있습니다.

예: fabrikam\_app

릴리스 단계

변수 이름 설명
Release.Environments. {stage name}. 상태 지정된 단계 내에서 이 릴리스의 배포 상태.

예: NotStarted

에이전트

변수 이름 설명
Agent.Name 에이전트 풀에 등록된 에이전트의 이름입니다. 컴퓨터 이름과 다를 수 있습니다.

예: fabrikam-agent
Agent.MachineName 에이전트가 구성된 컴퓨터의 이름입니다.

예: fabrikam-agent
Agent.Version 에이전트 소프트웨어의 버전입니다.

예: 2.109.1
Agent.JobName 실행 중인 작업의 이름(예: 릴리스 또는 빌드)입니다.

예: Release
Agent.HomeDirectory 에이전트가 설치된 폴더입니다. 이 폴더에는 에이전트에 대한 코드와 리소스가 포함되어 있습니다.

예: C:\agent
Agent.ReleaseDirectory 릴리스 배포 중에 아티팩트가 다운로드되는 디렉터리입니다. 에이전트에 아티팩트가 다운로드되어야 하는 경우 모든 배포 전에 디렉터리가 지워집니다. System.ArtifactsDirectory 및 System.DefaultWorkingDirectory와 동일합니다.

예: C:\agent\_work\r1\a
Agent.RootDirectory 모든 빌드 또는 릴리스에 대해 하위 폴더가 만들어지는 이 에이전트의 작업 디렉터리입니다. Agent.WorkFolder 및 System.WorkFolder와 동일합니다.

예: C:\agent\_work
Agent.WorkFolder 모든 빌드 또는 릴리스에 대해 하위 폴더가 만들어지는 이 에이전트의 작업 디렉터리입니다. Agent.RootDirectory 및 System.WorkFolder와 동일합니다.

예: C:\agent\_work
Agent.DeploymentGroupId 에이전트가 등록된 배포 그룹의 ID입니다. 배포 그룹 작업에서만 사용할 수 있습니다.

예: 1

일반 아티팩트

릴리스에서 참조되는 각 아티팩트에서 다음 아티팩트 변수를 사용할 수 있습니다. 모든 변수가 각 아티팩트 형식에 대해 의미가 있는 것은 아닙니다. 아래 표에서는 기본 아티팩트 변수를 나열하고 아티팩트 형식에 따라 갖는 값의 예를 제공합니다. 예제가 비어 있으면 해당 아티팩트 형식에 대해 변수가 채워지지 않음을 의미합니다.

{alias} 자리 표시자를 아티팩트 별칭대해 지정한 값으로 바꾸거나 릴리스 파이프라인에 대해 생성된 기본값으로 바꿉니다.

변수 이름 설명
Release.Artifacts. {alias}. DefinitionId 빌드 파이프라인 또는 리포지토리의 식별자입니다.

Azure Pipelines 예제: 1
GitHub 예제: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName 빌드 파이프라인 또는 리포지토리의 이름입니다.

Azure Pipelines 예제: fabrikam-ci
TFVC 예제: $/fabrikam
Git 예제: fabrikam
GitHub 예제: fabrikam/asp (main)
Release.Artifacts. {alias}. BuildNumber 빌드 번호 또는 커밋 식별자입니다.

Azure Pipelines 예제: 20170112.1
Jenkins/TeamCity 예제: 20170112.1
TFVC 예제: Changeset 3
Git 예제: 38629c964
GitHub 예제: 38629c964
Release.Artifacts. {alias}. BuildId 빌드 식별자입니다.

Azure Pipelines 예제: 130
Jenkins/TeamCity 예제: 130
GitHub 예제: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. BuildURI 빌드의 URL입니다.

Azure Pipelines 예제: vstfs://build-release/Build/130
GitHub 예제: https://github.com/fabrikam/asp
Release.Artifacts. {alias}. SourceBranch 원본이 빌드된 분기의 전체 경로 및 이름입니다.

Azure Pipelines 예제: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName 원본이 빌드된 분기의 이름입니다.

Azure Pipelines 예제: main
Release.Artifacts. {alias}. SourceVersion 빌드된 커밋입니다.

Azure Pipelines 예제: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts. {alias}. Repository.Provider 원본이 빌드된 리포지토리의 형식입니다.

Azure Pipelines 예제: Git
Release.Artifacts. {alias}. RequestedForID 빌드를 트리거한 계정의 식별자입니다.

Azure Pipelines 예제: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts. {alias}. RequestedFor 빌드를 요청한 계정의 이름입니다.

Azure Pipelines 예제: Mateo Escobedo
Release.Artifacts. {alias}. 형식 빌드와 같은 아티팩트 원본의 형식입니다.

Azure Pipelines 예제: Build
Jenkins 예제: Jenkins
TeamCity 예제: TeamCity
TFVC 예제: TFVC
Git 예제: Git
GitHub 예제: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch 끌어오기 요청의 대상인 분기의 전체 경로 및 이름입니다. 이 변수는 릴리스가 끌어오기 요청 흐름에 의해 트리거되는 경우에만 초기화됩니다.

Azure Pipelines 예제: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName 끌어오기 요청의 대상인 분기의 이름입니다. 이 변수는 릴리스가 끌어오기 요청 흐름에 의해 트리거되는 경우에만 초기화됩니다.

Azure Pipelines 예제: main

아티팩트 원본 별칭도 참조하세요.

기본 아티팩트

릴리스 파이프라인에서 아티팩트 중 하나를 기본 아티팩트로 지정합니다. 지정된 기본 아티팩트에서 Azure Pipelines는 다음 변수를 채웁니다.

변수 이름 다음과 같이 사용
Build.DefinitionId Release.Artifacts. {기본 아티팩트 별칭}. DefinitionId
Build.DefinitionName Release.Artifacts. {기본 아티팩트 별칭}. DefinitionName
Build.BuildNumber Release.Artifacts. {기본 아티팩트 별칭}. BuildNumber
Build.BuildId Release.Artifacts. {기본 아티팩트 별칭}. BuildId
Build.BuildURI Release.Artifacts. {기본 아티팩트 별칭}. BuildURI
Build.SourceBranch Release.Artifacts. {기본 아티팩트 별칭}. SourceBranch
Build.SourceBranchName Release.Artifacts. {기본 아티팩트 별칭}. SourceBranchName
Build.SourceVersion Release.Artifacts. {기본 아티팩트 별칭}. SourceVersion
Build.Repository.Provider Release.Artifacts. {기본 아티팩트 별칭}. Repository.Provider
Build.RequestedForID Release.Artifacts. {기본 아티팩트 별칭}. RequestedForID
Build.RequestedFor Release.Artifacts. {기본 아티팩트 별칭}. RequestedFor
Build.Type Release.Artifacts. {기본 아티팩트 별칭}. 형식
Build.PullRequest.TargetBranch Release.Artifacts. {기본 아티팩트 별칭}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {기본 아티팩트 별칭}. PullRequest.TargetBranchName

기본 변수 사용

릴리스 파이프라인 또는 스크립트의 작업에 대한 매개 변수로 두 가지 방법으로 기본 변수를 사용할 수 있습니다.

기본 변수를 작업에 대한 입력으로 직접 사용할 수 있습니다. 예를 들어 별칭이 작업에 ASPNET4.CI 아티팩트 원본을 전달 Release.Artifacts.{Artifact alias}.DefinitionName 하려면 사용합니다$(Release.Artifacts.ASPNET4.CI.DefinitionName).

PowerShell 스크립트 태스크에 대한 인수의 아티팩트 변수 사용

스크립트에서 기본 변수를 사용하려면 먼저 기본 변수 이름을 _.로 바꿔 . 야 합니다. 예를 들어 PowerShell 스크립트에서 별칭이 ASPNET4.CI 아티팩트 원본에 대한 아티팩트 변수 Release.Artifacts.{Artifact alias}.DefinitionName 값을 인쇄하려면 사용합니다$env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME.

인라인 PowerShell 스크립트에서 아티팩트 변수 사용

아티팩트 원본 별칭 ASPNET4.CI의 원래 이름은 .로 바뀝 ASPNET4_CI니다.

모든 변수의 현재 값 보기

  1. 릴리스에 대한 요약의 파이프라인 보기를 열고 관심 있는 단계를 선택합니다. 단계 목록에서 작업 초기화를 선택합니다.

    릴리스에 대한 로그 열기

  2. 그러면 이 단계의 로그가 열립니다. 아래로 스크롤하여 에이전트가 이 작업에 사용하는 값을 확인합니다.

    릴리스에서 변수 값 보기

디버그 모드에서 릴리스 실행

릴리스가 실행될 때 전체 릴리스 또는 개별 릴리스 단계의 작업만 디버그 모드로 실행하여 로그 파일에 추가 정보를 표시합니다. 이렇게 하면 문제 및 실패를 해결하는 데 도움이 될 수 있습니다.

  • 전체 릴리스에 대한 디버그 모드를 시작하려면 값 true이 포함된 System.Debug 변수를 릴리스 파이프라인의 변수 탭에 추가합니다.

  • 단일 단계에 대한 디버그 모드를 시작하려면 스테이지의 바로 가기 메뉴에서 스테이지 구성 대화 상자를 열고 true 이 포함된 System.Debug 변수를 변수 탭에 추가합니다.

  • 또는 값이 포함된 변수 System.Debug 가 포함된 변수 그룹을 만들고 이 변수 그룹을 릴리스 파이프라인에 연결 true 합니다.

Azure RM 서비스 연결과 관련된 오류가 발생하면 방법: Azure Resource Manager 서비스 연결 문제 해결을 참조 하세요.

사용자 지정 변수

사용자 지정 변수는 다양한 범위에서 정의할 수 있습니다.

  • 변수 그룹을 사용하여 프로젝트의 모든 정의에서 값을 공유합니다. 프로젝트의 모든 정의, 단계 및 태스크에서 동일한 값을 사용해야 하며 한 곳에서 값을 변경할 수 있도록 하려면 변수 그룹을 선택합니다. 라이브러리 탭에서 변수 그룹을 정의하고 관리합니다 .

  • 릴리스 파이프라인 변수를 사용하여 모든 단계에서 값을 공유합니다. 릴리스 파이프라인의 모든 단계 및 태스크에서 동일한 값을 사용해야 하는 경우 릴리스 파이프라인 변수를 선택하고 값을 한 곳에서 변경할 수 있습니다. 릴리스 파이프라인의 변수 탭에서 이러한 변수를 정의하고 관리합니다 . 파이프라인 변수 페이지에서 범위 드롭다운 목록을 열고 "릴리스"를 선택합니다. 기본적으로 변수를 추가하면 릴리스 범위로 설정됩니다.

  • 스테이지 변수를 사용하여 특정 단계 내의 모든 작업에서 값을 공유합니다. 스테이지마다 다르며 단계의 모든 작업에 대해 동일한 값에 스테이지 수준 변수를 사용합니다. 릴리스 파이프라인의 변수 탭에서 이러한 변수를 정의하고 관리합니다 . 파이프라인 변수 페이지에서 범위 드롭다운 목록을 열고 필요한 단계를 선택합니다. 변수를 추가할 때 범위를 적절한 환경으로 설정합니다.

프로젝트, 릴리스 파이프라인 및 스테이지 범위에서 사용자 지정 변수를 사용하면 다음을 수행할 수 있습니다.

  • 값이 중복되는 것을 방지하여 모든 항목을 하나의 작업으로 쉽게 업데이트할 수 있습니다.

  • 중요한 값을 릴리스 파이프라인 사용자가 보거나 변경할 수 없는 방식으로 저장합니다. 변수 옆에 있는 (자물쇠) 아이콘을 선택하여 자물쇠 구성 속성을 보안(비밀) 변수로 지정합니다.

    Important

    숨겨진(비밀) 변수의 값은 서버에 안전하게 저장되며 사용자가 저장한 후에는 볼 수 없습니다. 배포하는 동안 Azure Pipelines 릴리스 서비스는 태스크에서 참조할 때 이러한 값을 해독하고 보안 HTTPS 채널을 통해 에이전트에 전달합니다.

참고 항목

사용자 지정 변수를 만들면 표준 변수를 덮어쓸 수 있습니다. 예를 들어 PowerShell 경로 환경 변수입니다. Windows 에이전트에서 사용자 지정 Path 변수를 만드는 경우 변수를 $env:Path 덮어쓰고 PowerShell을 실행할 수 없습니다.

사용자 지정 변수 사용

빌드 및 릴리스 작업에서 사용자 지정 변수를 사용하려면 변수 이름을 괄호로 묶고 앞에 문자로 $ 묶기만 하면 됩니다. 예를 들어 adminUserName이라는 변수가 있는 경우 해당 변수의 현재 값을 작업의 $(adminUserName)매개 변수로 삽입할 수 있습니다.

참고 항목

동일한 범위(예: 작업 또는 단계)의 파이프라인에 연결된 여러 그룹의 변수가 충돌하여 결과를 예측할 수 없습니다. 모든 변수 그룹에서 변수에 다른 이름을 사용하는지 확인합니다.

스크립트에서 변수 정의 및 수정

스크립트에서 변수를 정의하거나 수정하려면 로깅 명령을 사용합니다 task.setvariable . 업데이트된 변수 값은 실행 중인 작업으로 범위가 지정되며 작업 또는 스테이지 간에 흐르지 않습니다. 변수 이름은 대문자로 변환되고 문자 "." 및 "는 "_"로 바뀝니다.

예를 들어 Agent.WorkFolderAGENT_WORKFOLDER이 됩니다. Windows에서 이 형식 %AGENT_WORKFOLDER% 또는 $env:AGENT_WORKFOLDER.에 액세스합니다. Linux 및 macOS에서는 $AGENT_WORKFOLDER.

다음에서 스크립트를 실행할 수 있습니다.

Batch 스크립트

sauce 변수 및 secret.Sauce 변수 설정

@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic

변수 읽기

인수

"$(sauce)" "$(secret.Sauce)"

스크립트

@echo off
set sauceArgument=%~1
set secretSauceArgument=%~2
@echo No problem reading %sauceArgument% or %SAUCE%
@echo But I cannot read %SECRET_SAUCE%
@echo But I can read %secretSauceArgument% (but the log is redacted so I do not spoil
     the secret)

변수를 읽는 콘솔 출력:

No problem reading crushed tomatoes or crushed tomatoes
But I cannot read 
But I can read ******** (but the log is redacted so I do not spoil the secret)