Интеграция Jenkins с Grunt

Я установил Jenkins v1.550 на Windows Server 2008 R2. На данный момент он работает как служба в http://localhost:8080. Я вошел в систему как администратор. Я установил Node.js и могу запускать npm из командной строки.

Я также установил плагин NodeJS v0.2.1 для Jenkins. Затем я вошел в раздел «Настроить систему» ​​Jenkins, прокрутил вниз до установок NodeJS, нажал кнопку «Добавить NodeJS», дал «NodeJS» в качестве имени и «C: \ Program Files \ nodejs» в качестве пути к каталогу установки. Я не проверял опцию «Установить автоматически», поскольку прочитал на странице плагина, что он доступен только для Linux.

Затем я создал новое задание, установил флажок «Предоставить узел и npm bin / папку для PATH», создал новый этап сборки для «Выполнить пакетную команду Windows» и набрал «node --version» и «grunt - версия "и сохранил.

Я выполнил задание, и вот результат -

Building in workspace C:\Program Files (x86)\Jenkins\workspace\Test_1.0
[Test_1.0] $ cmd /c call C:\Windows\TEMP\hudson1381541243088903083.bat

C:\Program Files (x86)\Jenkins\workspace\Test_1.0>node --version 
v0.10.24

C:\Program Files (x86)\Jenkins\workspace\Test_1.0>grunt --version 
'grunt' is not recognized as an internal or external command,
operable program or batch file.

C:\Program Files (x86)\Jenkins\workspace\Test_1.0>exit 9009 
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

Похоже, что не удалось найти grunt-cli для учетной записи пользователя, в которой Jenkins работает в (Система). Я пытался установить grunt cli глобально (npm install -g grunt-cli), а также grunt локально (npm install grunt). Не повезло.

Может кто-нибудь помочь?


person tempid    schedule 13.02.2014    source источник
comment
Вам все еще нужна помощь?   -  person dcodesmith    schedule 14.02.2014
comment
У кого-нибудь есть средство от этого?   -  person mgibas    schedule 20.02.2014


Ответы (5)


для удобной настройки самостоятельно устанавливаемых nodejs на машине я рекомендую отличный -> http://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

он установит nodejs и grunt на машину, через простой в использовании веб-интерфейс, оболочка не требуется

Затем задания jenkins могут просто запускать шаги сборки nodejs, эй, готово

вовлеченные шаги:

а) установите это на свой экземпляр jenkins -> http://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

б) создать установку nodejs на jenkins

go to

http://URL_OF_JENKINS/jenkins/configure
  • NodeJS-> Установка NodeJS -> Добавить NodeJS -> Name = "NodeJS 0.11.10", отметьте "Установить автоматически", выберите "Установить с nodejs.org", добавьте "grunt-cli" к глобально установленным пакетам.

c) создать задание с задачей сборки "выполнить скрипт NodeJS"

var sys = require('sys');
sys.puts('NodeJS Test');
sys.puts('***************');
sys.puts('helloworld');

воля :)

запустите задание и посмотрите, как запускается скрипт nodejs,

из их мира - это ваша устрица, вы можете использовать grunt, отметив «Предоставить папку Node / npm bin в PATH» и запустив задачу сборки «выполнить оболочку»

npm update
grunt
grunt --force reporting
person aqm    schedule 25.02.2014
comment
Спасибо за Ваш ответ. Я уже заходил по указанной вами ссылке. Автоматическая установка работает только на машинах Linux x86 / 64, а не на Windows, которую я использую. - person tempid; 28.02.2014

Вам нужно будет перезапустить службу Jenkins после установки узла, предположительно, чтобы заставить его обновить свою кэшированную копию вашей переменной среды PATH.

person Andrew Bullock    schedule 11.04.2014

Я хрюкал, выполняя за меня некоторые задачи в Jenkins, но я пошел по маршруту сценария npm. Grunt и grunt-cli являются зависимостями разработчиков, и в моем файле package.json определено следующее:

"scripts": {
    "test": "node node_modules/grunt-cli/bin/grunt test"
},

В Jenkins (работающем в Windows) я добавил две задачи после сборки:

npm install

npm test

Мы просто установили NodeJs на сервер Jenkins.

person Stuart    schedule 01.05.2014
comment
Но я думаю, что это своего рода взлом, хотя я его использовал - person JohnTheBeloved; 02.09.2015
comment
вместо папки grunt cli я использовал папку .bin и имя скрипта build. Затем в jenkins просто вызвал npm run build. Работал отлично и не угонял тестовый скрипт. Полный пример: build: node_modules / .bin / grunt build - person Frank; 10.07.2018

Другое решение, которое сработало для меня в Windows, - использовать полный путь к файлу grunt exec, который можно найти, написав "where grunt" в командной оболочке. Я использовал полный путь в штатном bat-файле.

person user3114859    schedule 13.05.2014

Была такая же проблема в Windows. Когда я вручную установил узел и запустил npm install -g grunt-cli из командной строки, Дженкинс не смог распознать команду grunt. Итак, удалите узел, переустановите его, но не запускайте npm install. Затем перезапустите раб jenkins. Затем из задания jenkins, которое выполняется на вашем конкретном ведомом устройстве jenkins, запустите пакетную команду Windows, которая запускает npm install -g grunt-cli. После этого снова перезапустите службу jenkins. Затем из задания запустите npm install. Потом у меня все заработало. Если проблемы по-прежнему не устранены, удалите подчиненное устройство и переустановите его, и все сразу будет работать нормально.

person vanval    schedule 19.01.2016