调用PhantomJS的自定义VSTS构建任务无法创建映像文件

时间:2017-03-23 15:01:04

标签: powershell azure-pipelines-build-task

我正在编写一个自定义VSTS扩展程序(基于参数)请求URL并通过电子邮件发送结果。我把它的所有部分都正常运行,除了调用PhantomJS exe的部分。这是在附加到电子邮件之前生成屏幕截图所必需的。

相关的PowerShell代码如下:

Write-Verbose "Run phantomjs with $testingurl"
Start-Process -FilePath "phantomjs.exe" -ArgumentList "screenshot.js",$testingurl
$directory = Get-ScriptDirectory
Get-ChildItem $directory -force

我用相关参数调用PhantomJS,这应该在我的工作目录中创建一个名为'example.png'的图像。但是,当我输出目录的内容时,该文件不存在。

我玩过我的扩展程序的“范围”,但它没有帮助。我目前的范围是:

"scopes": [
    "vso.build_execute",
    "vso.serviceendpoint_manage",
    "vso.code_manage",
    "vso.packaging_manage",
    "vso.release_execute",
    "vso.work_write"
],

如果我使用标准PS命令行开关,我还验证了我可以创建一个文件:

New-Item "$directory\test.txt" -ItemType file

我也尝试在我的VSIX包中包含一个空白的'example.png',希望被覆盖,但事实并非如此。

所以,我确信这不是写权限问题。 VSTS日志未指示对PhantomJS exe失败的调用。

您是否不允许从VSTS扩展(构建任务)中的PS脚本调用exe? PS脚本在本地正常工作,所以我觉得这更像是一个环境/权限/允许问题,而不是我自己的代码问题。

1 个答案:

答案 0 :(得分:0)

我的问题最终是exe运行并且我的代码继续执行。我不得不添加" -Wait"属于我的电话:

Start-Process -FilePath "phantomjs.exe" -ArgumentList "screenshot.js",$testingurl -Wait

由于调用phantomjs.exe之后的行要求执行完成,因此" -Wait"确保它首先完成。