advanced-build-conditions
v3.0.0-8
Published
Набор инструментов для выставления статуса сборки
Downloads
10
Readme
advanced build conditions
Решение для выставление статусов сборки ct(continues test) на основе дополнительных проверок, основанных на результатах проверок unit тестов, линтеров и т.д.
Установка
npm i advanced-build-conditions@^2.0.2-beta --save-dev
Требования
- NodeJs 8+
- npm5
- linux(желательно)
Использование
nodejs module
const buildFailedConditions = require('buildFailedConditions'),
procCwd = process.cwd(),
// for use that npm install eslint-teamcity --save
eslintTeamcity = require('eslint-teamcity'),
// for use that npm install eslint --save
eslintCodeframe = require('eslint/lib/formatters/codeframe');
let config = {eslint: {}, teamcity: {}};
config.eslint = {
masterPath: `checkoutDir/advanced-build-conditions`
masterJSON: `checkoutDir/advanced-build-conditions/spec/fixtures/masterJSON.json`,
currentJSON: `checkoutDir/advanced-build-conditions/spec/fixtures/currentJSON.json`
resultJSON: 'checkoutDir/advanced-build-conditions/spec/fixtures/resultJSON.json'
};
config.teamcity = {
login: testUsername,
pass: testPassword,
host: testHost,
buildTypeId: testBuildTypeId,
masterBranch: testMasterBranch
};
config.local = !process.env.TEAMCITY_VERSION;
console.log(buildFailedConditions(config));
Описание:
config.eslint.masterPath - путь к базовой директории,директории в которую происходит чекаут(локально) config.eslint.masterJSON - путь к json с сервера, json с результатами проверки мастер ветки. Если параметр отстутсвует, то json будет скачан с сервера на основании конфигурации config.teamcity. config.eslint.currentJSON - путь к текущему json, полученному как результат проверки eslint с форматтером json и выводом по указанному пути config.eslint.resultJSON - путь, по которому будет сохранён JSON с новыми ошибками.
Конфигурация teamcity
Для использования получения config.eslint.masterJSON с сервера с использованием модуля teamcity необходимо:
- на вкладке
General Settings
настроек проекта сборки выставитьBuild number format:
в значение%teamcity.build.branch%
. - заполнить/дополнить поле
Artifact paths:
таким образом, что-бы папка, указанная как путь к resultJSON в конфигурации
Grunt таск
Скоро... есть прототип, заведена задача #13
Модули
Teamcity
Позволяет взаимодействовать с teamcity по REST и teamcity service messages.
Eslint
Умеет сравнивать 2 результата проверок codestyle и выявляет униклаьные
Участие в разработке
Задачи и обсуждения заводятся в issue.
Проверка codestyle и запуск юнит-тестов выполняется автоматически
по PR в репозиторий. Для локального запуска тестов и проверок codestyle необходимо запустить
соответственно npm test
и npm codestyle
Внимание - известные ограничения
Если в путях присутствуют пробелы, то модуль работать не будет!
Полезные ссылки
TODO:
- убрать:
- убрать лишние параметры:
- config.eslint.masterPath на ci можно узнать из переменной окружения, локльно поиском package/.git
- переделать api главного модуля:
{onMetricChange, onCommandExecuteFail, onCustomFunctionExecuteResultFail} = require('advanced-build-conditions');
- onMetricChange может принимать что-то вроде
илиeslintViolations:{ compare: [>|<|=|!=], with: ['local'|'master'|'function'] }
eslintViolations > master
/eslintViolations != master
/karmaCoverage < master
- использовать lib @XFree/grunt-eslint-differ
- убрать лишние параметры: