Continuous integration 连续积分

Continuous integration 连续积分,continuous-integration,azure-devops,angular-cli,Continuous Integration,Azure Devops,Angular Cli,我过去曾为使用npm命令的Angular2项目设置CI,但最近我开始使用AngularCLI,它使用“ng”命令 当我尝试在Visual Studio Online中为我的项目设置CI时,我找不到执行“ng”命令的方法 我已经尝试运行NPM命令(使用目录中的NPM任务)来安装CLI;npm安装-g angular cli,然后运行npm安装。现在要运行“ng build”,我已经尝试使用命令行工具运行(因为似乎没有一个工具允许我运行ng命令),但这并不能说明ng不是一个可识别的命令 关于使用VS

我过去曾为使用npm命令的Angular2项目设置CI,但最近我开始使用AngularCLI,它使用“ng”命令

当我尝试在Visual Studio Online中为我的项目设置CI时,我找不到执行“ng”命令的方法

我已经尝试运行NPM命令(使用目录中的NPM任务)来安装CLI;npm安装-g angular cli,然后运行npm安装。现在要运行“ng build”,我已经尝试使用命令行工具运行(因为似乎没有一个工具允许我运行ng命令),但这并不能说明ng不是一个可识别的命令

关于使用VSO为Angular CLI项目设置CI有什么建议吗


谢谢

我现在也在经历同样的事情,所以我觉得你很痛苦。 您可能需要创建自己的构建服务器,作为azure上的VM或内部部署。原因是angular cli目前不是托管构建服务器的功能之一

当你创造自己的时候,你仍然会遇到一些障碍。全局安装angular cli时,它仍然会将其放在安装它的用户的AppData文件夹下。如果您已将代理设置为以其他用户(例如NetworkService)的身份运行,则对于该服务帐户,“ng”将不在路径中。它可能也没有运行它的权限,因为angular cli安装在用户的文件夹下,它没有权限运行它

好的,那么您使用相同的用户运行代理,或者您解决了权限和路径问题,您可能仍然会遇到问题。如果使用powershell脚本任务作为生成任务之一来执行“ng build”,则会遇到我在此处强调的问题:

所以看起来我们可能不得不求助于命令行构建任务。
希望这有帮助。过去两天我花在这上面的时间可能会帮助其他人。

关于Angular2 CLI命令行,它使用ng2而不是ng。(Angular CLI使用ng),因此您的命令不正确

请参阅以下步骤以验证ng2命令(适用于托管代理):

  • 添加NPM构建步骤(NPM命令:安装;参数:angular2 cli-g)
  • 添加命令行步骤(工具:ng2;参数:--version)
  • 如果将内部构建代理与网络服务一起使用,请改用以下步骤:

  • NPM构建步骤(NPM命令:安装;参数:angular2 cli-g)
  • 命令行步骤(工具:C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\npm\ng2.cmd;Argumetns:--version)

  • 对于具有用户帐户的内部构建代理,您可以登录该计算机并安装Angular2 CLI命令行(不需要在构建过程中安装它)。

    如果您希望您的构建定义在任何构建代理(托管代理和任何内部构建代理)上运行,您可以依靠本地安装Angular2 CLI和npm,不带
    -g
    标志:

    >npm install angular-cli
    
    默认情况下,npm将在
    \node\u modules\.bin\

    您的生成定义可以使用任务在本地安装“ng”,然后您可以通过任务调用它,因为您知道它的路径(例如
    $(build.SourcesDirectory)\node\u modules\.bin

    生成定义创建新项目并使用“ng”生成的示例:

    • 本地安装“ng”cli工具:

    • 创建项目“helloworldproject”:

    • 生成项目“helloworldproject”:

    ==更新(以编程方式使用“npm bin”检索实际的二进制路径)==

    要消除放置二进制文件的假设并具有更具弹性的生成定义,您可以使用以下命令以编程方式检索npm使用的实际二进制路径:

    >npm bin
    
    下面的示例(这次是一个简短的PowerShell脚本)显示了如何创建“helloworldproject”并在其后构建它:

    记住:

    • 禁用PowerShell任务上的“标准错误失败”选项,因为ng工具喜欢在那里写东西,即使它成功了
    • 当然,在使用“ng”工具之前,您仍然需要如上所示的“npm安装”任务

    我这方面是个错误,我是说。我已调整CI以安装正确的cli,但是,它仍然表示ng不是一条可识别的命令。如果您将其作为生成的一部分进行安装,并且您没有按照starain MSFT的建议直接引用该命令,那么它将无法找到它,因为运行该命令的上下文将没有时间在路径中识别它。@Pawel您使用了哪个生成代理?托管生成代理还是内部生成代理?详细构建日志是什么?@starain MSFT现在没事了,我设法用卢卡的答案解决了。无论如何,感谢您的支持:)