npm install
npm run lint
npm run stylelint
npm test
для интеграционных тестов на локальной машине нужно установить selenium-standalone
npm i --global selenium-standalone
selenium-standalone install
для запуска тестов нужно запустить selenium
selenium-standalone start
и приложение, настроенное на тестовый git-репозиторий
npm run hermioneTestServer
и, наконец, непосредственно тесты (с предварительным клонированием тестового репозитория и его последующим удалением):
npm run hermioneLocal
скрипт npm run hermione
предназначен для выполнения в режиме CI и настроен на внешний selenium-grid (sauceLabs)
npm run dev
npm start
Приложение сделано максимально примитивно (показалось достаточным для поставленной задачи, не обессудьте!) на комбинации Express.js и шаблонизатора Pug.js
Работа с git-клиентом происходит через командную строку (класс server/GitApi.js). На всякий случай в связи с этим в Dockerfile включено обновление git-клиента.
Настройки приложения передаются через файл app.properties. Также есть возможность перегрузить настроечный файл, передав путь к альтернативному файлу первым аргументом в npm run (это требуется для автоматического интеграционного тестирования).
в Travis-CI и Heroku удалось настроить следующий flow:
-
- При коммите в любую ветку происходит выполнение юнит-тестов и линтеров
- Производится сборка докер образа и пушится в репозиторий приложения https://shri-2018-nodejs-homework-test.herokuapp.com/
- Выполняются интеграционные тесты (гермиона) на вышеуказанном приложении
-
- При коммите в мастер ветку (без тэгов) происходит то же, что и в предыдущем пункте
- Затем делается pull образа тестового приложения и push этого образа в staging приложение https://shri-2018-nodejs-homework-stag.herokuapp.com/
-
- При коммите тэга происходит то же, что и в первом пункте
- Затем делается pull образа тестового приложения и push этого образа в production приложение https://shri-2018-nodejs-homework-prod.herokuapp.com/
-
- Pull-реквесты обрабатываются по первому пункту
- Review приложение поднимается на основании Dockerfile'а (сборка и запуск докер образа) полностью силами Heroku в автоматическом режиме