클래식 릴리스 및 아티팩트 변수
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 스크립트에서 별칭이 ASPNET4.CI 아티팩트 원본에 대한 아티팩트 변수 Release.Artifacts.{Artifact alias}.DefinitionName
값을 인쇄하려면 사용합니다$env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME
.
아티팩트 원본 별칭 ASPNET4.CI
의 원래 이름은 .로 바뀝 ASPNET4_CI
니다.
모든 변수의 현재 값 보기
릴리스에 대한 요약의 파이프라인 보기를 열고 관심 있는 단계를 선택합니다. 단계 목록에서 작업 초기화를 선택합니다.
그러면 이 단계의 로그가 열립니다. 아래로 스크롤하여 에이전트가 이 작업에 사용하는 값을 확인합니다.
디버그 모드에서 릴리스 실행
릴리스가 실행될 때 전체 릴리스 또는 개별 릴리스 단계의 작업만 디버그 모드로 실행하여 로그 파일에 추가 정보를 표시합니다. 이렇게 하면 문제 및 실패를 해결하는 데 도움이 될 수 있습니다.
전체 릴리스에 대한 디버그 모드를 시작하려면 값
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.WorkFolder
은 AGENT_WORKFOLDER
이 됩니다.
Windows에서 이 형식 %AGENT_WORKFOLDER%
또는 $env:AGENT_WORKFOLDER
.에 액세스합니다.
Linux 및 macOS에서는 $AGENT_WORKFOLDER
.
팁
다음에서 스크립트를 실행할 수 있습니다.
- Batch 스크립트 태스크 또는 PowerShell 스크립트 태스크를 사용하는 Windows 에이전트입니다.
- 셸 스크립트 작업을 사용하는 macOS 또는 Linux 에이전트입니다.
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)
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기