RMT는 새로운 버전의 소프트웨어를 출시하는 데 도움이되는 편리한 도구입니다. 사용하려는 버전 생성기 (예 : Semantic Versioning), 버전 (예 : Changelog 파일 또는 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
실행할 때 채워져 있기 때문에 무시해야합니다.
Global Composer.json에 RMT를 추가하여 모든 프로젝트에 대해 전 세계적으로 사용할 수 있습니다. 따라서 다음 명령을 실행할 수 있습니다.
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 파일을 실행할 수있게하고 직접 실행하거나 php rmt.phar
./rmt.phar
통해 PHP를 통해 실행하여 실행하십시오.
사용하기로 결정한 변형과 함께 사용 대체 RMT의 경우.
프로젝트에 https://github.com/liip/drifter를 사용하는 경우 3 단계 만 있으면됩니다.
rmt
역할을 활성화하십시오
프로비저닝 vagrant provision
다시 실행하십시오
프로젝트 php /home/vagrant/.config/composer/vendor/liip/rmt/RMT
에 대한 RMT를 시작하십시오
RMT를 사용하는 것은 매우 간단합니다. 명령 만 실행합니다.
./RMT release
그런 다음 RMT는 다음 작업을 실행합니다.
전제 조건 수표를 실행하십시오
잠재적 질문에 답변하도록 사용자에게 요청하십시오
사전 방출 조치를 실행하십시오
풀어 주다
새 버전 번호를 생성합니다
새 버전 번호를 지속하십시오
방출 후 작업을 실행하십시오
예제 출력은 다음과 같습니다.
release
명령은 도구의 주요 동작을 제공하며 추가 추가 명령을 사용할 수 있습니다.
current
프로젝트가 현재 버전 번호 (별칭 버전)를 표시합니다.
changes
다음 릴리스에 포함될 변경 사항을 표시합니다.
config
현재 구성 (이미 병합) 표시
.rmt.yml 구성 파일을 작성 (또는 재설정) init
모든 RMT 구성은 .rmt.yml
로 수행해야합니다. 파일은 6 개의 루트 요소로 나뉩니다.
vcs
: 사용중인 VC의 유형은 git
, svn
또는 none
일 수 있습니다.
git
VC의 경우 GPG에 서명하려면 다음 두 가지 옵션 sign-tag
및 sign-commit
사용할 수 있습니다.
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
라는 루트 요소에 배치해야합니다. 그러면 Branch master
의 기본 구성의 일부를 대체 할 수 있습니다. 예:
_default: version-generator: "simple" version-persister: "vcs-tag" master: pre-release-actions: [changelog-update]
명령 RMT config
사용하여 _Default와 현재 분기 간의 병합 결과를 확인할 수 있습니다.
빌드 인 버전 번호 생성 전략.
단순 :이 생성기는 간단한 증분을 수행합니다 (1,2,3 ...)
시맨틱 : 시맨틱 버전화를 구현하는 발전기
주어진 지점이 주어진 버전의 다음 베타 버전에 전념한다고 결정하면 두 강제 옵션이 매우 유용 할 수 있습니다. 따라서 레이블을 베타로 강제로 강제하면 모든 릴리스가 베타 증분이됩니다.
옵션 allow-label
(부울) : 버전에 레이블을 추가 할 수 있도록 (예 : -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
: VCS 로컬 변경 사항이 없는지 확인하십시오.
옵션 allow-ignore
: 릴리스를 수행 할 때 사용자가 수표를 건너 뛰도록 허용합니다 --ignore-check
display-last-changes
: 마지막 변경 사항을 표시합니다
tests-check
: 프로젝트 테스트 스위트를 실행하십시오
옵션 command
: 실행 명령 (기본값 : phpunit )
옵션 timeout
: 명령 시간 이후 초 (기본값 : 60.0 )
옵션 expected_exit_code
: 예상 반환 코드 (기본값 : 0 )
composer-json-check
: Composer.json에서 Validate를 실행하십시오
옵션 composer
: 작곡가 실행 방법 (기본값 : PHP Composer.phar )
composer-stability-check
: Composer.json이 올바른 최소 안정성으로 설정되어 있는지 확인합니다.
옵션 stability
: 최소 안정성 필드에서 설정 해야하는 안정성 (기본값 : 안정 )
composer-security-check
: Composer.lock을 https://github.com/fabpot/local-php-security-checker에 대해 실행하여 종속성에서 알려진 취약점을 확인하십시오.
Local-PHP-Security-Checker Binary는 전 세계적으로 설치해야합니다.
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 파일을 업데이트하십시오. 이 동작은 특정 Formatter를 사용하도록 추가로 구성됩니다.
옵션 format
: 단순 , 시맨틱 , 마크 다운 또는 추가 (기본값 : 단순 )
옵션 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
: Composer 파일에서 버전 번호를 업데이트합니다 (packagist.org를 사용할 때는 버전이 버전 제어 태그별로 핸들링되므로 Composer.json에 태그가없는 것이 좋습니다).
files-update
: 버전을 하나 또는 여러 파일로 업데이트합니다. 각 파일을 업데이트하려면 배열을 제공하십시오.
옵션 file
: 파일의 경로를 업데이트합니다
옵션 pattern
: 선택 사항, 파일의 문자열 교체 패턴을 지정하는 데 사용하십시오. 예를 들어 : const VERSION = '%version%';
build-phar-package
: 파일 이름이 'Package-Name'옵션 및 배포 된 버전에 의존하는 현재 프로젝트의 PHAR 패키지를 작성합니다.
옵션 package-name
: 생성 패키지의 이름
옵션 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
예를 들어, 여기에서 구성된 스크립트 /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
그런 다음 언급 된 폴더로 가서 디버깅을 시작해야합니다.
Jonathan Macheret, Liip SA
David Jeanmonod Liip SA
그리고 다른 기고자들
RMT는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.