ACR 工作參考:YAML
ACR 工作中的多步驟工作定義提供以容器為中心的計算基本類型,著重於建置、測試和修補容器。 本文涵蓋定義多重步驟工作的 YAML 檔案命令、參數、屬性和語法。
本文包含針對 ACR 工作建立多重步驟工作 YAML 檔案的參考。 如果您想要 ACR 工作的簡介,請參閱 ACR 工作概觀。
ACR 工作支持標準 YAML 語法中的多步驟工作宣告。 您可以在 YAML 檔案中定義工作的步驟。 接著,您可以將檔案傳遞至 az acr run 命令,以手動執行工作。 或者,使用 檔案來建立具有 az acr task create 的工作,該工作 會在 Git 認可、基底映射更新或排程上自動觸發。 雖然本文指的是 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
參數。 若要設定預設登錄,請使用 az config 命令搭配 set
命令,以接受 defaults.acr=REGISTRY_NAME
機碼值組。
例如,若要使用名為 「myregistry」 的預設登錄來設定 Azure CLI:
az config set defaults.acr=myregistry
工作屬性通常會出現在檔案頂 acr-task.yaml
端,而且是整個工作步驟完整執行時套用的全域屬性。 某些全域屬性可以在個別步驟內覆寫。
屬性 | 類型 | 選擇性 | 描述 | 支援覆寫 | 預設值 |
---|---|---|---|---|---|
version |
字串 | Yes | ACR 工作服務所剖析的 acr-task.yaml 檔案版本。 雖然 ACR 工作會努力維持回溯相容性,但此值可讓 ACR 工作在定義的版本中維持相容性。 如果未指定,則預設為 v1.0.0 。 |
N/A | v1.0.0 |
stepTimeout |
int (秒) | Yes | 步驟可以執行的秒數上限。 stepTimeout 如果在工作上指定 屬性,它會設定所有步驟的默認timeout 屬性。 如果在步驟上指定 屬性 timeout ,它會覆寫 stepTimeout 工作所提供的屬性。工作之步驟逾時值的總和應等於工作之 run timeout 屬性的值(例如,藉由傳遞 --timeout 至 az acr task create 命令來設定)。 如果工作的執行 timeout 值較小,則會優先使用。 |
Yes | 600 (10 分鐘) |
workingDirectory |
字串 | Yes | 運行時間期間容器的工作目錄。 如果在工作上指定 屬性,它會設定所有步驟的默認 workingDirectory 屬性。 如果在步驟上指定,它會覆寫工作所提供的屬性。 |
Yes | c:\workspace 在 Windows 或 /workspace Linux 中 |
env |
[string, string, ...] | Yes | 格式的 key=value 字串數位,定義工作的環境變數。 如果在工作上指定 屬性,它會設定所有步驟的默認 env 屬性。 如果在步驟上指定,它會覆寫繼承自工作的任何環境變數。 |
Yes | 無 |
secrets |
[secret, secret, ...] | Yes | 秘密物件的陣列。 | No | 無 |
networks |
[network, network, ...] | Yes | 網路物件的陣列。 | No | 無 |
volumes |
[volume, volume, ...] | Yes | 磁碟區對象的陣列。 指定要掛接至步驟之來源內容的磁碟區。 | No | 無 |
秘密物件具有下列屬性。
屬性 | 類型 | 選擇性 | 描述 | 預設值 |
---|---|---|---|---|
id |
字串 | No | 秘密的標識碼。 | 無 |
keyvault |
字串 | Yes | Azure 金鑰保存庫 秘密 URL。 | 無 |
clientID |
字串 | Yes | Azure 資源使用者指派受控識別的 用戶端標識碼 。 | 無 |
網路物件具有下列屬性。
屬性 | 類型 | 選擇性 | 描述 | 預設值 |
---|---|---|---|---|
name |
字串 | No | 網路的名稱。 | 無 |
driver |
字串 | Yes | 管理網路的驅動程式。 | 無 |
ipv6 |
bool | Yes | 是否啟用 IPv6 網路功能。 | false |
skipCreation |
bool | Yes | 是否略過網路建立。 | false |
isDefault |
bool | Yes | 網路是否為 Azure Container Registry 所提供的預設網路。 | false |
磁碟區物件具有下列屬性。
屬性 | 類型 | 選擇性 | 描述 | 預設值 |
---|---|---|---|---|
name |
字串 | No | 要掛接的磁碟區名稱。 只能包含英數位元、『-』和 『_』。 | 無 |
secret |
map[string]string | No | 對應的每個索引鍵都是在磁碟區中建立並填入的檔案名稱。 每個值都是秘密的字串版本。 秘密值必須是Base64編碼。 | 無 |
ACR 工作支援三種步驟類型。 每個步驟類型都支援數個屬性,詳述於每個步驟類型的 區段中。
步驟類型 | 描述 |
---|---|
build |
使用熟悉 docker build 的語法建置容器映像。 |
push |
docker push 執行新建置或重新標記的映像至容器登錄。 支援 Azure Container Registry、其他私人登錄和公用 Docker Hub。 |
cmd |
以命令的形式執行容器,並將參數傳遞至容器的 [ENTRYPOINT] 。 步驟cmd 類型支援、 detach 和其他熟悉docker run 的命令選項等env 參數,以並行容器執行來啟用單元和功能測試。 |
建置容器映像。 步驟 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
類型也支援 docker build 命令的所有建置選項,例如--build-arg
設定建置時間變數。
參數 | 描述 | 選擇性 |
---|---|---|
-t | --image |
定義建置映像的完整 image:tag 。由於映像可用於內部工作驗證,例如功能測試,並非所有映像都需要 push 登錄。 不過,若要在工作執行中實例映射,映像需要名稱才能參考。不同於 az acr build ,執行 ACR 工作不提供預設推送行為。 使用 ACR 工作時,預設案例會假設能夠建置、驗證,然後推送映射。 請參閱 推送 以瞭解如何選擇性地推送建置的映像。 |
Yes |
-f | --file |
指定傳遞至 docker build 的 Dockerfile。 如果未指定,則會假設內容根目錄中的預設 Dockerfile。 若要指定 Dockerfile,請傳遞相對於內容根目錄的檔名。 |
Yes |
context |
傳遞至 docker build 的根目錄。 每個工作的根目錄都會設定為共用 的 workingDirectory,並包含相關聯 Git 複製目錄的根目錄。 |
No |
步驟 build
類型支援下列屬性。 在本文的 [ 工作步驟屬性] 區段中尋找這些屬性 的詳細數據。
屬性 | 類型 | 必要 |
---|---|---|
detach |
bool | 選擇性 |
disableWorkingDirectoryOverride |
bool | 選擇性 |
entryPoint |
字串 | 選擇性 |
env |
[string, string, ...] | 選擇性 |
expose |
[string, string, ...] | 選擇性 |
id |
字串 | 選擇性 |
ignoreErrors |
bool | 選擇性 |
isolation |
字串 | 選擇性 |
keep |
bool | 選擇性 |
network |
object | 選擇性 |
ports |
[string, string, ...] | 選擇性 |
pull |
bool | 選擇性 |
repeat |
int | 選擇性 |
retries |
int | 選擇性 |
retryDelay |
int (秒) | 選擇性 |
secret |
object | 選擇性 |
startDelay |
int (秒) | 選擇性 |
timeout |
int (秒) | 選擇性 |
volumeMount |
object | 選擇性 |
when |
[string, string, ...] | 選擇性 |
workingDirectory |
字串 | 選擇性 |
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
使用 Azure Container Registry (ACR) 工作時,您可能會發現自己需要將不同的值傳遞至建置程式,而不需使用 --set
旗標搭配 az acr task run
命令來變更工作定義。
假設您在檔案中 acr-task.yml
定義了具有影像標籤的 ACR 工作:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
您可以使用下列 Azure CLI 命令,在執行時間觸發工作並將變數設定 tag
為 v2
:
az acr task run --registry myregistry --name mytask --set tag=v2
此命令會啟動名為 mytask
的 ACR 工作,並使用 v2
標記來建置映像,並覆寫檔案中的 acr-task.yml
佔位元。
這種方法可讓您在 CI/CD 管線中進行自定義,讓您根據目前的需求動態調整參數,而不需要改變工作定義。
將一或多個建置或重新標記的映像推送至容器登錄。 支援推送至 Azure Container Registry 之類的私人登錄,或推送至公用 Docker Hub。
步驟 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
類型支援下列屬性。 在本文的 [ 工作步驟屬性] 區段中尋找這些屬性 的詳細數據。
屬性 | 型別 | 必要 |
---|---|---|
env |
[string, string, ...] | 選擇性 |
id |
字串 | 選擇性 |
ignoreErrors |
bool | 選擇性 |
startDelay |
int (秒) | 選擇性 |
timeout |
int (秒) | 選擇性 |
when |
[string, string, ...] | 選擇性 |
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
執行容器。
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
步驟 cmd
類型支援下列屬性:
屬性 | 型別 | 必要 |
---|---|---|
detach |
bool | 選擇性 |
disableWorkingDirectoryOverride |
bool | 選擇性 |
entryPoint |
字串 | 選擇性 |
env |
[string, string, ...] | 選擇性 |
expose |
[string, string, ...] | 選擇性 |
id |
字串 | 選擇性 |
ignoreErrors |
bool | 選擇性 |
isolation |
字串 | 選擇性 |
keep |
bool | 選擇性 |
network |
object | 選擇性 |
ports |
[string, string, ...] | 選擇性 |
pull |
bool | 選擇性 |
repeat |
int | 選擇性 |
retries |
int | 選擇性 |
retryDelay |
int (秒) | 選擇性 |
secret |
object | 選擇性 |
startDelay |
int (秒) | 選擇性 |
timeout |
int (秒) | 選擇性 |
volumeMount |
object | 選擇性 |
when |
[string, string, ...] | 選擇性 |
workingDirectory |
字串 | 選擇性 |
您可以在本文的 [工作步驟屬性] 區段中找到這些屬性的詳細數據。
此命令會執行工作 hello-world.yaml
檔案,該檔案會參考 Docker Hub 上的 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-echo.yaml
檔案,該檔案會參考 Docker Hub 上的 bash 映像。
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
若要執行特定映像版本,請在 中 cmd
指定標記。
此命令會執行工作 bash-echo-3.yaml
檔案,該檔案會參考 Docker Hub 上的 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 Hub 執行映像。 如果您在 ACR 工作執行所在的相同登錄中參考映像,則不需要指定任何登錄認證。
執行來自 Azure 容器登錄的映像。 下列範例假設您有名為
myregistry
的登錄和自定義映像myimage:mytag
。version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
使用 Run 變數或別名將登錄參考一般化
您可以使用 Run 變數或別名,而不是在檔案中
acr-task.yaml
硬式編碼您的登錄名稱,使其更容易移植。 變數或$Registry
別名會在Run.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、 建置和 推送 步驟類型參考小節。
屬性 | 類型 | 選擇性 | 描述 | 預設值 |
---|---|---|---|---|
detach |
bool | Yes | 執行時,是否應該卸離容器。 | false |
disableWorkingDirectoryOverride |
bool | Yes | 是否要停用 workingDirectory 覆寫功能。 搭配使用此選項 workingDirectory ,以完全控制容器的工作目錄。 |
false |
entryPoint |
字串 | Yes | 覆 [ENTRYPOINT] 寫步驟容器的 。 |
無 |
env |
[string, string, ...] | Yes | 格式的 key=value 字串數位,定義步驟的環境變數。 |
無 |
expose |
[string, string, ...] | Yes | 從容器公開的埠陣列。 | 無 |
id |
字串 | Yes | 可唯一識別工作內的步驟。 工作中的其他步驟可以參考步驟的 id ,例如使用 when 進行相依性檢查。id 也是執行中容器的名稱。 例如,在工作中的其他容器中執行的進程可以參考 id 作為其 DNS 主機名,或使用 Docker 記錄 [id] 存取它。 |
acb_step_%d ,其中 %d 是 YAML 檔案中下拉式步驟的 0 型索引 |
ignoreErrors |
bool | Yes | 不論容器執行期間是否發生錯誤,是否要將步驟標示為成功。 | false |
isolation |
字串 | Yes | 容器的隔離等級。 | default |
keep |
bool | Yes | 是否應在執行後保留步驟的容器。 | false |
network |
object | Yes | 識別容器執行所在的網路。 | 無 |
ports |
[string, string, ...] | Yes | 從容器發行至主機的埠陣列。 | 無 |
pull |
bool | Yes | 是否在執行容器之前強制提取容器,以防止任何快取行為。 | false |
privileged |
bool | Yes | 是否要在特殊許可權模式中執行容器。 | false |
repeat |
int | Yes | 重複執行容器的重試次數。 | 0 |
retries |
int | Yes | 如果容器執行失敗,重試次數。 只有在容器的結束代碼不是零時,才會嘗試重試。 | 0 |
retryDelay |
int (秒) | Yes | 重試容器執行之間的延遲,以秒為單位。 | 0 |
secret |
object | Yes | 識別 Azure 資源的 Azure 金鑰保存庫 秘密或受控識別。 | 無 |
startDelay |
int (秒) | Yes | 延遲容器執行的秒數。 | 0 |
timeout |
int (秒) | Yes | 在終止之前,步驟可以執行的秒數上限。 | 600 |
when |
[string, string, ...] | Yes | 設定步驟對工作內一或多個其他步驟的相依性。 | 無 |
user |
字串 | Yes | 容器的用戶名稱或 UID | 無 |
workingDirectory |
字串 | Yes | 設定步驟的工作目錄。 根據預設,ACR 工作會建立根目錄作為工作目錄。 不過,如果您的組建有數個步驟,則先前的步驟可以藉由指定相同的工作目錄,與後續步驟共用成品。 | c:\workspace 在 Windows 或 /workspace Linux 中 |
volumeMount 物件具有下列屬性。
屬性 | 類型 | 選擇性 | 描述 | 預設值 |
---|---|---|---|---|
name |
字串 | No | 要掛接的磁碟區名稱。 必須完全符合屬性 volumes 的名稱。 |
無 |
mountPath |
字串 | 否 | 在容器中掛接檔案的絕對路徑。 | 無 |
建置兩個映像,實例化功能測試映像。 每個步驟都是由其 when
屬性中工作參考中其他步驟的唯id
一識別。
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"]
- 表示步驟相依於具有id
「id1」 和id
「id2」 的步驟。 在完成 「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
別名。
每個執行、透過 az acr run
或觸發程式執行透過 az acr task create
建立的工作,都有唯一標識符。 標識子代表目前正在執行的執行。
通常用於唯一標記影像:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
所有工作步驟可存取之共用磁碟區的唯一標識符。 磁碟區會掛接至 c:\workspace
Windows 或 /workspace
Linux 中。
登錄的完整伺服器名稱。 通常用來一般參考執行工作所在的登錄。
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
容器登錄的名稱。 通常用於不需要完整伺服器名稱的工作步驟中,例如, cmd
在登錄上執行 Azure CLI 命令的步驟。
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
執行開始的目前 UTC 時間。
對於認可至 GitHub 存放庫所觸發的工作,則為認可標識碼。
針對認可至 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 .
下列每個別名都會指向 Microsoft Container Registry (MCR) 中的穩定映射。 您可以在 Task 檔案的 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 記憶體中的 YAML 檔案:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
如需多步驟工作的概觀,請參閱 在 ACR 工作中執行多步驟建置、測試及修補工作。
如需單一步驟組建,請參閱 ACR 工作概觀。