繁体   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