在Mac上安装的VSTS代理中运行powershell构建步骤吗?

时间:2017-02-23 14:52:43

标签: powershell xamarin build xamarin.ios azure-devops

我在mac上安装了VSTS构建代理来构建xamarin iOS项目。构建工作正常,直到我添加了PowerShell构建步骤。 即使我为mac(https://github.com/PowerShell/PowerShell)安装了powershell并重新安装了代理,VSTS也抱怨它没有能够运行构建的代理。

  

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

当我禁用构建步骤时,构建工作正常。

是否可以在Mac上运行PowerShell构建步骤?

6 个答案:

答案 0 :(得分:4)

正如MrHinsh澄清的那样,PowerShell任务无法在Mac上使用。

作为一种解决方法,我使用了ShellScript任务:

ShellScript task

使用以下bash脚本:

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

此外,powershell安装程序似乎没有将powershell添加到我的PATH中,所以我不得不添加它:

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

答案 1 :(得分:1)

如果您确定安装了DotNetFramework,那么您可以转到代理队列设置并为其添加一个自定义功能。

这应该允许它运行但是如果代理实际上找不到它们可能会失败,但它也可能成功,所以它可能值得一试。

答案 2 :(得分:1)

不,您无法在Mac上使用PowerShell任务,只支持节点任务。

目前在PowerShell3中编写的PowerShell任务,Mac上不支持。您可以请求团队在http://visualstudio.uservoice.com

上实施此功能

答案 3 :(得分:1)

在TFS构建中,转到Agents Queues => Capablilities =>添加名为 DotNetFramework 的变量,并为mac agent的dotnet框架路径赋予值。

enter image description here 它解决了问题"找不到具有以下功能的代理:DotNetFramework "

答案 4 :(得分:0)

这是accepted answer的后续行动,以解决我在评论中提出的问题。

感谢spatialguy发布并找到解决此问题的简单方法。我遇到了与KeithA45相同的问题:

  

问题:如果你想做同样的事情,还要将参数传递给Bash脚本,并将它们传递给Powershell脚本怎么办?

我找到了一个解决方案,首先,我修改了shell脚本任务,以包含我想传递给powershell脚本的Visual Studio Team Services(VSTS)环境变量。

enter image description here

接下来,我通过稍微修改accepted answer提到的shell脚本,将参数传递给被调用的powershell脚本。

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

最后,在powershell脚本中,我使用这样的param来捕获已经传递的参数:

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

其中我现在可以使用包含在VSTS中输入的原始参数的变量$ version和$ path来满足我的powershell脚本的需要。

答案 5 :(得分:0)

事情似乎已经向前发展,因为今天我从Azure DevOps构建管道成功运行了Mac自托管代理上的PowerShell@2任务。

通过在对构建进行排队时检查“启用系统诊断”,该日志向我显示该任务找到了自己在Homebrew(brew cask install powershell的帮助下在Mac上安装的PowerShell Core(pwsh)的路径。 -参见https://docs.microsoft.com/fr-fr/powershell/scripting/install/installing-powershell-core-on-macos)。