2015-03-03 3 views
2

С веб-приложение. Я работаю, мы используем Gulp для компиляции некоторых таблиц стилей и скриптов. Эти скомпилированные файлы используются веб-приложением.Узел/Gulp с TFS строит

Когда мы разрабатываем локально, у нас нет полного процесса компиляции, потому что он занимает около 50 секунд.

Когда мы регистрируемся в TFS, мы хотим, чтобы сборка выполняла полную компиляцию как часть закрытой регистрации.

Наша проблема заключается в том, что dev-ops не позволит нам установить узел на машинах сборки.

Как мы можем запустить задачу Gulp TFS при регистрации без установки узла?

+6

Нелепо, что они «не позволят» установить на компьютере машину критического разработчика, которая предназначена для экономии времени автоматизации. В чем их причина? Сервер сборки должен быть как можно ближе к рабочей станции разработчика. Если разработчики используют узловые инструменты, узел должен находиться на сервере сборки. Конец истории. –

+1

Я второй Даниэль. Вы должны эскалировать это как проблему блокировки, пока не дойдете до того, кто сможет справиться с этим. –

ответ

2

Я бы сказал, что это похоже на проблему у людей, когда они не могут sudo. Isaac Schlueter писал this great Gist, где, по крайней мере, один из вариантов установки узла и, следовательно, npm должен работать на вас. Я тестировал его первым.

TL; DR

Построить node.js и, следовательно, npm локально, на сервере сборки или в свой репозиторий и запустить их местные БИН-файлы вручную. Недостаток: в конце концов вы считаете, что это установка, так или иначе задача сборки может работать очень долго.

Alternative

Пусть они обеспечивают вам узел на основе открытого исходного сборки сервера, как Strider в вашей сети. Для удобства: есть также предварительно сконфигурированный docker container.

Как бы то ни было, решение требует наличия достаточных прав доступа к строительной машине, поскольку установка gulp попытается создать собственный код. Также python должен быть установлен, поскольку node.gyp полагается на него.

Отправной точкой является ваше репо, в котором вы должны установить узел в любой папке зависимостей. Это может произойти полностью или частично как сценарий оболочки на машине сборки.

mkdir deps && cd $_ 
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip- components=1 
cd node-v0.12.0 
./configure 
make install 
curl https://www.npmjs.org/install.sh | sh 

Это должно сделать вас чем-то вроде ниже.

. 
├── node_modules 
├── deps 
| └── node-v0.12.0 
├── client 
| ├── scss 
| | └── somestyle.scss 
| ├── css 
| | └── somestyle.css 
| ├── footer.html 
| └── header.html 
├── Gulpfile.js 
├── app.js 
├── package.json 

Теперь запустить из корня проекта.

# local npm install ... 
./deps/node-v0.12.0/deps/npm/bin/npm-cli.js install gulp 
# and to run your Gulpfile default task 
./node_modules/gulp/bin/gulp.js 

Есть много решений пути, которые могут привести к тому же результату, но вращаются вокруг какой-то идеи, как показано на рисунке выше.