다음을 통해 공유


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

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

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

템플릿 구문 분석 시간에만 사용할 수 있는 런타임 매개 변수와 달리 클래식 릴리스 파이프라인의 변수는 전체 배포 프로세스에서 액세스할 수 있습니다.

클래식 릴리스 파이프라인의 각 단계에서 애플리케이션을 배포하는 작업을 설정할 때 변수가 도움이 될 수 있습니다.

  • 사용자 지정 간소화: 제네릭 배포 파이프라인을 한 번 정의하고 여러 단계에 맞게 쉽게 조정합니다. 예를 들어 변수를 사용하여 웹 배포의 연결 문자열 나타내고 각 단계에 대해 필요에 따라 값을 조정합니다. 이를 사용자 지정 변수라고 합니다.

  • 컨텍스트 정보 활용: 단계, 아티팩트 또는 배포를 실행하는 에이전트와 같은 릴리스 컨텍스트에 대한 세부 정보에 액세스합니다. 예를 들어 스크립트를 다운로드하려면 빌드 위치가 필요하거나 에이전트의 작업 디렉터리가 임시 파일을 만들어야 할 수 있습니다. 이를 기본 변수라고 합니다.

참고 항목

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.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}.status 단계의 배포 상태입니다.

예: 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의 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
젠킨스: 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}. 형 Build.Examples와 같은 아티팩트 원본의 형식

Azure Pipelines: Build
젠킨스: Jenkins
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

기본 변수 사용

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

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

기본 변수를 인수로 사용하는 방법을 표시하는 스크린샷

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

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

사용자 지정 변수

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

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

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

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

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

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

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

    Important

    숨겨진 변수(비밀)의 값은 서버에 안전하게 저장되며 사용자가 저장한 후에는 볼 수 없습니다. 배포하는 동안 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. 그러면 이 단계의 로그가 열립니다. 아래로 스크롤하여 에이전트가 이 작업에 사용하는 값을 확인합니다.

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

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

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

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

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

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

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