Проблема с параллельными сборками, вероятно, может быть докеризована. Например, одна команда для построения в $ 1:
docker run -it --rm -v $(pwd)/$1:/srv -w=/srv node:8.11.3 "npm install && npm install --only-dev && npm run build_stage && echo build created"
Тогда у вас нет каталога изменений событий. Что это будет делать:
docker run
- в интерактивном режиме -
-it
- очистка после завершения процесса -
--rm
- смонтировать каталог проекта в каталог контейнера
/srv
- -v $(pwd)/$1:/srv
- установить рабочий каталог -
-w=/srv
- с использованием изображения -
node:8.11.3
- и команда -
npm install --global bower ng-cli && npm install && npm install --only-dev && npm run build_stage && echo build created
После завершения проект под $1
будет построен так, как если бы он был построен на хост-машине.
Тогда у вас будет три таких команды (согласно вашему сценарию), и вы сможете запускать их параллельно. Для иллюстрации сценария:
parallel --halt 2 ::: \
"docker run -it --rm -v $(pwd)/$1:/srv -w=/srv \
node:8.11.3 sh -c 'npm install --global bower ng-cli && npm install && npm install --only-dev && npm run build_stage && echo $1 build created'"
"docker run -it --rm -v $(pwd)/$2:/srv -w=/srv \
node:8.11.3 sh -c 'npm install --global bower ng-cli && npm install && npm install --only-dev && npm run build && echo $2 build created'"
"docker run -it --rm -v $(pwd)/$3:/srv -w=/srv \
node:8.11.3 sh -c 'npm install --global bower ng-cli && bower --allow-root install'"
Обратите внимание, что команды в этом примере не являются точными наборами обезьян для иллюстрации и не проверены.