如何在Jenkins构建批处理命令

时间:2017-03-10 18:30:41

标签: windows batch-file jenkins path angular-cli

在安装Jenkins之前我运行了这个: npm install -g @ angular / cli

但我也在项目的package.json中的devDependencies中有这个:

" @ angular / cli":" 1.0.0-beta.32.3"

运行Jenkins构建时,我在日志中收到此消息:

'纳克'不被识别为内部或外部命令,可操作程序或批处理文件。

=======================================

以下是Jenkins中的Windows批处理命令:

cmd / c致电npm install

设置路径=%WORKSPACE%\ node_modules \ @angular \ cli \ bin;%PATH%

回显%PATH%

ng build -prod

========================================

这是Jenkins的更多日志输出:

C:\ Program Files(x86)\ Jenkins \ workspace \ UiUnitTests> ng build -prod

'纳克'不被视为内部或外部命令, 可操作程序或批处理文件。

C:\ Program Files(x86)\ Jenkins \ workspace \ UiUnitTests>退出9009 构建步骤'执行Windows批处理命令'将构建标记为失败

但是当我从命令行(而不是在Jenkins工作中)运行它时,这很好用:

C:\ Program Files(x86)\ Jenkins \ workspace \ UiUnitTests> ng build -prod

您的全局Angular CLI版本(1.0.0-rc.1)大于本地

版本(1.0.0-beta.32.3)。使用本地Angular CLI版本。

要禁用此警告,请使用" ng set --global warnings.versionMismatch = false"。 哈希:7853ecb5a81a25eadbeb 时间:61317ms chunk {0} polyfills.7aaf5284cd5921eea40b.bundle.js(polyfills)278 kB {4} [initial] [rendered] chunk {1} main.3380f71d3e71966aea27.bundle.js(main)371 kB {3} [initial] [rendered] chunk {2} styles.9db1bafdfc989b37db97.bundle.css(styles)69字节{4} [initial] [rendered] chunk {3} vendor.24574fc8320129058fac.bundle.js(vendor)2.18 MB [initial] [rendered] chunk {4} inline.d1f5b52100bed2568d44.bundle.js(内联)0字节[entry] [已呈现]

C:\ Program Files(x86)\ Jenkins \ workspace \ UiUnitTests>

=============================================== =

最后但并非最不重要的,这是来自 echo%PATH%

的Jenkins日志输出

C:\ Program Files(x86)\ Jenkins \ workspace \ UiUnitTests> echo C:\ Program Files(x86)\ Jenkins \ workspace \ UiUnitTests \ node_modules \ @angular \ cli \ bin; C:\ Windows \ system32; C:\ Windows; C:\ Windows \ System32 \ Wbem; C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \; C:\ Program Files \ Amazon \ cfn-bootstrap \; C:\ Ruby23-x64 \ bin; C:\ Program Files \ nodejs \; C:\ Windows \ system32 \ config \ systemprofile \ AppData \ Local \ Microsoft \ WindowsApps C:\ Program Files(x86)\ Jenkins \ workspace \ UiUnitTests \ node_modules \ @angular \ cli \ bin; C:\ Windows \ system32; C:\ Windows; C:\ Windows \ System32 \ Wbem; C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \; C:\ Program Files \ Amazon \ cfn-bootstrap \; C:\ Ruby23-x64 \ bin; C:\ Program Files \ nodejs \; C:\ Windows \ system32 \ config \ systemprofile \应用程序数据\本地\微软\ WindowsApps

2 个答案:

答案 0 :(得分:26)

不要全局安装CLI。

为repo运行npm install,只要您需要运行ng命令,请使用此命令:

node_modules/.bin/ng [command goes here]

这将节省安装时间,并确保本地和全球版本之间没有差异。

其他评论:将您的应用更新到最新版本的CLI

答案 1 :(得分:3)

试试npm run ng build。唯一的问题是它在构建后省略了--prod--test之类的任何其他参数。

以下是我用于从Jenkins成功运行角度构建的命令。最后一个命令通过设置路径变量以脏方式执行。不知道是否有更清洁的方法来做到这一点。这确实可以正确执行命令而不会遗漏任何内容。

@echo on
cmd /c npm install -g @angular/cli@latest

echo yarn Install
cmd /c yarn

echo Build
set PATH=%PATH%;C:\Users\Administrator\AppData\Roaming\npm;C:\Users\Administrator\AppData\Roaming\npm\node_modules\@angular\cli\bin;
ng build --prod --aot=true