클래식 릴리스 파이프라인에서 변수 사용
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 바뀝니다.
사용자 지정 변수
사용자 지정 변수는 다양한 범위에서 정의할 수 있습니다.
변수 그룹: 변수 그룹을 사용하여 프로젝트의 모든 정의에서 값을 공유합니다. 이는 프로젝트 내의 정의, 단계 및 작업 전체에서 동일한 값을 사용하고 단일 위치에서 관리하려는 경우에 유용합니다. 파이프라인 라이브러리에서 변수 그룹을 정의하고 관리합니다>.
릴리스 파이프라인 변수: 릴리스 파이프라인 변수를 사용하여 릴리스 파이프라인 내의 모든 단계에서 값을 공유합니다. 이는 단일 위치에서 업데이트할 수 있는 기능을 사용하여 단계 및 작업 간에 일관된 값이 필요한 시나리오에 적합합니다. 릴리스 파이프라인의 변수 탭에서 이러한 변수를 정의하고 관리합니다 . 파이프라인 변수 페이지에서 변수를 추가할 때 범위 드롭다운 목록을 릴리스로 설정합니다.
단계 변수: 스테이지 변수를 사용하여 릴리스 파이프라인의 특정 단계 내에서 값을 공유합니다. 스테이지마다 다르지만 스테이지 내의 모든 작업에서 일관된 값에 유용합니다. 릴리스 파이프라인의 변수 탭에서 이러한 변수를 정의하고 관리합니다 . 파이프라인 변수 페이지에서 변수를 추가할 때 범위 드롭다운 목록을 적절한 환경으로 설정합니다.
프로젝트, 릴리스 파이프라인 및 스테이지 수준에서 사용자 지정 변수를 사용하면 다음을 수행할 수 있습니다.
값을 복제하지 않도록 하여 모든 항목을 한 번의 변경으로 쉽게 업데이트할 수 있습니다.
중요한 값이 사용자가 보거나 수정할 수 없도록 하여 중요한 값을 보호합니다. 변수를 보안(비밀)으로 표시하려면 변수 옆에 있는 아이콘을 선택합니다.
Important
숨겨진 변수(비밀)의 값은 서버에 안전하게 저장되며 사용자가 저장한 후에는 볼 수 없습니다. 배포하는 동안 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
.
팁
다음에서 스크립트를 실행할 수 있습니다.
- 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)
모든 변수의 현재 값 보기
파이프라인 릴리스를> 선택한 다음 릴리스 파이프라인을 선택합니다.
릴리스에 대한 요약 보기를 열고 관심 있는 단계를 선택합니다. 단계 목록에서 작업 초기화를 선택합니다.
그러면 이 단계의 로그가 열립니다. 아래로 스크롤하여 에이전트가 이 작업에 사용하는 값을 확인합니다.
디버그 모드에서 릴리스 실행
디버그 모드에서 릴리스를 실행하면 릴리스 실행 중에 추가 정보를 표시하여 문제 또는 오류를 진단하고 해결하는 데 도움이 될 수 있습니다. 전체 릴리스 또는 특정 릴리스 단계 내의 작업에만 디버그 모드를 사용하도록 설정할 수 있습니다.
전체 릴리스에 디버그 모드를 사용하도록 설정하려면 값
true
이 포함된System.Debug
변수를 릴리스 파이프라인의 변수 탭에 추가합니다.특정 스테이지에 디버그 모드를 사용하도록 설정하려면 스테이지의 바로 가기 메뉴에서 스테이지 구성 대화 상자를 열고 변수 탭에 값
true
이 포함된System.Debug
변수를 추가합니다.또는 값이 포함된 변수
System.Debug
가 포함된 변수 그룹을 만들고 이 변수 그룹을 릴리스 파이프라인에 연결true
합니다.
팁
Azure ARM 서비스 연결과 관련된 오류가 발생하는 경우 자세한 내용은 방법: Azure Resource Manager 서비스 연결 문제 해결을 참조하세요.