다음을 통해 공유


클래식 릴리스 파이프라인에서 변수 사용

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.ReleaseDirectorySystem.DefaultWorkingDirectory와 동일함.

예: C:\agent\_work\r1\a
System.DefaultWorkingDirectory 릴리스 배포 중에 파이프라인이 아티팩트를 다운로드하는 디렉터리입니다. 에이전트에 아티팩트가 다운로드되어야 하는 경우 파이프라인은 모든 배포 전에 디렉터리를 지웁니다. 같은 Agent.ReleaseDirectorySystem.ArtifactsDirectory.

예: C:\agent\_work\r1\a
System.WorkFolder 파이프라인이 모든 빌드 또는 릴리스에 대한 하위 폴더를 만드는 이 에이전트의 작업 디렉터리입니다. Agent.RootDirectoryAgent.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.ArtifactsDirectorySystem.DefaultWorkingDirectory와 동일합니다.

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

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

예: C:\agent\_work
에이전트 배포 그룹 ID 에이전트가 등록하는 배포 그룹의 ID입니다. 이 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
젠킨스: 20170112.1
TFVC: Changeset 3
Git: 38629c964
Github: 38629c964
Release.Artifacts.{alias}.BuildId 빌드 식별자입니다. 예제:

Azure Pipelines: 130
젠킨스: 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
Azure DevOps Services: 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
빌드.소스브랜치 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 바뀝니다.

인라인 PowerShell 스크립트에서 기본 변수를 사용하는 방법을 표시하는 스크린샷

사용자 지정 변수

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

  • 변수 그룹: 변수 그룹을 사용하여 프로젝트의 모든 정의에서 값을 공유합니다. 이 방법은 프로젝트 내의 정의, 단계 및 작업 전체에서 동일한 값을 사용하고 단일 위치에서 관리하려는 경우에 유용합니다. 파이프라인 라이브러리에서 변수 그룹을 정의하고 관리합니다>.

  • 릴리스 파이프라인 변수: 릴리스 파이프라인 변수를 사용하여 릴리스 파이프라인 내의 모든 단계에서 값을 공유합니다. 이 방법은 단일 위치에서 업데이트할 수 있는 기능으로 단계 및 작업 간에 일관된 값이 필요한 시나리오에 적합합니다. 릴리스 파이프라인의 변수 탭에서 이러한 변수를 정의하고 관리합니다 . 파이프라인 변수 페이지에서 변수를 추가할 때 범위 드롭다운 목록을 릴리스설정합니다.

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

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

  • 값을 복제하지 않도록 하여 모든 항목을 한 번의 변경으로 쉽게 업데이트할 수 있습니다.

  • 중요한 값이 사용자가 보거나 수정할 수 없도록 하여 중요한 값을 보호합니다. 변수를 보안(비밀)으로 표시하려면 변수 옆에 있는 아이콘을 선택합니다.

    중요한

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

참고

사용자 지정 변수를 만들면 표준 변수를 덮어쓸 수 있습니다. 예를 들어 Windows 에이전트에서 사용자 지정 경로 변수를 정의하는 경우 $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)

모든 변수의 현재 값 보기

  1. 파이프라인>릴리스를 선택한 다음, 릴리스 파이프라인을 선택합니다.

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

    작업 초기화 단계를 표시하는 스크린샷

  3. 이 단계에서는 로그를 엽니다. 아래로 스크롤하여 에이전트가 이 작업에 사용하는 값을 확인합니다.

    에이전트에서 사용하는 변수를 표시하는 스크린샷.

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

디버그 모드에서 릴리스를 실행하면 릴리스 실행 중에 추가 정보를 표시하여 문제를 진단하고 해결하는 데 도움이 될 수 있습니다. 전체 릴리스 또는 특정 릴리스 단계의 작업에 대한 디버그 모드를 설정할 수 있습니다.

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

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

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

Azure Resource Manager 서비스 연결과 관련된 오류가 발생하는 경우 자세한 내용은 방법: Azure Resource Manager 서비스 연결 문제 해결 을 참조하세요.