2017-02-23 40 views
1

我在Mac上安裝了VSTS構建代理來構建xamarin iOS項目。構建工作正常,直到我添加PowerShell構建步驟。 即使我爲mac安裝了powershell(https://github.com/PowerShell/PowerShell)並重新安裝了代理,VSTS卻抱怨它沒有能夠運行構建的代理。在安裝在mac上的VSTS代理中運行powershell構建步驟?

No agent could be found with the following capabilities: DotNetFramework, Xamarin.iOS, npm

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

是否有可能在Mac上運行PowerShell構建步驟?

回答

4

正如MrHinsh澄清的那樣,PowerShell任務無法在Mac上使用。

作爲一種變通方法我用shell腳本任務:

ShellScript task

用下面的bash腳本:

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

而且,PowerShell的安裝程序似乎沒有PowerShell中添加到我的道路,所以我必須添加它:

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

這很聰明,爲我的項目節省了一大筆頭痛。 問題:如果您想要做同樣的事情,但是還會將參數傳遞給Bash腳本並將它們傳遞給Powershell腳本,該怎麼辦? – KeithA45

1

如果您確定已安裝DotNetFramework,那麼您可以轉到代理隊列設置併爲其添加自定義功能。

這應該允許它運行,但如果代理程序實際上找不到它們,它可能會失敗,但它也可能成功,因此可能值得一試。

+0

我沒有嘗試這個,並得到以下錯誤:'System.Exception:支持的任務執行處理程序未找到。支持的處理程序:Node'我不確定代理如何工作,我從github下載了源代碼,看看是否有機會通過節點執行powershell腳本?! – spatialguy

1

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

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

1

在TFS構建去Agent Queues => Capablilities =>添加名爲DotNetFramework的變量,並給出mac代理的dotnet框架路徑的值。

enter image description here 這對問題修復「無代理程序可具有以下功能中找到:DotNetFramework

0

這是一個後續的accepted answer解決的評論的問題,我也有。

感謝spatialguy發佈和尋找這個問題的簡單解決方案。我有同樣的問題,因爲KeithA45

QUESTION: What if you wanted to do the same, but also pass arguments to the Bash script which passes them to the Powershell script?

我找到了解決這個,首先,我修改了shell腳本任務,包括Visual Studio團隊服務(VSTS)環境變量,我想傳遞給PowerShell腳本。

enter image description here

接下來,我通過稍微修改由accepted answer提到的shell腳本通過對所謂的PowerShell腳本傳遞參數。

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

最後,在PowerShell腳本,我趕上已經通過使用使用PARAM這樣傳遞的參數:

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

其中我現在可以使用包含變量$版本和$路徑在VSTS中輸入原始參數以滿足我的powershell腳本的需要。

相關問題