簡體   English   中英

在Mac上安裝的VSTS代理中運行Powershell構建步驟?

[英]Run powershell build step in VSTS agent installed on mac?

我在Mac上安裝了VSTS構建代理,以構建xamarin iOS項目。 在我添加powershell構建步驟之前,構建工作正常。 即使我為Mac安裝了powershell( https://github.com/PowerShell/PowerShell )並重新安裝了代理,VSTS仍抱怨它沒有能夠運行構建的代理。

找不到具有以下功能的代理:DotNetFramework,Xamarin.iOS,npm

當我禁用構建步驟時,構建工作就可以了。

是否可以在Mac上運行Powershell構建步驟?

正如MrHinsh所闡明的那樣,PowerShell任務不能在Mac上使用。

解決方法是使用ShellScript任務:

ShellScript任務

使用以下bash腳本:

#!/bin/bash
powershell ./SetAppVersion.ps1

另外,powershell安裝程序似乎沒有將powershell添加到我的PATH中,因此我不得不添加它:

$ export PATH=$PATH:/usr/local/microsoft/powershell/6.0.0-alpha.16

如果確定已安裝DotNetFramework,則可以轉到“代理隊列”設置,並為其添加自定義功能,即所謂的功能。

那應該允許它運行,但是如果代理無法實際找到它們,則此后可能會失敗,但是它也可能成功,因此值得嘗試。

不,您不能在Mac上使用PowerShell任務,僅支持節點任務。

當前在PowerShell3中編寫的PowerShell任務,Mac上不支持。 您可以在http://visualstudio.uservoice.com上要求團隊實施此操作

在TFS構建中,轉到Agents Queues => Capablilities =>添加名為DotNetFramework的變量,並為mac agent的dotnet框架路徑提供值。

在此處輸入圖片說明 解決了“找不到具有以下功能的代理:DotNetFramework ”的問題

這是在我也有評論中解決問題的已接受答案的跟進。

感謝spatialguy發布並找到此問題的簡單解決方案。 我有與KeithA45相同的問題:

問題:如果您想做同樣的事情,但又將參數傳遞給Bash腳本,然后又將參數傳遞給Powershell腳本,該怎么辦?

我找到了解決方案,首先,我修改了外殼腳本任務,以包含要傳遞給powershell腳本的Visual Studio Team Services(VSTS)環境變量。

在此處輸入圖片說明

接下來,我通過稍微修改已接受的answer所提到的shell腳本,將參數傳遞給被調用的powershell腳本。

#!/bin/bash
powershell ./Version.ps1 $1 $2

最后,在powershell腳本中,我使用如下param捕獲通過傳遞的參數:

param([string]$version, [string]$path)

現在,我可以使用變量$ version和$ path,這些變量包含在VSTS中輸入的原始參數以滿足我的powershell腳本的需要。

事情似乎已經向前發展,因為今天我從Azure DevOps構建管道成功地在Mac自托管代理上運行了PowerShell@2任務。

通過在使構建排隊時檢查“啟用系統診斷”,日志向我顯示該任務本身找到了在Homebrew的幫助下在Mac上安裝的PowerShell Core(pwsh)的路徑(brew cask brew cask install powershell請參閱https: //docs.microsoft.com/fr-fr/powershell/scripting/install/installing-powershell-core-on-macos )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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