团队城市中的并行构建步骤

4

我对Team City还比较陌生,现在的任务是创建一个CI构建。

我要构建的是一个带有Protractor端到端测试的Angular2应用程序。

Team City中的所有其他构建步骤都运行良好,但我在尝试运行执行e2e测试的步骤时遇到了问题。

如果我想在本地运行这个步骤,我会打开一个cmd窗口并输入...

npm run start

我会打开另一个命令窗口并键入...
npm run e2e 

如何在Team City中运行并行步骤?

2个回答

6

在TeamCity中,构建步骤无法并行运行。您需要创建一个脚本,在后台运行“npm run start”,然后运行“npm run e2e”。您可以使用命令行运行器来运行该脚本。


是的,我尝试创建一个npm脚本来完成这个任务,但在启动服务器后它就一直卡住了。"serve-e2e": "npm run server:dev&npm run e2e", - dazziep
1
命令“npm run server:dev”不能在后台运行服务器。它会启动服务器并等待命令返回,但这永远不会发生。您需要使用类似 https://www.npmjs.com/package/forever 的工具在后台运行服务器。 - Oleg Rybak
你知道如何/是否可以直接使用它来启动npm命令npm run server:dev,因为它似乎会触发js脚本forever start app.js,抱歉在这里看起来有些愚蠢。 - dazziep
我不知道确切的解决方案,但是这个SO问题的答案http://stackoverflow.com/a/33424241/256776和这个github讨论https://github.com/foreverjs/forever/issues/540可能会有一些想法。 - Oleg Rybak

3

我仍然无法使永久性的事情对我正常工作,所以我创建了自己的节点脚本,启动 live-server,然后执行 npm run e2e。这似乎解决了问题,谢谢 Oleg 的帮助。

最终我是这样做的...

const exec = require('child_process').exec;
var psTree = require('ps-tree');

const server = exec('live-server ./dist --port=3000 --no-browser');
const tests = exec('npm run e2e');

tests.stdout.on('data', function(data) {
  console.log(data);
});
tests.stderr.on('data', function(data) {
  console.log(data);
});
tests.on('close', function(code) {
  console.log('closing code: ' + code);
  exec('taskkill /PID ' + server.pid + ' /T /F');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接