如何在收到VSTS托管的构建代理时返回错误的声音

时间:2018-09-10 16:22:03

标签: powershell gruntjs azure-devops azure-pipelines

我试图通过批处理脚本运行grunt任务,并按如下方式调用grunt:

call npm install
call npm install grunt

但是,如果返回错误,则托管构建代理上的VSTS构建仍然显示为成功(即使脚本中记录了错误)。有没有人有很好的例子说明如何获取它以将错误返回给构建?

我一直在考虑使用powershell,但到目前为止没有运气,代码如下:

在gruntfile.js中:

grunt.initConfig({
    shell: {
        ps: {
            options: {
                stdout: true
            },
            command: 'powershell ../../errors.ps1'
        }
    }
});

grunt.registerTask('default',  function() {
    try {
                    grunt.task.run([
                    'less:desktop',
                    'less:tablet',
                    'less:smartphone',
                    'less:homepage_desktop',
                    'less:homepage_tablet']);
    } catch(e) {
                    grunt.task.run([
                    'shell:ps']);
                    throw e;

    }
}); 

在errors.ps1中:

$URL_Format_Error = [string]"Error found in running grunt. Please investigate grunt logs"
    Write-Error $URL_Format_Error -ErrorAction:Stop
    return

永远不会调用在异常处理程序中运行的代码,并且在.less文件中输出带有编译错误的警告,但永远不会运行powershell。也许有什么办法可以使我陷入警告,然后运行Powershell?

或者,当我尝试在运行NPM安装的批处理脚本之后向VSTS构建定义中添加一个艰巨的任务时,我只会不断收到以下错误(即使在批处理脚本中看到成功的NPM安装之后) :

  

致命错误:找不到本地咕gr声

因此,如果我使用托管的构建代理,则不确定是否可以在VSTS构建定义的单独任务中运行grunt任务。我倾向于认为只有在拥有自己的构建服务器的情况下,这种方法才能起作用。

1 个答案:

答案 0 :(得分:0)

只需尝试在脚本中结合使用Write-Errorexit 1

 Write-Error ("Some error")
 exit 1

参考此线程:How to fail the build from a PowerShell task in TFS 2015