RMT是一個方便的工具,可幫助釋放軟件的新版本。您可以定義要使用的版本生成器的類型(例如語義版本,例如要存儲版本(例如,在變更文件中或作為VCS標籤)以及在該版本之前或之後應執行的操作列表發布新版本。
為了在項目中使用RMT,您應該使用作曲家將其作為Dev依賴性安裝。只需轉到項目的根目錄並執行:
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添加到您的全球composer.json,並在所有項目上為全球提供。因此,只需運行以下命令:
composer global require liip/rmt
確保您的$路徑中有~/.composer/vendor/bin/
。
RMT可以通過PHAR-COMPOSER安裝,需要安裝。這個有用的工具使您可以從作曲家軟件包創建可運行的PHAR文件。
如果您安裝了Phar-Composer,則可以運行:
sudo phar-composer install liip/RMT
並讓Phar-Composer構建並安裝Phar文件到您的$路徑,然後允許您簡單地rmt
中運行它,或者您可以運行
phar-composer build liip/RMT
並將生成的PHAR文件手動複製到您需要的位置(可以通過chmod +x rmt.phar
執行PHAR文件並直接執行./rmt.phar
,或通過通過PHP通過php rmt.phar
調用它來運行它。
對於使用替代RMT,您決定使用的任何變體。
如果您正在使用https://github.com/liip/drifter進行項目,則只需要三個步驟
激活rmt
角色
重新運行供應範圍vagrant provision
您的項目php /home/vagrant/.config/composer/vendor/liip/rmt/RMT
vendor/liip/rmt/rmt/rmt的init rmt
使用RMT非常簡單,只需運行命令:
./RMT release
然後,RMT將執行以下任務:
執行先決條件檢查
要求用戶回答潛在問題
執行預發行措施
發布
生成新版本號碼
堅持新版本號碼
執行釋放後的操作
這是一個示例輸出:
release
命令提供了該工具的主要行為,還有其他一些額外的命令可用:
current
將顯示您的項目當前版本號(別名版本)
changes
顯示將在下一個版本中合併的更改
config
顯示當前配置(已經合併)
init
創建(或重置).rmt.yml配置文件
所有RMT配置都必須在.rmt.yml
中進行。該文件分為六個根元素:
vcs
:您使用的VC類型,可以是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
分支中添加ChangElog條目。為此,您必須將默認配置放入名為_default
的根元素中,然後您可以覆蓋該分支master
的默認配置的一部分。例子:
_default: version-generator: "simple" version-persister: "vcs-tag" master: pre-release-actions: [changelog-update]
您可以使用命令RMT config
來查看_default和您當前分支之間的合併結果。
建造版本的數字生成策略。
簡單:該發電機正在做一個簡單的增量(1,2,3 ...)
語義:實現語義版本的發電機
如果您確定給定分支專用於給定版本的下一個Beta,則兩個強制選項可能非常有用。因此,只需將標籤迫使Beta,所有版本都將是Beta增量。
選項allow-label
(布爾值):允許在版本上添加標籤(例如-beta,-rcxx)(默認值: false )
選項type
:強製版本類型
選項label
:強制標籤
負責保存/檢索版本號的班級。
VCS標籤:將版本保存為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
:檢查您是否沒有任何VCS本地更改
選項allow-ignore
:允許用戶在使用--ignore-check
進行版本時跳過檢查
display-last-changes
:顯示您的最後更改
tests-check
:運行項目測試套件
選項command
:運行命令(默認: phpunit )
選項timeout
:命令限制的秒數(默認值: 60.0 )
選項expected_exit_code
:預期返回代碼(默認值: 0 )
composer-json-check
:在Composer.json上運行驗證
選項composer
:如何運行作曲家(默認: PHP Composer.phar )
composer-stability-check
:將檢查composer.json是否設置為正確的最小穩定性
期權stability
:應在最低穩定性字段中設置的穩定性(默認:穩定)
composer-security-check
:對https://github.com/fabpot/local-php-security-checker運行Composer.lock,以檢查依賴關係中的已知漏洞。
本地php-security-Checker二進制必須在全球安裝。
composer-dependency-stability-check
:測試僅允許依賴項使用開發版本
選項ignore-require
和ignore-require-dev
:請勿檢查require
或require-dev
部分中的依賴項
選項whitelist
:允許特定的依賴性使用開發版本
command
:執行系統命令
選項cmd
命令執行
選項live_output
布爾值,我們顯示命令輸出嗎? (默認: true )
選項timeout
整數,限制命令的時間。 (默認: 600 )
選項stop_on_error
boolean,我們是否打破錯誤的發布過程? (默認: true )
動作可用於發布或郵政部件。
changelog-update
:更新ChangElog文件。此操作進一步配置為使用特定的格式。
選項format
:簡單,語義,宣傳或addtop (默認:簡單)
選項file
:從.rmt.yml到ChangElog文件的路徑(默認: changelog )
選項dump-commits
:自上次版本以來,將所有提交消息寫入ChangElog文件(默認: false )
選項insert-at
:僅適用於addtop formatter:在添加釋放號之前,要從changelog文件頂部跳過的行數(默認值: 0 )
選項exclude-merge-commits
:排除changElog的合併提交(默認: false )
vcs-commit
:提交工作副本的所有文件(僅與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
:生成軟件包的名稱
選項destination
:將包裝構建到的目標目錄。如果以斜線為前綴,則認為是絕對的,否則相對於項目根。
選項excluded-paths
:排除路徑的正則直接傳遞給PHAR :: build fromDirectory方法。 ex: /^(?!.*cookbooks|.*.vagrant|.*.idea).*$/im
/im
選項metadata
:描述軟件包的元數據數組。前作者,項目。注意:默認情況下添加了發行版本,但可以在此處覆蓋。
選項default-stub-cli
:包含包的CLI使用的默認存根。
選項default-stub-web
:軟件包的Web應用程序使用段的默認存根。
command
:執行系統命令
選項cmd
命令執行
選項live_output
布爾值,我們顯示命令輸出嗎? (默認: 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
如果您想提供幫助,請提交您的操作腳本,發電機或persister之一。或僅通過報告錯誤,只需訪問項目頁面https://github.com/liip/rmt即可。
如果提供PR,請嘗試將其關聯一些單元或功能測試。請參閱下一節
為了能夠在本地進行測試,您需要:
phpunit
git
墨西哥
您可以與Brew一起安裝所有這些:
> 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
然後,您只需要進入上述文件夾並開始調試
喬納森(Jonathan)
David Jeanmonod Liip SA
和其他貢獻者
RMT已獲得MIT許可證的許可。有關詳細信息,請參見許可證文件。