RMT เป็นเครื่องมือที่มีประโยชน์ในการช่วยปล่อยซอฟต์แวร์เวอร์ชันใหม่ของคุณ คุณสามารถกำหนดประเภทของเครื่องกำเนิดรุ่นที่คุณต้องการใช้ (เช่นการกำหนดเวอร์ชันความหมาย) ซึ่งคุณต้องการจัดเก็บเวอร์ชัน (เช่นในไฟล์ changelog หรือเป็นแท็ก VCS) และรายการการกระทำที่ควรดำเนินการก่อนหรือหลัง เปิดตัวเวอร์ชันใหม่
ในการใช้ RMT ในโครงการของคุณคุณควรใช้นักแต่งเพลงเพื่อติดตั้งเป็น Dev-dependency เพียงไปที่ไดเรกทอรีรากของโครงการของคุณและดำเนินการ:
composer require --dev liip/rmt
จากนั้นคุณต้องเริ่มต้น RMT โดยเรียกใช้คำสั่งต่อไปนี้:
php vendor/liip/rmt/command.php init
คำสั่งนี้จะสร้างไฟล์กำหนดค่า .rmt.yml
และสคริปต์ที่เรียกใช้งาน RMT
ในโฟลเดอร์รูทของโครงการของคุณ ตอนนี้คุณสามารถเริ่มใช้ RMT ได้โดยดำเนินการ:
./RMT
เมื่อไปถึงที่นั่นตัวเลือกที่ดีที่สุดของคุณคือการเลือกหนึ่งในตัวอย่างการกำหนดค่าด้านล่างและปรับให้เข้ากับความต้องการของคุณ
หากคุณใช้เครื่องมือการกำหนดเวอร์ชันเราขอแนะนำให้เพิ่มทั้งสองไฟล์นักแต่งเพลง ( composer.json
และ composer.lock
) ไฟล์การกำหนดค่า RMT ( .rmt.yml
) และสคริปต์ที่ปฏิบัติการ RMT
ไดเรกทอรี vendor
ควรถูกละเว้นเนื่องจากมีการเติมเมื่อใช้งานการ composer install
คุณสามารถเพิ่ม RMT ให้กับนักแต่งเพลงระดับโลกของคุณ JSON และมีให้ทั่วโลกสำหรับโครงการทั้งหมดของคุณ เพียงแค่เรียกใช้คำสั่งต่อไปนี้:
composer global require liip/rmt
ตรวจสอบให้แน่ใจว่าคุณมี ~/.composer/vendor/bin/
ในเส้นทาง $ ของคุณ
RMT สามารถติดตั้งผ่าน Phar-composer ซึ่งจำเป็นต้องติดตั้ง เครื่องมือที่มีประโยชน์นี้ช่วยให้คุณสร้างไฟล์ phar ที่เรียกใช้ได้จากแพ็คเกจนักแต่งเพลง
หากคุณติดตั้ง phar-composer คุณสามารถเรียกใช้:
sudo phar-composer install liip/RMT
และมี phar-composer build และติดตั้งไฟล์ 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
สร้าง (หรือรีเซ็ต) ไฟล์ config. 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
: Persister ที่จะใช้ในการจัดเก็บเวอร์ชัน (บังคับ)
post-release-actions
: รายการ []
ของการกระทำที่จะดำเนินการหลังจากการเปิดตัว
รายการทั้งหมดของการกำหนดค่านี้ทำงานเหมือนกัน คุณต้องระบุคลาสที่คุณต้องการจัดการกับการกระทำ ตัวอย่าง:
version-generator: "simple"` version-persister: vcs-tag: tag-prefix: "v_"
RMT ยังรองรับการกำหนดค่า JSON แต่เราขอแนะนำให้ใช้ YAML
บางครั้งคุณต้องการใช้กลยุทธ์การเปิดตัวที่แตกต่างกันตามสาขา VCS เช่นคุณต้องการเพิ่มรายการ Changelog เฉพาะในสาขา master
เท่านั้น ในการทำเช่นนั้นคุณต้องวางการกำหนดค่าเริ่มต้นของคุณลงในองค์ประกอบรูทชื่อ _default
จากนั้นคุณสามารถแทนที่บางส่วนของการกำหนดค่าเริ่มต้นนี้สำหรับ master
สาขา ตัวอย่าง:
_default: version-generator: "simple" version-persister: "vcs-tag" master: pre-release-actions: [changelog-update]
คุณสามารถใช้คำสั่ง RMT config
เพื่อดูผลลัพธ์การผสานระหว่าง _default และสาขาปัจจุบันของคุณ
กลยุทธ์การสร้างหมายเลขรุ่น Build-in
ง่าย: เครื่องกำเนิดไฟฟ้านี้เพิ่มขึ้นอย่างง่าย (1,2,3 ... )
ความหมาย: เครื่องกำเนิดไฟฟ้าที่ใช้เวอร์ชันความหมาย
ตัวเลือกการบังคับสองตัวอาจมีประโยชน์มากหากคุณตัดสินใจว่าสาขาที่กำหนดจะทุ่มเทให้กับเบต้าถัดไปของเวอร์ชันที่กำหนด ดังนั้นเพียงแค่บังคับฉลากไปยังเบต้าและการเปิดตัวทั้งหมดจะเพิ่มขึ้นเบต้า
ตัวเลือก allow-label
(บูลีน): เพื่ออนุญาตให้เพิ่มป้ายกำกับในเวอร์ชัน (เช่น -beta, -rcxx) (ค่าเริ่มต้น: false )
type
ตัวเลือก: เพื่อบังคับประเภทเวอร์ชัน
label
ตัวเลือก: เพื่อบังคับฉลาก
คลาสที่รับผิดชอบการบันทึก/ดึงหมายเลขเวอร์ชัน
VCS-TAG: บันทึกเวอร์ชันเป็นแท็ก VCS
ตัวเลือก tag-pattern
: อนุญาตให้จัดเตรียม regex ที่แท็กทั้งหมดต้องตรงกัน สิ่งนี้อนุญาตให้ปล่อยรุ่น 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
: เรียกใช้การตรวจสอบความถูกต้องบนนักแต่งเพลง json
ตัวเลือก composer
: วิธีเรียกใช้นักแต่งเพลง (ค่าเริ่มต้น: php composer.phar )
composer-stability-check
: จะตรวจสอบว่านักแต่งเพลง json ถูกตั้งค่าเป็นเสถียรภาพขั้นต่ำที่เหมาะสม
ตัวเลือก stability
: ความเสถียรที่ควรตั้งค่าในฟิลด์ความเสถียรขั้นต่ำ (ค่าเริ่มต้น: เสถียร )
composer-security-check
: เรียกใช้ Composer.lock กับ https://github.com/fabpot/local-php-security-checker เพื่อตรวจสอบช่องโหว่ที่รู้จักในการพึ่งพา
ต้องติดตั้งไบนารีการตรวจสอบความปลอดภัยในท้องถิ่น-PHP-Security-Checker ทั่วโลก
composer-dependency-stability-check
ตัวเลือก ignore-require
และ ignore-require-dev
: อย่าตรวจสอบการพึ่งพาใน require
หรือ require-dev
ตัวเลือก whitelist
: อนุญาตให้พึ่งพาเฉพาะการใช้เวอร์ชันการพัฒนา
command
: เรียกใช้คำสั่งระบบ
ตัวเลือก cmd
คำสั่งเพื่อดำเนินการ
ตัวเลือก live_output
Boolean เราแสดงเอาต์พุตคำสั่งหรือไม่? (ค่าเริ่มต้น: จริง )
ตัวเลือก timeout
จำนวนเต็ม จำกัด เวลาสำหรับคำสั่ง (ค่าเริ่มต้น: 600 )
ตัวเลือก stop_on_error
BOOLEAN เราทำลายกระบวนการเผยแพร่โดยใช้ข้อผิดพลาดหรือไม่? (ค่าเริ่มต้น: จริง )
การกระทำสามารถใช้สำหรับชิ้นส่วนก่อนหรือหลังการวางจำหน่าย
changelog-update
: อัปเดตไฟล์ Changelog การดำเนินการนี้ได้รับการกำหนดค่าเพิ่มเติมให้ใช้รูปแบบเฉพาะ
format
ตัวเลือก: ง่าย ความหมาย markdown หรือ addtop (ค่าเริ่มต้น: ง่าย )
file
ตัวเลือก: พา ธ จาก. rmt.yml ไปยังไฟล์ changelog (ค่าเริ่มต้น: changelog )
ตัวเลือก dump-commits
: เขียนข้อความทั้งหมดที่ส่งข้อความตั้งแต่รุ่นล่าสุดลงในไฟล์ changelog (ค่าเริ่มต้น: false )
ตัวเลือก insert-at
: เฉพาะสำหรับ AddTop Formatter: จำนวนบรรทัดที่จะข้ามจากด้านบนของไฟล์ changelog ก่อนที่จะเพิ่มหมายเลขรีลีส (ค่าเริ่มต้น: 0 )
ตัวเลือก exclude-merge-commits
: ไม่รวมการรวม Commits จาก Changelog (ค่าเริ่มต้น: FALSE )
vcs-commit
: ส่งไฟล์ทั้งหมดของสำเนาที่ใช้งานได้ (ใช้กับข้อกำหนดเบื้องต้น working-copy-check
ตัวเลือก commit-message
: ระบุข้อความการกระทำที่กำหนดเอง % เวอร์ชัน% จะถูกแทนที่ด้วยสตริงเวอร์ชันปัจจุบัน / ถัดไป
vcs-tag
: แท็กการกระทำครั้งสุดท้าย
vcs-publish
: เผยแพร่การเปลี่ยนแปลง (commits and tags)
composer-update
: อัปเดตหมายเลขเวอร์ชันในไฟล์ Composer (โปรดทราบว่าเมื่อใช้ Packagist.org ขอแนะนำให้ไม่มีแท็กใน Composer.json เป็นรุ่นที่จัดการโดยแท็กควบคุมเวอร์ชัน)
files-update
: อัปเดตเวอร์ชันในหนึ่งไฟล์หรือหลายไฟล์ สำหรับแต่ละไฟล์ที่จะอัปเดตโปรดระบุอาร์เรย์ด้วย
file
ตัวเลือก: พา ธ ไปยังไฟล์เพื่ออัปเดต
pattern
ตัวเลือก: ตัวเลือกใช้เพื่อระบุรูปแบบการแทนที่สตริงในไฟล์ของคุณ ตัวอย่างเช่น: const VERSION = '%version%';
build-phar-package
: สร้างแพ็คเกจ phar ของโครงการปัจจุบันที่มีชื่อไฟล์ขึ้นอยู่กับตัวเลือก 'แพ็คเกจชื่อ' และเวอร์ชันที่ปรับใช้: [แพ็คเกจชื่อ]-[เวอร์ชัน] .phar
package-name
ตัวเลือก: ชื่อของแพ็คเกจสร้าง
destination
ตัวเลือก: ไดเรกทอรีปลายทางเพื่อสร้างแพ็คเกจลงใน หากนำหน้าด้วยสแลชถือเป็นสัมบูรณ์มิฉะนั้นจะสัมพันธ์กับรูทโครงการ
ตัวเลือก excluded-paths
: regex ของเส้นทางที่ถูกกีดกันส่งผ่านโดยตรงไปยังวิธีการ phar :: buildfromdirectory Ex: /^(?!.*cookbooks|.*.vagrant|.*.idea).*$/im
ตัวเลือก metadata
: อาร์เรย์ของข้อมูลเมตาที่อธิบายถึงแพ็คเกจ อดีตผู้เขียนโครงการ หมายเหตุ: รุ่นรีลีสถูกเพิ่มโดยค่าเริ่มต้น แต่สามารถแทนที่ได้ที่นี่
ตัวเลือก default-stub-cli
: ต้นขั้วเริ่มต้นสำหรับการใช้งาน CLI ของแพ็คเกจ
ตัวเลือก default-stub-web
: ต้นขั้วเริ่มต้นสำหรับการใช้งานเว็บแอปพลิเคชันของแพ็คเกจ
command
: เรียกใช้คำสั่งระบบ
ตัวเลือก cmd
คำสั่งเพื่อดำเนินการ
ตัวเลือก live_output
Boolean เราแสดงเอาต์พุตคำสั่งหรือไม่? (ค่าเริ่มต้น: จริง )
ตัวเลือก timeout
จำนวนเต็ม จำกัด เวลาสำหรับคำสั่ง (ค่าเริ่มต้น: 600 )
ตัวเลือก stop_on_error
BOOLEAN เราทำลายกระบวนการเผยแพร่โดยใช้ข้อผิดพลาดหรือไม่? (ค่าเริ่มต้น: จริง )
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
หากคุณให้การประชาสัมพันธ์ให้ลองเชื่อมโยงหน่วยหรือการทดสอบการทำงาน ดูส่วนถัดไป
เพื่อให้สามารถเรียกใช้การทดสอบในพื้นที่คุณต้องการ:
phpunit
กระตวน
ปรุงรส
คุณสามารถติดตั้งทั้งหมดด้วย 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 Macheret, Liip SA
David Jeanmonod Liip Sa
และผู้มีส่วนร่วมอื่น ๆ
RMT ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับรายละเอียด