ACR 작업 참조: YAML
ACR 작업의 다단계 작업 정의는 컨테이너 빌드, 테스트 및 패치에 중점을 둔 컨테이너 중심의 컴퓨팅 기본 형식을 제공합니다. 이 문서에서는 다단계 작업을 정의하는 YAML 파일의 명령, 매개 변수, 속성 및 구문에 대해 설명합니다.
이 문서에는 ACR 작업에 대한 다단계 작업 YAML 파일을 만들기 위한 참조가 포함되어 있습니다. ACR 작업을 소개하려면 ACR 작업 개요를 참조하세요.
acr-task.yaml 파일 형식
ACR 작업은 표준 YAML 구문에서 다단계 작업 선언을 지원합니다. YAML 파일에서 작업 단계를 정의합니다. 그런 다음 파일을 az acr run명령에 전달하여 수동으로 작업을 실행할 수 있습니다. 또는 파일을 사용하여 Git 커밋, 기본 이미지 업데이트 또는 일정에 따라 자동으로 트리거되는 az acr task create로 작업을 생성합니다. 이 문서에서는 acr-task.yaml
을 단계가 포함된 파일로 참조하지만, ACR 작업은 지원되는 확장명을 가진 유효한 파일 이름을 모두 지원합니다.
최상위 기본 acr-task.yaml
형식은 작업 속성, 단계 유형 및 단계 속성입니다.
- 작업 속성은 작업 실행 전체의 모든 단계에 적용됩니다. 다음과 같은 몇 가지 전역 작업 속성이 있습니다.
version
stepTimeout
workingDirectory
- 작업 단계 유형 은 작업에서 수행할 수 있는 작업 유형을 나타냅니다. 세 가지 단계 유형이 있습니다.
build
push
cmd
- 작업 단계 속성 은 개별 단계에 적용되는 매개 변수입니다. 다음과 같은 몇 가지 단계 속성이 있습니다.
startDelay
timeout
when
- ... 그리고 더 많은.
몇 가지 일반적인 단계 속성을 포함하여 acr-task.yaml
파일의 기본 형식은 다음과 같습니다. 사용 가능한 모든 단계 속성 또는 단계 형식 사용에 대한 완전한 표현은 아니지만 기본 파일 형식에 대한 간략한 개요를 제공합니다.
version: # acr-task.yaml format version.
stepTimeout: # Seconds each step may take.
steps: # A collection of image or container actions.
- build: # Equivalent to "docker build," but in a multi-tenant environment
- push: # Push a newly built or retagged image to a registry.
when: # Step property that defines either parallel or dependent step execution.
- cmd: # Executes a container, supports specifying an [ENTRYPOINT] and parameters.
startDelay: # Step property that specifies the number of seconds to wait before starting execution.
지원되는 작업 파일 이름 확장명
ACR 작업에는 .yaml
을 포함하여 몇 가지 파일 이름 확장명이 예약되어 있으며, 작업 파일로 처리됩니다. 다음 목록에 없는 확장은 ACR 작업에서 Dockerfile으로 간주됩니다. .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua
YAML은 현재 ACR 작업에서 지원되는 유일한 파일 형식입니다. 다른 파일 이름 확장명은 향후 지원을 위해 예약되어 있습니다.
샘플 작업 실행
이 문서의 다음 섹션에서 참조되는 몇 가지 샘플 작업 파일이 있습니다. 샘플 작업은 공용 GitHub 리포지토리인 Azure-Samples/acr-tasks에 있습니다. Azure CLI 명령 az acr run을 사용하여 실행할 수 있습니다. 샘플 명령은 다음과 유사합니다.
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
샘플 명령의 형식은 Azure CLI에서 기본 레지스트리를 구성했다고 가정하므로 --registry
매개 변수를 생략합니다. 기본 레지스트리를 구성하려면 키 값 쌍을 허용하는 defaults.acr=REGISTRY_NAME
명령과 함께 set
az config 명령을 사용합니다.
예를 들어, “myregistry”라는 기본 레지스트리를 사용하여 Azure CLI를 구성하려면 다음 명령을 사용합니다.
az config set defaults.acr=myregistry
작업 속성
일반적으로 작업 속성은 acr-task.yaml
파일의 맨 위에 표시되며, 작업 단계 실행 전체에 적용되는 전역 속성입니다. 이러한 전역 속성 중 일부는 개별 단계 내에서 재정의할 수 있습니다.
속성 | Type | 선택 사항 | 설명 | 지원되는 재정의 | Default value |
---|---|---|---|---|---|
version |
string | 예 | ACR 작업 서비스에서 구문 분석한 파일의 acr-task.yaml 버전입니다. ACR 작업은 이전 버전과의 호환성을 유지하기 위해 노력하지만 이 값을 사용하면 ACR 작업이 정의된 버전 내에서 호환성을 유지할 수 있습니다. 지정되지 않은 경우 기본값은 .입니다 v1.0.0 . |
해당 없음 | v1.0.0 |
stepTimeout |
int(초) | 예 | 단계를 실행할 수 있는 최대 시간(초)입니다. stepTimeout 작업에 속성을 지정 하는 경우 모든 단계의 기본 timeout 속성을 설정 합니다. timeout 단계에서 속성이 지정된 경우 태스크에서 제공하는 속성을 재정의 stepTimeout 합니다.작업에 대한 단계 제한 시간 값의 합계는 작업의 실행 timeout 속성 값과 같아야 합니다(예: 명령에 전달 --timeout az acr task create 하여 설정됨). 작업의 실행 timeout 값이 작을수록 우선 순위가 높습니다. |
예 | 600(10분) |
workingDirectory |
string | 예 | 런타임 동안 컨테이너의 작업 디렉터리입니다. 작업에 속성이 지정되면 모든 단계의 기본 workingDirectory 속성을 설정합니다. 단계에서 지정한 경우 태스크에서 제공하는 속성을 재정의합니다. |
예 | c:\workspace Windows 또는 /workspace Linux에서 |
env |
[string, string, ...] | 예 | 작업에 대한 환경 변수를 key=value 정의하는 형식의 문자열 배열입니다. 작업에 속성이 지정되면 모든 단계의 기본 env 속성을 설정합니다. 단계에서 지정한 경우 작업에서 상속된 환경 변수를 재정의합니다. |
예 | None |
secrets |
[secret, secret, ...] | 예 | 비밀 개체의 배열입니다. | 아니요 | None |
networks |
[네트워크, 네트워크, ...] | 예 | 네트워크 개체의 배열입니다. | 아니요 | None |
volumes |
[볼륨, 볼륨, ...] | 예 | 볼륨 개체의 배열입니다. 단계에 탑재할 원본 콘텐츠가 있는 볼륨을 지정합니다. | 아니요 | None |
secret
비밀 개체에는 다음과 같은 속성이 있습니다.
속성 | Type | 선택 사항 | 설명 | 기본값 |
---|---|---|---|---|
id |
string | 아니요 | 비밀의 식별자입니다. | None |
keyvault |
string | 예 | Azure Key Vault 비밀 URL입니다. | None |
clientID |
string | 예 | Azure 리소스에 대한 사용자 할당 관리 ID의 클라이언트 ID입니다. | None |
network
네트워크 개체에는 다음과 같은 속성이 있습니다.
속성 | Type | 선택 사항 | 설명 | 기본값 |
---|---|---|---|---|
name |
string | 아니요 | 네트워크의 이름입니다. | None |
driver |
string | 예 | 네트워크를 관리하는 드라이버입니다. | None |
ipv6 |
bool | 예 | IPv6 네트워킹을 사용할 수 있는지 여부입니다. | false |
skipCreation |
bool | 예 | 네트워크 만들기를 건너뛸지 여부입니다. | false |
isDefault |
bool | 예 | 네트워크가 Azure Container Registry와 함께 제공되는 기본 네트워크인지 여부입니다. | false |
volume
볼륨 개체의 속성은 다음과 같습니다.
속성 | Type | 선택 사항 | 설명 | 기본값 |
---|---|---|---|---|
name |
string | 아니요 | 탑재할 볼륨의 이름입니다. 영숫자 문자 '-', '_'만 포함할 수 있습니다. | None |
secret |
map[string]string | 아니요 | 맵의 각 키는 볼륨에 만들어지고 채워진 파일의 이름입니다. 각 값은 비밀의 문자열 버전입니다. 비밀 값은 Base64로 인코딩되어야 합니다. | None |
작업 단계 유형
ACR 작업은 세 가지 단계 유형을 지원합니다. 각 단계 유형은 각 단계 유형에 대한 섹션에 자세히 설명된 여러 속성을 지원합니다.
단계 유형 | 설명 |
---|---|
build |
익숙한 docker build 구문을 사용하여 컨테이너 이미지를 빌드합니다. |
push |
docker push 새로 빌드되거나 태그가 다시 지정된 이미지를 컨테이너 레지스트리에 실행합니다. Azure Container Registry, 기타 프라이빗 레지스트리 및 공용 Docker Hub가 지원됩니다. |
cmd |
컨테이너에 전달된 매개 변수를 사용하여 컨테이너를 명령으로 실행합니다 [ENTRYPOINT] . 단계 형식은 cmd 동시 컨테이너 실행을 사용하여 단위 및 기능 테스트를 사용하도록 설정하는 , 및 기타 친숙한 docker run 명령 옵션과 같은 env detach 매개 변수를 지원합니다. |
build
컨테이너 이미지를 빌드합니다. 단계 유형은 build
클라우드에서 실행되는 docker build
다중 테넌트 보안 수단을 일류 기본 형식으로 나타냅니다.
구문: 빌드
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
az acr run 명령을 실행하여 docker 버전을 가져옵니다.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
yaml 파일에 환경 변수 DOCKER_BUILDKIT=1
를 추가하여 사용하도록 설정하고 buildkit
사용합니다 secret
buildkit
.
build
단계 형식은 다음 테이블의 매개 변수를 지원합니다. 또한 단계 유형은 build
빌드 시간 변수를 설정하는 것과 같은 --build-arg
Docker 빌드 명령의 모든 빌드 옵션을 지원합니다.
매개 변수 | 설명 | 선택 사항 |
---|---|---|
-t | --image |
빌드된 이미지의 정규화된 image:tag 를 정의합니다.이미지가 기능 테스트와 같은 내부 작업 유효성 검사에 사용될 수 있으므로 일부 이미지가 레지스트리에 필요한 push 것은 아닙니다. 그러나 작업 실행 내에서 이미지를 인스턴스화하려면 이미지에 참조할 이름이 필요합니다.달리 az acr build ACR 작업을 실행해도 기본 푸시 동작은 제공되지 않습니다. ACR 작업을 사용하면 기본 시나리오에서 이미지를 빌드, 유효성 검사, 푸시하는 기능을 가정합니다. 빌드된 이미지를 선택적으로 푸시하는 방법은 push를 참조하세요. |
예 |
-f | --file |
docker build 에 전달된 Dockerfile을 지정합니다. 지정하지 않으면 컨텍스트의 루트에 있는 기본 Dockerfile이 가정됩니다. Dockerfile을 지정하려면 컨텍스트의 루트를 기준으로 파일 이름을 전달합니다. |
예 |
context |
에 전달된 docker build 루트 디렉터리입니다. 각 작업의 루트 디렉터리가 공유 workingDirectory로 설정되고 연결된 Git 복제 디렉터리의 루트가 포함됩니다. |
아니요 |
속성: build
단계 형식은 build
다음 속성을 지원합니다. 이 문서의 작업 단계 속성 섹션에서 해당 속성의 세부 정보를 확인할 수 있습니다.
속성 | Type | Required |
---|---|---|
detach |
bool | 선택 사항 |
disableWorkingDirectoryOverride |
bool | 선택 사항 |
entryPoint |
string | 선택 사항 |
env |
[string, string, ...] | 선택 사항 |
expose |
[string, string, ...] | 선택 사항 |
id |
string | 선택 사항 |
ignoreErrors |
bool | 선택 사항 |
isolation |
string | 선택 사항 |
keep |
bool | 선택 사항 |
network |
개체 | 선택 사항 |
ports |
[string, string, ...] | 선택 사항 |
pull |
bool | 선택 사항 |
repeat |
int | 선택 사항 |
retries |
int | 선택 사항 |
retryDelay |
int(초) | 선택 사항 |
secret |
개체 | 선택 사항 |
startDelay |
int(초) | 선택 사항 |
timeout |
int(초) | 선택 사항 |
volumeMount |
개체 | 선택 사항 |
when |
[string, string, ...] | 선택 사항 |
workingDirectory |
string | 선택 사항 |
예제: 빌드
빌드 이미지 - 루트의 컨텍스트
az acr run -f build-hello-world.yaml https://github.com/AzureCR/acr-tasks-sample.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile .
이미지 빌드 - 하위 디렉터리의 컨텍스트
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
ACR 작업에서 전달되는 동적 변수
ACR(Azure Container Registry) 작업을 사용할 때 명령과 함께 az acr task run
플래그를 사용하여 --set
작업 정의를 변경하지 않고 빌드 프로세스에 다른 값을 전달해야 할 수 있습니다.
예: 런타임에 이미지 태그 설정
이미지 태그에 대한 자리 표시자가 있는 acr-task.yml
파일에 ACR 작업이 정의되어 있다고 가정합니다.
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
다음 Azure CLI 명령을 사용하여 태스크를 트리거하고 런타임에 변수 v2
를 설정할 tag
수 있습니다.
az acr task run --registry myregistry --name mytask --set tag=v2
이 명령은 명명된 mytask
ACR 작업을 시작하고 태그를 v2
사용하여 이미지를 빌드하고 파일의 자리 표시자를 재정의 acr-task.yml
합니다.
이 방법을 사용하면 CI/CD 파이프라인에서 사용자 지정할 수 있으므로 작업 정의를 변경하지 않고도 현재 요구 사항에 따라 매개 변수를 동적으로 조정할 수 있습니다.
push
하나 이상의 빌드 또는 다시 태그가 지정된 이미지를 컨테이너 레지스트리에 푸시합니다. Azure Container Registry와 같은 프라이빗 레지스트리 또는 공용 Docker 허브로 푸시를 지원합니다.
구문: push
단계 유형은 push
이미지 컬렉션을 지원합니다. YAML 컬렉션 구문은 인라인 및 중첩 형식을 지원합니다. 단일 이미지 푸시는 일반적으로 인라인 구문을 사용하여 표시됩니다.
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
가독성을 높이려면 여러 이미지를 푸시할 때 중첩 구문을 사용합니다.
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
속성: push
단계 형식은 push
다음 속성을 지원합니다. 이 문서의 작업 단계 속성 섹션에서 해당 속성의 세부 정보를 확인할 수 있습니다.
속성 | 형식 | Required |
---|---|---|
env |
[string, string, ...] | 선택 사항 |
id |
string | 선택 사항 |
ignoreErrors |
bool | 선택 사항 |
startDelay |
int(초) | 선택 사항 |
timeout |
int(초) | 선택 사항 |
when |
[string, string, ...] | 선택 사항 |
예: push
여러 이미지 푸시
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
빌드, 푸시 및 실행
az acr run -f build-run-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
- cmd: $Registry/hello-world:$ID
cmd
cmd
단계 유형은 컨테이너를 실행합니다.
구문: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
속성: cmd
cmd
단계 유형은 다음 속성을 지원합니다.
속성 | 형식 | Required |
---|---|---|
detach |
bool | 선택 사항 |
disableWorkingDirectoryOverride |
bool | 선택 사항 |
entryPoint |
string | 선택 사항 |
env |
[string, string, ...] | 선택 사항 |
expose |
[string, string, ...] | 선택 사항 |
id |
string | 선택 사항 |
ignoreErrors |
bool | 선택 사항 |
isolation |
string | 선택 사항 |
keep |
bool | 선택 사항 |
network |
개체 | 선택 사항 |
ports |
[string, string, ...] | 선택 사항 |
pull |
bool | 선택 사항 |
repeat |
int | 선택 사항 |
retries |
int | 선택 사항 |
retryDelay |
int(초) | 선택 사항 |
secret |
개체 | 선택 사항 |
startDelay |
int(초) | 선택 사항 |
timeout |
int(초) | 선택 사항 |
volumeMount |
개체 | 선택 사항 |
when |
[string, string, ...] | 선택 사항 |
workingDirectory |
string | 선택 사항 |
이 문서의 작업 단계 속성 섹션에서 이러한 속성 에 대한 세부 정보를 찾을 수 있습니다.
예: cmd
hello-world 이미지 실행
이 명령은 Docker Hub에서 hello-world.yaml
hello-world 이미지를 참조하는 작업 파일을 실행합니다.
az acr run -f hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: mcr.microsoft.com/hello-world
bash 이미지 실행 및 에코 "hello world"
이 명령은 Docker 허브의 bash 이미지를 참조하는 bash-echo.yaml
작업 파일을 실행합니다.
az acr run -f bash-echo.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo hello world
특정 bash 이미지 태그 실행
특정 이미지 버전을 실행하려면 cmd
에 태그를 지정합니다.
이 명령은 Docker Hub에서 bash-echo-3.yaml
bash:3.0 이미지를 참조하는 작업 파일을 실행합니다.
az acr run -f bash-echo-3.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash:3.0 echo hello world
사용자 지정 이미지 실행
단계 형식은 cmd
표준 docker run
형식을 사용하여 이미지를 참조합니다. 레지스트리가 앞에 추가되지 않은 이미지는 docker.io 시작된 것으로 간주됩니다. 이전 예제는 다음과 같게 표시될 수 있습니다.
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
표준 docker run
이미지 참조 규칙을 cmd
사용하여 모든 프라이빗 레지스트리 또는 공용 Docker 허브에서 이미지를 실행할 수 있습니다. ACR 작업을 실행 중인 동일한 레지스트리에서 이미지를 참조하는 경우에는 레지스트리 자격 증명을 지정할 필요가 없습니다.
Azure Container Registry의 이미지를 실행합니다. 다음 예제에서는
myregistry
이라는 이름의 레지스트리와 사용자 지정 이미지myimage:mytag
를 가지고 있다고 가정합니다.version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
Run 변수 또는 별칭을 사용하여 레지스트리 참조 일반화
파일에서
acr-task.yaml
레지스트리 이름을 하드 코딩하는 대신 실행 변수 또는 별칭을 사용하여 레지스트리 이름을 더 이식 가능하게 만들 수 있습니다.Run.Registry
변수 또는$Registry
별칭은 런타임 시 작업을 실행 중인 레지스트리 이름으로 확장됩니다.예를 들어 모든 Azure 컨테이너 레지스트리에서 작동하도록 이전 작업을 일반화하려면 이미지 이름에서 $Registry 변수를 참조합니다:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
비밀 볼륨에 액세스
volumes
속성을 사용하여 작업의 build
, cmd
단계에 볼륨 및 해당 비밀 콘텐츠를 지정할 수 있습니다. 각 단계에서 선택 사항인 volumeMounts
속성은 해당 단계에서 컨테이너에 탑재할 볼륨 및 해당 컨테이너 경로를 나열합니다. 비밀은 각 볼륨의 탑재 경로에서 파일로 제공됩니다.
작업을 실행하고 한 단계에 두 개의 비밀을 탑재합니다. 하나는 키 자격 증명 모음에 저장되고 다른 하나는 명령줄에 지정됩니다.
az acr run -f mounts-secrets.yaml --set-secret mysecret=abcdefg123456 https://github.com/Azure-Samples/acr-tasks.git
# This template demonstrates mounting a custom volume into a container at a CMD step
secrets:
- id: sampleSecret
keyvault: https://myacbvault2.vault.azure.net/secrets/SampleSecret # Replace with valid keyvault with access
volumes:
- name: mysecrets
secret:
mysecret1: {{.Secrets.sampleSecret | b64enc}}
mysecret2: {{.Values.mysecret | b64enc}}
steps:
- cmd: bash cat /run/test/mysecret1 /run/test/mysecret2
volumeMounts:
- name: mysecrets
mountPath: /run/test
작업 단계 속성
각 단계 유형은 해당 유형에 적합한 몇 가지 속성을 지원합니다. 다음 표에서는 사용 가능한 모든 단계 속성을 정의합니다. 모든 단계 형식이 모든 속성을 지원하는 것은 아닙니다. 각 단계 유형에 사용할 수 있는 속성은 cmd, 빌드 및 푸시 단계 형식 참조 섹션을 참조하세요.
속성 | Type | 선택 사항 | 설명 | 기본값 |
---|---|---|---|---|
detach |
bool | 예 | 실행할 때 컨테이너를 분리해야 하는지 여부입니다. | false |
disableWorkingDirectoryOverride |
bool | 예 | 재정의 기능을 사용하지 않도록 설정할 workingDirectory 지 여부입니다. 컨테이너의 작업 디렉터리를 완벽하게 제어하려면 이 기능을 함께 workingDirectory 사용합니다. |
false |
entryPoint |
string | 예 | 단계 컨테이너의 [ENTRYPOINT] 을 재정의합니다. |
None |
env |
[string, string, ...] | 예 | 단계의 환경 변수를 key=value 정의하는 형식의 문자열 배열입니다. |
None |
expose |
[string, string, ...] | 예 | 컨테이너에서 노출되는 포트의 배열입니다. | None |
id |
string | 예 | 작업 내의 단계를 고유하게 식별합니다. 작업의 다른 단계에서는 종속성 검사와 when 같은 단계를 id 참조할 수 있습니다.id 실행 중인 컨테이너의 이름이기도 합니다. 태스크의 다른 컨테이너에서 실행되는 프로세스는 DNS 호스트 이름으로 참조 id 하거나 Docker 로그 [id]를 사용하여 액세스할 수 있습니다. |
acb_step_%d %d - YAML 파일에서 단계 하향식의 0부터 시작하는 인덱스입니다. |
ignoreErrors |
bool | 예 | 컨테이너 실행 중의 오류 발생 여부에 관계없이 단계를 성공으로 표시할지 여부입니다. | false |
isolation |
string | 예 | 컨테이너의 격리 수준입니다. | default |
keep |
bool | 예 | 실행 후 단계 컨테이너를 유지할지 여부입니다. | false |
network |
개체 | 예 | 컨테이너가 실행되는 네트워크를 식별합니다. | None |
ports |
[string, string, ...] | 예 | 컨테이너에서 호스트로 게시된 포트 배열입니다. | None |
pull |
bool | 예 | 캐싱 동작을 방지하기 위해 컨테이너를 실행하기 전에 강제로 끌어올지 여부입니다. | false |
privileged |
bool | 예 | 권한 있는 모드에서 컨테이너를 실행할지 여부입니다. | false |
repeat |
int | 예 | 컨테이너 실행을 반복하는 재시도 횟수입니다. | 0 |
retries |
int | 예 | 컨테이너 실행이 실패하는 경우 시도할 재시도 횟수입니다. 다시 시도는 컨테이너의 종료 코드가 0이 아닌 경우에만 시도됩니다. | 0 |
retryDelay |
int(초) | 예 | 컨테이너 실행 재시도 사이의 지연 시간(초)입니다. | 0 |
secret |
개체 | 예 | Azure 리소스에 대한 Azure Key Vault 비밀 또는 관리 ID를 식별합니다. | None |
startDelay |
int(초) | 예 | 컨테이너 실행을 지연하는 시간(초)입니다. | 0 |
timeout |
int(초) | 예 | 종료되기 전에 단계가 실행될 수 있는 최대 시간(초)입니다. | 600 |
when |
[string, string, ...] | 예 | 작업 내의 하나 이상의 다른 단계에 대한 단계의 종속성을 구성합니다. | None |
user |
string | 예 | 컨테이너의 사용자 이름 또는 UID | None |
workingDirectory |
string | 예 | 단계의 작업 디렉터리를 설정합니다. 기본적으로 ACR 작업은 루트 디렉터리를 작업 디렉터리로 만듭니다. 그러나 빌드에 여러 단계가 있는 경우 이전 단계에서는 동일한 작업 디렉터리를 지정하여 이후 단계와 아티팩트 공유를 수행할 수 있습니다. | c:\workspace Windows 또는 /workspace Linux에서 |
volumeMount
volumeMount 개체의 속성은 다음과 같습니다.
속성 | Type | 선택 사항 | 설명 | 기본값 |
---|---|---|---|---|
name |
string | 아니요 | 탑재할 볼륨의 이름입니다. volumes 속성의 이름과 정확히 일치해야 합니다. |
None |
mountPath |
string | 아니요 | 컨테이너에 파일을 탑재하는 절대 경로입니다. | None |
예: 작업 단계 속성
예: id
기능 테스트 이미지를 인스턴스화하여 두 개의 이미지를 빌드합니다. 각 단계는 작업의 다른 단계가 해당 속성에서 참조하는 고유한 id
단계로 식별됩니다 when
.
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
예: 시기
이 속성은 when
작업 내의 다른 단계에 대한 단계의 종속성을 지정합니다. 다음 두 매개 변수 값을 지원합니다.
when: ["-"]
- 다른 단계에 대한 종속성이 없음을 나타냅니다. 지정하는when: ["-"]
단계가 즉시 실행을 시작하고 동시 단계 실행을 사용하도록 설정합니다.when: ["id1", "id2"]
- 단계가 "id1" 및id
"id2"인 단계에id
종속되어 있음을 나타냅니다. 이 단계는 "id1" 및 "id2" 단계가 모두 완료될 때까지 실행되지 않습니다.
when
이 지정되지 않은 단계는 acr-task.yaml
파일의 이전 단계 완료에 종속됩니다.
when
을 사용하지 않는 순차 단계 실행:
az acr run -f when-sequential-default.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo one
- cmd: bash echo two
- cmd: bash echo three
다음을 사용하여 순차적 단계 실행 when
:
az acr run -f when-sequential-id.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- id: step1
cmd: bash echo one
- id: step2
cmd: bash echo two
when: ["step1"]
- id: step3
cmd: bash echo three
when: ["step2"]
병렬 이미지 빌드:
az acr run -f when-parallel.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
병렬 이미지 빌드 및 종속 테스트:
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
변수 실행
ACR 작업은 실행할 때 작업 단계에서 사용할 수 있는 기본 변수 집합을 포함합니다. 다음 중 하나인 형식 {{.Run.VariableName}}
VariableName
을 사용하여 이러한 변수에 액세스할 수 있습니다.
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
변수 이름은 일반적으로 자체 설명입니다. 일반적으로 사용되는 변수에 대한 세부 정보는 다음과 같습니다. YAML v1.1.0
버전부터는 대부분의 실행 변수 대신 간략화되고 미리 정의된 작업 별칭을 사용할 수 있습니다. 예를 들어 대신 {{.Run.Registry}}
별칭을 $Registry
사용합니다.
Run.ID
각 실행을 통해 또는 트리거를 통해 az acr run
az acr task create
만든 작업의 실행 기반 실행에는 고유한 ID가 있습니다. ID는 현재 실행 중인 Run을 나타냅니다.
일반적으로 이미지에 고유하게 태그를 지정하는 데 사용됩니다.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
모든 작업 단계에서 액세스할 수 있는 공유 볼륨의 고유 식별자입니다. 볼륨은 Windows 또는 /workspace
Linux에 탑재 c:\workspace
됩니다.
Run.Registry
레지스트리의 정규화된 서버 이름입니다. 일반적으로 태스크가 실행되는 레지스트리를 참조하는 데 사용됩니다.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
컨테이너 레지스트리의 이름입니다. 일반적으로 정규화된 서버 이름이 필요하지 않은 작업 단계에서 사용됩니다(예: 레지스트리에서 Azure CLI 명령을 실행하는 cmd
단계).
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
실행이 시작된 현재 UTC 시간입니다.
Run.Commit
GitHub 리포지토리에 대한 커밋에 의해 트리거되는 작업의 경우 커밋 식별자입니다.
Run.Branch
GitHub 리포지토리에 대한 커밋에 의해 트리거되는 작업의 경우 분기 이름입니다.
별칭
v1.1.0
현재 ACR 작업은 실행할 때 작업 단계에서 사용할 수 있는 별칭을 지원합니다. 별칭은 bash 및 일부 다른 명령 셸에서 지원되는 별칭(명령 바로 가기)과 개념상 유사합니다.
별칭을 사용하면 단일 단어를 입력하여 모든 명령 또는 명령 그룹(옵션 및 파일 이름 포함)을 시작할 수 있습니다.
ACR 작업은 미리 정의된 여러 별칭과 사용자가 만든 사용자 지정 별칭을 지원합니다.
미리 정의된 별칭
다음 작업 별칭은 실행 변수 대신 사용할 수 있습니다.
Alias | 변수 실행 |
---|---|
ID |
Run.ID |
SharedVolume |
Run.SharedVolume |
Registry |
Run.Registry |
RegistryName |
Run.RegistryName |
Date |
Run.Date |
OS |
Run.OS |
Architecture |
Run.Architecture |
Commit |
Run.Commit |
Branch |
Run.Branch |
작업 단계에서는 다음 예제와 같이 지시문과 함께 $
별칭 앞에 섰습니다.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
이미지 별칭
다음 별칭 각각은 MCR(Microsoft Container Registry)의 안정적인 이미지를 가리킵니다. 지시문을 사용하지 않고 작업 파일의 cmd
섹션에서 각 항목을 참조할 수 있습니다.
Alias | 이미지 |
---|---|
acr |
mcr.microsoft.com/acr/acr-cli:0.5 |
az |
mcr.microsoft.com/acr/azure-cli:7ee1d7f |
bash |
mcr.microsoft.com/acr/bash:7ee1d7f |
curl |
mcr.microsoft.com/acr/curl:7ee1d7f |
다음 예제 작업에서는 여러 별칭을 사용하여 실행 레지스트리의 리포지토리 samples/hello-world
에서 7일보다 오래된 이미지 태그를 제거합니다.
version: v1.1.0
steps:
- cmd: acr tag list --registry $RegistryName --repository samples/hello-world
- cmd: acr purge --registry $RegistryName --filter samples/hello-world:.* --ago 7d
사용자 지정 별칭
YAML 파일에서 사용자 지정 별칭을 정의하고 다음 예제와 같이 사용합니다. 별칭은 영숫자 문자만 포함할 수 있습니다. 별칭을 확장하는 기본 지시문은 $
문자입니다.
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
사용자 지정 별칭 정의에 대한 원격 또는 로컬 YAML 파일에 연결할 수 있습니다. 다음 예제에서는 Azure Blob Storage의 YAML 파일에 연결합니다.
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
다음 단계
다단계 작업에 대한 개요는 ACR 작업에서 다단계 빌드, 테스트 및 패치 작업 실행을 참조하세요.
단일 단계 빌드는 ACR 작업 개요를 참조하세요.