Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
클래식 릴리스 파이프라인에서 변수를 사용하는 것은 파이프라인 전체에서 데이터를 교환하고 전송하는 편리한 방법입니다. 각 변수는 문자열로 저장되며 해당 값은 파이프라인 실행 간에 변경될 수 있습니다.
템플릿 구문 분석 시간에만 사용할 수 있는 런타임 매개 변수와 달리 클래식 릴리스 파이프라인의 변수는 전체 배포 프로세스에서 액세스할 수 있습니다.
클래식 릴리스 파이프라인의 각 단계에서 애플리케이션을 배포하는 작업을 설정하는 경우 변수를 통해 다음을 수행할 수 있습니다.
사용자 지정 간소화: 제네릭 배포 파이프라인을 한 번 정의하고 여러 단계에 맞게 쉽게 조정합니다. 예를 들어 변수를 사용하여 웹 배포의 연결 문자열 나타내고 각 단계에 대해 필요에 따라 값을 조정합니다. 이러한 변수를 사용자 지정 변수라고 합니다.
컨텍스트 정보 활용: 단계, 아티팩트 또는 배포를 실행하는 에이전트와 같은 릴리스 컨텍스트에 대한 세부 정보에 액세스합니다. 예를 들어 스크립트를 다운로드하려면 빌드 위치가 필요하거나 에이전트의 작업 디렉터리가 임시 파일을 만들어야 할 수 있습니다. 이러한 변수를 기본 변수라고 합니다.
참고
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 |
릴리스 변수
| 변수 이름 | 설명 |
|---|---|
| 릴리스.시도번호 | 이 릴리스가 이 단계에서 배포된 횟수입니다. 예: 1 |
| 릴리스.정의환경ID | 해당 릴리스 파이프라인에 있는 단계의 ID입니다. 예: 1 |
| Release.DefinitionId | 현재 릴리스가 속한 릴리스 파이프라인의 ID입니다. 예: 1 |
| Release.DefinitionName | 현재 릴리스가 속한 릴리스 파이프라인의 이름입니다. 예: fabrikam-cd |
| 배포.요청됨 | 현재 진행 중인 배포를 트리거(시작)한 ID의 표시 이름입니다. 예: Mateo Escobedo |
| Release.Deployment.RequestedForEmail | 현재 진행 중인 배포를 트리거(시작)한 ID의 이메일 주소입니다. 예: mateo@fabrikam.com |
| 릴리스.배포.요청자ID | 현재 진행 중인 배포를 트리거(시작)한 ID의 ID입니다. 예: 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
| Release.DeploymentID | 배포의 ID입니다. 작업당 고유합니다. 예: 254 |
| Release.DeployPhaseID | 배포가 실행되는 단계의 ID입니다. 예: 127 |
| Release.EnvironmentId | 배포가 현재 진행 중인 릴리스의 스테이지 인스턴스 ID입니다. 예: 276 |
| 릴리스.환경이름 | 배포가 현재 진행 중인 단계의 이름입니다. 예: Dev |
| Release.EnvironmentUri | 배포가 현재 진행 중인 릴리스의 스테이지 인스턴스 URI입니다. 예: vstfs://ReleaseManagement/Environment/276 |
| Release.Environments.{stage-name}.status | 단계의 배포 상태입니다. 예: InProgress |
| 릴리스.기본_아티팩트_소스_별칭 | 기본 아티팩트 원본의 별칭입니다. 예: fabrikam\_web |
| 릴리스 이유 | 배포의 이유입니다. 지원되는 값은 다음과 같습니다.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 |
| 릴리즈.요청대상 | 릴리스를 트리거한 사용자 신원의 표시 이름입니다. 예: Mateo Escobedo |
| 릴리스.이메일을 위한 요청 | 릴리스를 트리거한 ID의 이메일 주소입니다. 예: mateo@fabrikam.com |
| 릴리스.요청자ID | 릴리스를 트리거한 식별자의 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 |
| 에이전트.버전 | 에이전트 소프트웨어의 버전입니다. 예: 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 |
| 에이전트 배포 그룹 ID | 에이전트가 등록하는 배포 그룹의 ID입니다. 이 ID는 배포 그룹 작업에서만 사용할 수 있습니다. 예: 1 |
아티팩트 변수 해제
릴리스에서 참조하는 각 아티팩트마다 다음 아티팩트 변수를 사용합니다. 모든 변수가 모든 아티팩트 형식에 적용되는 것은 아닙니다. 다음 표에서는 기본 아티팩트 변수를 나열하고 아티팩트 형식을 기반으로 해당 값의 예를 제공합니다. 예제가 비어 있으면 해당 아티팩트 형식에 변수를 적용할 수 없음을 나타냅니다.
{alias} 자리 표시자를 아티팩트 원본 별칭에 대해 지정한 값으로 바꾸거나 릴리스 파이프라인에 대해 생성된 기본값으로 바꿉니다.
| 변수 이름 | 설명 |
|---|---|
| Release.Artifacts. {alias}. DefinitionId | 빌드 파이프라인 또는 리포지토리의 식별자입니다. 예제: Azure Pipelines: 1Github: fabrikam/asp |
| Release.Artifacts. {alias}. DefinitionName | 빌드 파이프라인 또는 리포지토리의 이름입니다. 예제: Azure Pipelines: fabrikam-ciTFVC: $/fabrikamGit: fabrikamGithub: fabrikam/asp (main) |
| Release.Artifacts. {alias}. BuildNumber | 빌드 번호 또는 커밋 식별자입니다. 예제: Azure Pipelines: 20170112.1젠킨스: 20170112.1TFVC: Changeset 3Git: 38629c964Github: 38629c964 |
| Release.Artifacts.{alias}.BuildId | 빌드 식별자입니다. 예제: Azure Pipelines: 130젠킨스: 130Github: 38629c964d21fe405ef830b7d0220966b82c9e11 |
| Release.Artifacts.{alias}.BuildURI | 빌드의 URL입니다. 예제: Azure Pipelines: vstfs://build-release/Build/130Github: 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젠킨스: JenkinsAzure DevOps Services: TFVCGit: GitGithub: 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 |
| 빌드.소스브랜치 | 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 |
기본 변수 사용
두 가지 방법으로 기본 변수를 사용할 수 있습니다. 즉, 릴리스 파이프라인 또는 스크립트 내의 작업에 대한 매개 변수로 사용할 수 있습니다.
기본 변수를 작업에 대한 입력으로 직접 사용합니다. 예를 들어 별칭으로 Release.Artifacts.{Artifact alias}.DefinitionName 있는 아티팩트용 PowerShell 작업에 인수로 전달 하려면 다음을 사용합니다.$(Release.Artifacts.ASPNET4.CI.DefinitionName)
기본 변수를 스크립트에서 사용하려면, 기본 변수 이름의 .을 _로 변경하세요. 예를 들어, PowerShell 스크립트에서 별칭이 ASPNET4.CI인 아티팩트의 Release.Artifacts.{Artifact alias}.DefinitionName 값을 출력하려면 명령을 사용하십시오. 원래 별칭인 ASPNET4.CIASPNET4_CI 바뀝니다.
사용자 지정 변수
다양한 범위에서 사용자 지정 변수를 정의할 수 있습니다.
변수 그룹: 변수 그룹을 사용하여 프로젝트의 모든 정의에서 값을 공유합니다. 이 방법은 프로젝트 내의 정의, 단계 및 작업 전체에서 동일한 값을 사용하고 단일 위치에서 관리하려는 경우에 유용합니다. 파이프라인 라이브러리에서 변수 그룹을 정의하고 관리합니다>.
릴리스 파이프라인 변수: 릴리스 파이프라인 변수를 사용하여 릴리스 파이프라인 내의 모든 단계에서 값을 공유합니다. 이 방법은 단일 위치에서 업데이트할 수 있는 기능으로 단계 및 작업 간에 일관된 값이 필요한 시나리오에 적합합니다. 릴리스 파이프라인의 변수 탭에서 이러한 변수를 정의하고 관리합니다 . 파이프라인 변수 페이지에서 변수를 추가할 때 범위 드롭다운 목록을 릴리스로 설정합니다.
단계 변수: 스테이지 변수를 사용하여 릴리스 파이프라인의 특정 단계 내에서 값을 공유합니다. 이 방법은 스테이지마다 다르지만 스테이지 내의 모든 작업에서 일관된 값에 유용합니다. 릴리스 파이프라인의 변수 탭에서 이러한 변수를 정의하고 관리합니다 . 파이프라인 변수 페이지에서 변수를 추가할 때 범위 드롭다운 목록을 적절한 환경으로 설정합니다.
프로젝트, 릴리스 파이프라인 및 스테이지 수준에서 사용자 지정 변수를 사용하여 다음을 수행할 수 있습니다.
값을 복제하지 않도록 하여 모든 항목을 한 번의 변경으로 쉽게 업데이트할 수 있습니다.
중요한 값이 사용자가 보거나 수정할 수 없도록 하여 중요한 값을 보호합니다. 변수를 보안(비밀)으로 표시하려면 변수 옆에 있는
아이콘을 선택합니다.중요한
숨겨진 변수(비밀)의 값은 서버에 안전하게 저장되며 사용자가 저장한 후에는 볼 수 없습니다. 배포하는 동안 Azure Pipelines는 태스크가 이러한 값을 참조하고 보안 HTTPS 채널을 통해 에이전트에 전달할 때 이러한 값을 해독합니다.
참고
사용자 지정 변수를 만들면 표준 변수를 덮어쓸 수 있습니다. 예를 들어 Windows 에이전트에서 사용자 지정 경로 변수를 정의하는 경우 $env:Path 변수를 덮어쓰고 PowerShell이 제대로 실행되지 않을 수 있습니다.
사용자 지정 변수 사용
작업에서 사용자 지정 변수를 사용하려면 변수 이름을 괄호로 묶고 앞에 문자로 $ 묶습니다. 예를 들어 adminUserName이라는 변수가 있는 경우 현재 값을 작업에 로 $(adminUserName)삽입합니다.
참고
동일한 범위(예: 작업 또는 단계)의 파이프라인에 연결된 여러 그룹의 변수가 충돌하여 예측할 수 없는 결과를 초래할 수 있습니다. 이 문제를 방지하려면 모든 변수 그룹의 변수에 고유한 이름이 있는지 확인합니다.
스크립트에서 변수 정의 및 수정
스크립트에서 변수를 정의하거나 수정하려면 로깅 명령을 사용합니다 task.setvariable . 업데이트된 변수 값은 실행 중인 작업으로 범위가 지정되며 작업 또는 단계에서 유지되지 않습니다. 변수 이름은 대문자로 변환되고 "." 및 "는 "_"로 바뀝니다.
예를 들어 Agent.WorkFolder은 AGENT_WORKFOLDER이 됩니다.
- Windows에서 이 변수에
%AGENT_WORKFOLDER%또는$env:AGENT_WORKFOLDER로 액세스합니다. - Linux 및 macOS에서
$AGENT_WORKFOLDER를 사용하세요.
팁
다음에서 스크립트를 실행할 수 있습니다.
- Windows 에이전트는 Batch 스크립트 태스크 또는 PowerShell 태스크를 사용합니다.
- 셸 스크립트 작업을 사용하는 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)
모든 변수의 현재 값 보기
파이프라인>릴리스를 선택한 다음, 릴리스 파이프라인을 선택합니다.
릴리스에 대한 요약 보기를 열고 관심 있는 단계를 선택합니다. 단계 목록에서 작업 초기화를 선택합니다.
이 단계에서는 로그를 엽니다. 아래로 스크롤하여 에이전트가 이 작업에 사용하는 값을 확인합니다.
디버그 모드에서 릴리스 실행
디버그 모드에서 릴리스를 실행하면 릴리스 실행 중에 추가 정보를 표시하여 문제를 진단하고 해결하는 데 도움이 될 수 있습니다. 전체 릴리스 또는 특정 릴리스 단계의 작업에 대한 디버그 모드를 설정할 수 있습니다.
전체 릴리스에 대한 디버그 모드를 설정하려면 해당 값
System.Debug이 포함된true변수를 릴리스 파이프라인의 변수 탭에 추가합니다.특정 스테이지에 대한 디버그 모드를 켜려면 스테이지의 바로 가기 메뉴에서 스테이지 구성 대화 상자를 열고 값
System.Debug이 포함된true변수를 변수 탭에 추가합니다.
팁
Azure Resource Manager 서비스 연결과 관련된 오류가 발생하는 경우 자세한 내용은 방법: Azure Resource Manager 서비스 연결 문제 해결 을 참조하세요.