簡體   English   中英

Azure CLI任務不適用於Windows構建代理

[英]Azure CLI task doesn't work on Windows build agents

我已經創建了一個Azure DevOps任務組,以在Azure(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代理一起使用。

任務1(Azure CLI)-創建容器實例並將命令(IP地址)輸出到文件

創建容器實例(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

一些注意事項:

  • \\字符被替換為^
  • 單引號在Linux( --query 'ipAddress.ip' )上工作正常,但在Windows上我必須使用雙引號( --query "ipAddress.ip"

任務2(Powershell)-從文件中讀取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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM