[英]Azure CLI task doesn't work on Windows build agents
我已經創建了一個Azure DevOps任務組,以在Azure(Azure容器實例)上創建一個硒容器,如下所示:
腳本:
ipAddress="$(az container create \
-g $(resourceGroup) \
--name temp-$(ContainerName) \
--image myregistry.azurecr.io/selenium/standalone-chrome \
--cpu 2 \
--memory 4 \
--os-type Linux \
--ports 4444 \
--vnet $(VNet)
--subnet $(Subnet)
--registry-username $(registryUsername) \
--registry-password $(registryPassword) \
--environment-variables \
NODE_MAX_SESSION=10 \
Browser=$(Browser) \
--query 'ipAddress.ip' -o tsv)"
echo "##vso[task.setvariable variable=$(SeleniumHubVariable);]http://$ipAddress:4444/wd/hub/"
在Linux構建代理上運行時,此任務已成功執行。
當我嘗試在Windows構建代理上運行它時,任務不會失敗,但是不會創建容器。 任務的輸出如下:
F:\\ Agent03 \\ w \\ 125 \\ s> ipAddress =“ $(az container create \\'ipAddress'被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s> -g myresourcegroup \\'-g'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-name temp-1807-build-385769 \\'--name'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-image mycontainerregistry.azurecr.io/selenium/standalone-chrome \\'--image'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-cpu 2 \\'--cpu'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-內存4 \\'-內存'未被識別為內部或外部命令,可操作程序或批處理文件。 '--os-type'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-os型Linux \\
F:\\ Agent03 \\ w \\ 125 \\ s>-端口4444 \\'--ports'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-vnet ..... \\'--vnet'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-子網.... \\'-子網'不被識別為內部或外部命令,可運行程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-注冊用戶名myregistryusername \\'-注冊用戶名'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-注冊表密碼*** \\'--registry-密碼'不被識別為內部或外部命令,可運行程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-environment-variables \\'--environment-variables'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s> NODE_MAX_SESSION = 10 \\'NODE_MAX_SESSION'不被識別為內部或外部命令,可操作程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>瀏覽器= $(瀏覽器)\\'瀏覽器'未被識別為內部或外部命令,可運行程序或批處理文件。
F:\\ Agent03 \\ w \\ 125 \\ s>-query'ipAddress.ip'-o tsv)“'--query'不被識別為內部或外部命令,可操作程序或批處理文件。
我想念什么? 如何使它在Windows和Linux上都可以使用?
現在,我可以使用2個任務使其與Windows代理一起使用。
腳本:
az container create ^
-g $(resourceGroup) ^
--name temp-$(ContainerName) ^
--image myregistry.azurecr.io/selenium/standalone-chrome ^
--cpu 2 ^
--memory 4 ^
--os-type Linux ^
--ports 4444 ^
--vnet $(VNet)
--subnet $(Subnet)
--registry-username $(registryUsername) ^
--registry-password $(registryPassword) ^
--environment-variables ^
NODE_MAX_SESSION=10 ^
Browser=$(Browser) ^
--query "ipAddress.ip" -o tsv>tmpFile-$(ContainerName).txt
一些注意事項:
\\
字符被替換為^
--query 'ipAddress.ip'
)上工作正常,但在Windows上我必須使用雙引號( --query "ipAddress.ip"
) $ipAddress = [IO.File]::ReadAllText("tmpFile-$(ContainerName).txt")
Write-Host "Selenium hub URL is http://$($ipAddress.Trim()):4444/wd/hub/"
Write-Host "##vso[task.setvariable variable=$(SeleniumHubVariable);]http://$($ipAddress.Trim()):4444/wd/hub/"
不幸的是,我必須為每個操作系統(Windows或Linux)創建不同版本的任務:
要根據構建代理的操作系統運行這些任務,可以設置自定義條件:
因此,要在Windows構建代理上運行任務,可以設置以下自定義條件:
and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
要在Linux構建代理上運行它:
and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
PS:可以在構建代理功能上找到Agent.OS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.