Параллельные шаги сборки в Team City

Я новичок в Team City, и передо мной стояла задача создать CI-сборку.

Я пытаюсь создать приложение angular2 с тестами транспортира e2e.

Все остальные шаги сборки в Team City выполняются нормально, но у меня возникают проблемы с попыткой запустить шаг, на котором выполняется тест e2e.

если бы я делал это локально, я бы открыл окно cmd и набрал ...

npm run start

Затем я открывал другое командное окно и набирал ...

npm run e2e 

Как выполнить параллельные шаги в Team City?


person dazziep    schedule 03.02.2016    source источник


Ответы (2)


Шаги сборки нельзя запускать параллельно в TeamCity. Что вам нужно сделать, так это создать сценарий, который запускает npm run start в фоновом режиме, а затем запускает npm run e2e. Вы можете использовать бегун командной строки для запуска скрипта

person Oleg Rybak    schedule 03.02.2016
comment
да, я попытался создать сценарий добавления npm, который бы это сделал, но он просто зависает после запуска сервера .. serve-e2e: npm run server: dev & npm run e2e, - person dazziep; 03.02.2016
comment
Команда npm run server: dev не запускает сервер в фоновом режиме. Он запускает сервер и ждет возврата команды, чего никогда не происходит. Вам необходимо использовать такие инструменты, как npmjs.com/package/forever, чтобы запустить сервер в фоновом режиме. - person Oleg Rybak; 03.02.2016
comment
знаете ли вы, как / если вы можете использовать его напрямую для запуска команд npm npm run server:dev, поскольку похоже, что он запускает js-скрипт forever start app.js, извините за то, что показался здесь глупым. - person dazziep; 03.02.2016
comment
Я не знаю точного решения, но этот ответ на вопрос SO stackoverflow.com/a/33424241/256776 и это Обсуждение github github.com/foreverjs/forever/issues/540 может иметь некоторые идеи - person Oleg Rybak; 03.02.2016

Я все еще не мог заставить вечную вещь работать у меня должным образом, поэтому я создал свой собственный скрипт узла, который запускает live-сервер, а затем выполняет npm run e2e, и, похоже, это помогло, спасибо за вашу помощь, хотя Олег.

Вот как у меня получилось в итоге ...

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');
});
person dazziep    schedule 03.02.2016