다음을 통해 공유


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 명령 옵션과 같은 envdetach매개 변수를 지원합니다.

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 buildACR 작업을 실행해도 기본 푸시 동작은 제공되지 않습니다. 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 runaz 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 작업 개요참조하세요.