RMT - это удобный инструмент, который помогает выпустить новые версии вашего программного обеспечения. Вы можете определить тип генератора версий, который вы хотите использовать (например, Semantic Versionsing), где вы хотите сохранить версию (например, в файле ChangeLog или в виде тега VCS) и список действий, которые должны выполняться до или после Выпуск новой версии.
Чтобы использовать RMT в вашем проекте, вы должны использовать композитор для его установки в качестве зависимости от развития. Просто перейдите в корневой каталог вашего проекта и выполните:
composer require --dev liip/rmt
Затем вы должны инициализировать RMT, выполнив следующую команду:
php vendor/liip/rmt/command.php init
Эта команда создаст файл конфигурации .rmt.yml
и исполняемый сценарий RMT
в корневой папке вашего проекта. Теперь вы можете начать использовать RMT, выполнив:
./RMT
Оказавшись там, ваш лучший вариант - выбрать один из примеров конфигурации ниже и адаптировать его к вашим потребностям.
Если вы используете инструмент размещения версий, мы рекомендуем добавить оба файла Composer ( composer.json
и composer.lock
), файл конфигурации RMT ( .rmt.yml
) и исполняемый сценарий RMT
. Справочник vendor
следует игнорировать, так как он заполняется при запуске composer install
.
Вы можете добавить RMT в свой Global Composer.json и получить его во всем мире для всех ваших проектов. Поэтому просто запустите следующую команду:
composer global require liip/rmt
Убедитесь, что у вас есть ~/.composer/vendor/bin/
в вашем пути.
RMT может быть установлен через Phar-Composer, который должен быть установлен для этого. Этот полезный инструмент позволяет вам создавать файлы Phar -Phar из пакетов Composer.
Если у вас установлен фар-композитор, вы можете запустить:
sudo phar-composer install liip/RMT
и иметь фар-композитор и установить файл phar в свой путь $, который затем позволяет запустить его просто как rmt
из командной строки или вы можете запустить
phar-composer build liip/RMT
и скопируйте полученный файл Phar вручную туда, где он вам нужен (либо сделайте файл phar, исполняемый через chmod +x rmt.phar
, и выполните его напрямую ./rmt.phar
либо запустите его, вызывая его через PHP через php rmt.phar
.
Для заменителя использования RMT любым вариантом, который вы решили использовать.
Если вы используете https://github.com/liip/drifter для своего проекта, вам просто нужно три шага
Активировать роль rmt
Перезагрузка проведисного vagrant provision
Init rmt для вашего проекта php /home/vagrant/.config/composer/vendor/liip/rmt/RMT
Использование RMT очень просто, просто запустите команду:
./RMT release
RMT затем выполнит следующие задачи:
Выполнить проверки предпосылок
Попросите пользователя ответить на вопросы потенциальных вопросов
Выполнить предварительные действия
Выпускать
Создайте новый номер версии
Сохраняйте новый номер версии
Выполнить действия после освобождения
Вот пример вывода:
Команда release
предоставляет основное поведение инструмента, доступны дополнительные дополнительные команды:
current
покажет номер текущей версии вашего проекта (версия псевдонима)
changes
отображают изменения, которые будут включены в следующее выпуск
config
отображения текущей конфигурации (уже объединенная)
init
создать (или сбросить) файл конфигурации .rmt.yml
Все конфигурации RMT должны быть сделаны в .rmt.yml
. Файл разделен на шесть корневых элементов:
vcs
: тип используемых вами VCS может быть git
, svn
или none
Для git
VCS вы можете использовать два следующих параметра sign-tag
и sign-commit
если вы хотите, чтобы GPG подписывает свой релиз
prerequisites
: список []
предпосылок, которые необходимо соответствовать перед началом процесса выпуска
pre-release-actions
: список []
действий, которые будут выполнены до процесса выпуска
version-generator
: генератор, который можно использовать для создания новой версии (обязательна)
version-persister
: Персистера для хранения версий (обязательно)
post-release-actions
: список []
действий, которые будут выполнены после выпуска
Все записи этой конфигурации работают одинаково. Вы должны указать класс, который вы хотите справиться с действием. Пример:
version-generator: "simple"` version-persister: vcs-tag: tag-prefix: "v_"
RMT также поддерживает конфигурации JSON, но мы рекомендуем использовать YAML.
Иногда вы хотите использовать другую стратегию выпуска в соответствии с филиалом VCS, например, вы хотите добавить записи изменений в master
-филиале. Для этого вы должны поместить конфигурацию по умолчанию в корневой элемент с именем _default
, затем вы можете переопределить части этой конфигурации по умолчанию для Manage master
. Пример:
_default: version-generator: "simple" version-persister: "vcs-tag" master: pre-release-actions: [changelog-update]
Вы можете использовать RMT config
чтобы увидеть результат слияния между _default и вашей текущей ветвей.
Стратегии генерации номеров версий.
Просто: этот генератор делает простой прирост (1,2,3 ...)
Семантика: генератор, который реализует семантическую версию
Два принудительного варианта может быть очень полезна, если вы решите, что данная филиала посвящена следующей бета -версии данной версии. Так что просто заставили этикетку к бета -версии, и все выпуск будет бета -шагом.
Опция allow-label
(boolean): чтобы позволить добавить метку в версию (например, -beta, -rcxx) (по умолчанию: false )
type
опции: чтобы заставить тип версии
Опционная label
: чтобы заставить этикетку
Класс, отвечающий за сохранение/получение номера версии.
VCS-TAG: Сохраните версию в качестве тега VCS
Опция tag-pattern
: разрешить предоставить регулярность, которую должен соответствовать все теги. Это позволяет, например, выпустить версию 1.xx в определенной ветви и выпустить 2.xx в отдельной филиале
Опция tag-prefix
: разрешить префиксу все теги VCS с помощью строки. Вы можете иметь цифровой серию, но теги поколения, такие как v_2.3.4
. В качестве бонуса вы можете использовать конкретный заполнитель: {branch-name}
, который автоматически внедрит текущее имя ветви в тег. Итак, используйте, простой генерация и tag-prefix: "{branch-name}_"
и он будет генерировать теги, как featureXY_1
, featureXY_2
и т. Д.
ChangeLog: Сохраните версию в файле ChangeLog
location
параметра: Имя файла Changelog местоположение (по умолчанию: Changelog )
Обязательные действия выполняются до интерактивной части.
working-copy-check
: Проверьте, что у вас нет никаких венчурных локальных изменений
Опция allow-ignore
: позвольте пользователю пропустить чек при выпуске с помощью --ignore-check
display-last-changes
: отображение последних изменений
tests-check
: запустите набор тестов Project
command
параметра: команда для запуска (по умолчанию: phpunit )
timeout
опции: количество секунд, после чего команда времени выходит (по умолчанию: 60.0 )
Опция expected_exit_code
: ожидаемый код возврата (по умолчанию: 0 )
composer-json-check
: запустите проверку на Composer.json
Опция composer
: Как запустить Composer (по умолчанию: php composer.phar )
composer-stability-check
: проверьте, устанавливается ли Composer.json на правильную минимальную стабильность
stability
опции: стабильность, которая должна быть установлена в поле минимальной стабильности (по умолчанию: стабильно )
composer-security-check
: запустите Composer.lock против https://github.com/fabpot/local-php-security-checker, чтобы проверить известные уязвимости в зависимостях.
Двоиц локальной проверки-метеорологической безопасности должен быть установлен во всем мире.
composer-dependency-stability-check
: тест, если только разрешенные зависимости используются версии разработки
Опция ignore-require
и ignore-require-dev
: не проверяйте зависимости в require
или require-dev
.
Вариант whitelist
: Позвольте конкретным зависимостям использовать версию разработки
command
: выполнить системную команду
Опция cmd
команда для выполнения
Опция live_output
Boolean, отображаем ли мы команды? (по умолчанию: true )
Опция timeout
целое число, ограничивает время для команды. (По умолчанию: 600 )
Опция stop_on_error
boolean, мы разбиваем процесс выпуска по ошибке? (по умолчанию: true )
Действия могут использоваться для частей до или после выпуска.
changelog-update
: обновить файл ChangeLog. Это действие дополнительно настроено для использования конкретного форматера.
format
опции: простой , семантический , разметка или добавление (по умолчанию: просто )
file
опции: Путь от .rmt.yml в файл изменений (по умолчанию: Changelog )
Опция dump-commits
: запишите все сообщения о коммите после последнего выпуска в файл Changelog (по умолчанию: false )
Опция insert-at
: только для форматерата AddTop: количество строк, чтобы пропустить из верхней части файла ChangeLog перед добавлением номера выпуска (по умолчанию: 0 )
Опция exclude-merge-commits
: Exclude Merge Commits из ChangeLog (по умолчанию: false )
vcs-commit
: COMMEAR FILEST WORPER COPY (используйте ее только с обязательным условием working-copy-check
)
Опция commit-message
: укажите пользовательское сообщение о коммите. % Версия% будет заменена на текущие / следующие строки версии.
vcs-tag
: отметьте последний коммит
vcs-publish
: опубликовать изменения (коммиты и теги)
composer-update
: Обновите номер версии в файле композитора (обратите внимание, что при использовании packagist.org рекомендуется не иметь тега в composer.json, поскольку версия обрабатывает теги управления версией)
files-update
: обновите версию в одном или нескольких файлах. Для каждого файла для обновления, пожалуйста, предоставьте массив с
file
опции: Путь к файлу для обновления
Опция pattern
: необязательно, используйте для указания шаблона замены строки в вашем файле. Например: const VERSION = '%version%';
build-phar-package
: создает пакет PHAR текущего проекта, чье имя файла зависит от опции «Пакет-имени» и развернутой версии: [Package-name]-[версия] .Phar
Опции package-name
: Имя пакета Generate
Опция destination
: каталог назначения для создания пакета. Если префикс с помощью удара, считается абсолютным, в противном случае относительно корня проекта.
Опция excluded-paths
: регулярность исключенных путей, непосредственно передаваемой методу Phar :: BuildfromDirectory. Пример: /^(?!.*cookbooks|.*.vagrant|.*.idea).*$/im
metadata
опции: массив метаданных, описывающих пакет. Бывший автор, проект. Примечание. Версия для выпуска добавлена по умолчанию, но может быть переопределена здесь.
Опция default-stub-cli
: заглушка по умолчанию для использования CLI пакета.
Опция default-stub-web
: заглушка по умолчанию для использования веб-приложения пакета.
command
: выполнить системную команду
Опция cmd
команда для выполнения
Опция live_output
Boolean, отображаем ли мы команды? (по умолчанию: true )
Опция timeout
целое число, ограничивает время для команды. (По умолчанию: 600 )
Опция stop_on_error
boolean, мы разбиваем процесс выпуска по ошибке? (по умолчанию: true )
update-version-class
: обновите постоянную версию в файле класса. Устарел, используйте files-update
вместо этого
class
опций: Путь к классу, который будет обновлен, или полностью квалифицированное имя класса класса, содержащее версию
Опция pattern
: необязательно, используйте для указания шаблона замены строки в классе версии. % Версия% будет заменена на текущие / следующие строки версии. Например, вы можете использовать const VERSION = '%version%';
Полем Если вы не указали эту опцию, каждое появление строки версии в файле будет заменено.
RMT предоставляет некоторые существующие действия, генераторы и персистры. При необходимости вы можете добавить свой собственный, создав сценарий PHP в вашем проекте и ссылались на его в конфигурации по его относительному пути:
version-generator: "bin/myOwnGenerator.php"
Пример с инъекционными параметрами:
version-persister: name: "bin/myOwnGenerator.php" parameter1: value1
В качестве примера вы можете посмотреть на Script /bin/updateapplicationVersionCurrentVersion.php, настроенный здесь.
Предупреждение: поскольку name
ключа используется для определения имени объекта, у вас не может быть name
параметр с именем.
В большинстве случаев вам будет легче забрать пример ниже и адаптировать его к вашим потребностям.
version-generator: semantic version-persister: changelog
vcs: git version-generator: simple version-persister: vcs-tag prerequisites: [working-copy-check, display-last-changes]
vcs: git version-generator: simple version-persister: vcs-tag prerequisites: - composer-json-check - composer-stability-check: stability: beta - composer-dependency-stability-check: whitelist: - [symfony/console] - [phpunit/phpunit, require-dev]
vcs: name: git sign-tag: true sign-commit: true version-generator: simple version-persister: vcs-tag prerequisites: [working-copy-check, display-last-changes]
vcs: git version-generator: semantic version-persister: name: vcs-tag tag-prefix : "v_" pre-release-actions: files-update: - [config.yml] - [app.ini, 'dynamic-version: %version%'] post-release-actions: [vcs-publish]
_default: vcs: git prerequisites: [working-copy-check] version-generator: simple version-persister: name: vcs-tag tag-prefix: "{branch-name}_" post-release-actions: [vcs-publish] # This entry allow to override some parameters for the master branch master: prerequisites: [working-copy-check, display-last-changes] pre-release-actions: changelog-update: format: markdown file: CHANGELOG.md dump-commits: true update-version-class: class: DoctrineODMPHPCRVersion pattern: const VERSION = '%version%'; vcs-commit: ~ version-generator: semantic version-persister: vcs-tag
Если вы хотите помочь, отправив один из ваших сценариев действий, генераторов или персистенсов. Или просто сообщив об ошибке, просто перейдите на страницу проекта https://github.com/liip/rmt.
Если вы предоставите PR, попробуйте связать его с некоторыми модуль или функциональными тестами. Смотрите следующий раздел
Чтобы иметь возможность запустить тесты локально, вам нужно:
Phpunit
git
ртутный
Вы можете установить их все с помощью варева:
> brew install phpunit git hg
Тесты также тестируют создание RMT Phar. Таким образом, вы должны разрешить это в своем php.ini, не покинув эту линию:
phar.readonly = Off
Наконец, чтобы запустить тесты, просто запустите Phpunit
> phpunit
Функциональные тесты являются полностью функциональной временной настройкой RMT. Каждый раз, когда вы запускаете функциональный тест, он создает временную папку с проектом RMT. Затем тестовый набор запускает команды RMT на нем и проверяйте результаты. Вот почему вам нужно установить git и mercurial.
Чтобы отлаживать функциональные тесты RMT, лучше всего перейти в эту временную папку и вручную изучить проект. Для этого просто добавьте небольшую $this->manualDebug();
в испытательный набор. Это нарушит тест со следующим выходом:
MANUAL DEBUG Go to: > cd /private/var/folders/hl/gnj5dcj55gbc93pcgrjxbb0w0000gn/T/ceN2Mf
Тогда вам просто нужно перейти в упомянутую папку и начать отладку
Джонатан Мачерет, Liip SA
Дэвид Жанмонод Liip SA
и другие участники
RMT лицензирован по лицензии MIT. Смотрите файл лицензии для получения подробной информации.