如何在VSTS托管构建代理上返回grunt错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在VSTS托管构建代理上返回grunt错误相关的知识,希望对你有一定的参考价值。

我正在尝试通过批处理脚本运行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构建定义添加grunt任务时,我只是不断收到以下错误(即使在批处理脚本中看到成功的NPM安装后):

致命错误:无法找到当地的咕噜声

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

答案

只是尝试在脚本中使用Write-Errorexit 1

 Write-Error ("Some error")
 exit 1

引用此主题:How to fail the build from a PowerShell task in TFS 2015

以上是关于如何在VSTS托管构建代理上返回grunt错误的主要内容,如果未能解决你的问题,请参考以下文章

VSTS 托管代理在啥用户帐户下运行?

VSTS 构建代理 - 一台计算机可以运行多个构建代理吗?

在 VSTS 上的云托管 Mac 上的 Xcode 中构建错误

VSTS:如何重新排队损坏的构建和切换代理队列

多目标 .NET Core 控制台的 Azure DevOps (VSTS) 托管 macOS 代理失败

为什么我在VSTS中有更多的拼写错误(CA1704规则)?