Rilis Harap mengotomatiskan pembuatan CHANGELOG, pembuatan rilis GitHub, dan perubahan versi untuk proyek Anda.
Ia melakukannya dengan menguraikan riwayat git Anda, mencari pesan Komit Konvensional, dan membuat PR rilis.
Itu tidak menangani publikasi ke manajer paket atau menangani manajemen cabang yang kompleks.
Daripada terus merilis apa yang masuk ke cabang default Anda, rilis-harap pertahankan PR Rilis:
PR Rilis ini selalu diperbarui seiring dengan penggabungan pekerjaan tambahan. Saat Anda siap memberi tag pada rilis, cukup gabungkan PR rilis. Baik squash-merge maupun merge commits berfungsi dengan PR Rilis.
Saat PR Rilis digabungkan, rilis-silakan lakukan langkah-langkah berikut:
Perbarui file changelog Anda (misalnya CHANGELOG.md
), bersama dengan file khusus bahasa lainnya (misalnya package.json
).
Tandai komit dengan nomor versi
Membuat Rilis GitHub berdasarkan tag
Anda dapat mengetahui posisi PR Rilis dalam siklus hidupnya berdasarkan label status pada PR itu sendiri:
autorelease: pending
adalah keadaan awal dari Release PR sebelum digabungkan
autorelease: tagged
berarti Rilis PR telah digabungkan dan rilis telah diberi tag di GitHub
autorelease: snapshot
adalah status khusus untuk peningkatan versi snapshot
autorelease: published
berarti rilis GitHub telah diterbitkan berdasarkan PR Rilis ( release-please tidak secara otomatis menambahkan tag ini, namun kami merekomendasikannya sebagai konvensi untuk alat publikasi ).
Rilis Harap berasumsi Anda menggunakan pesan Komit Konvensional.
Awalan terpenting yang harus Anda ingat adalah:
fix:
yang mewakili perbaikan bug, dan berkorelasi dengan patch SemVer.
feat:
yang mewakili fitur baru, dan berkorelasi dengan minor SemVer.
feat!:
, atau fix!:
, refactor!:
, dll., yang mewakili perubahan yang dapat menyebabkan gangguan (ditunjukkan dengan !
) dan akan menghasilkan jurusan SemVer.
Kami sangat menyarankan Anda menggunakan penggabungan squash saat menggabungkan permintaan tarik. Riwayat git linier membuatnya lebih mudah untuk:
Ikuti riwayat - komitmen diurutkan berdasarkan tanggal penggabungan dan tidak tercampur di antara permintaan penarikan
Temukan dan kembalikan bug - git bisect
berguna untuk melacak perubahan mana yang menimbulkan bug
Kontrol log perubahan rilis-harap - saat Anda menggabungkan PR, Anda mungkin memiliki pesan komit yang masuk akal dalam cakupan PR, tetapi tidak masuk akal saat digabungkan di cabang utama. Misalnya, Anda mungkin memiliki feat: introduce feature A
dan kemudian fix: some bugfix introduced in the first commit
. fix
sebenarnya tidak relevan dengan catatan rilis karena tidak pernah ada bug yang dialami di cabang utama.
Pertahankan cabang utama yang bersih - jika Anda menggunakan sesuatu seperti pengembangan merah/hijau (buat tes yang gagal di komit A, lalu perbaiki di komit B) dan gabungkan (atau gabungkan kembali), maka akan ada titik waktu di cabang utama Anda di mana tes tidak lulus.
Release Please memungkinkan Anda untuk mewakili beberapa perubahan dalam satu penerapan, menggunakan footer:
prestasi: menambahkan UUID v4 ke kripto Ini menambahkan dukungan untuk UUID v4 ke perpustakaan. fix(utils): unicode tidak lagi memunculkan pengecualian PiperOrigin-RevId: 345559154 BREAKING-CHANGE: metode encode tidak lagi muncul. Tautan Sumber: googleapis/googleapis@5e0dcb2 feat(utils): perbarui encode untuk mendukung unicode PiperOrigin-RevId: 345559182 Tautan Sumber: googleapis/googleapis@e5eef86
Pesan komit di atas akan berisi:
entri untuk fitur "menambahkan UUID v4 ke kripto" .
entri untuk perbaikan "unicode tidak lagi memunculkan pengecualian" , bersama dengan catatan bahwa ini adalah perubahan yang dapat menyebabkan gangguan.
entri untuk fitur "perbarui encode untuk mendukung unicode" .
Ketika komit ke cabang utama memiliki Release-As: xxx
(tidak peka huruf besar/kecil) di badan komit , Release Please akan membuka permintaan penarikan baru untuk versi yang ditentukan.
Contoh komit kosong:
git commit --allow-empty -m "chore: release 2.0.0" -m "Release-As: 2.0.0"
menghasilkan pesan komit berikut:
tugas: rilis 2.0.0 Rilis-Sebagai: 2.0.0
Jika Anda telah menggabungkan permintaan penarikan dan ingin mengubah pesan penerapan yang digunakan untuk menghasilkan catatan rilis untuk penerapan tersebut, Anda dapat mengedit isi permintaan penarikan gabungan dan menambahkan bagian seperti:
BEGIN_COMMIT_OVERRIDE feat: add ability to override merged commit message fix: another message chore: a third message END_COMMIT_OVERRIDE
Saat Release Please dijalankan lagi, bagian override tersebut akan digunakan sebagai pesan komit, bukan pesan komit yang digabungkan.
Rilis Harap membuat permintaan tarik rilis setelah mengetahui bahwa cabang default berisi "unit yang dapat dirilis" sejak rilis terakhir. Unit yang dapat dirilis adalah komit ke cabang dengan salah satu awalan berikut: "feat", "fix", dan "deps". (Komitmen "tugas" atau "membangun" bukanlah unit yang dapat dirilis.)
Beberapa bahasa memiliki konfigurasi unit khusus yang dapat dirilis. Misalnya, "docs" adalah awalan untuk unit yang dapat dirilis di Java dan Python.
autorelease: pending
atau autorelease: triggered
di PR lama Periksa permintaan penarikan yang ada yang diberi label autorelease: pending
atau autorelease: triggered
label. Karena kegagalan GitHub API, mungkin tag tersebut tidak dihapus dengan benar pada rilis sebelumnya dan Rilis Harap menganggap bahwa rilis sebelumnya masih menunggu keputusan. Jika Anda yakin tidak ada rilis yang tertunda, hapus label autorelease: pending
atau autorelease: triggered
.
Untuk pengguna aplikasi GitHub, Release Please tidak akan membuat permintaan penarikan baru jika sudah ada permintaan penarikan yang diberi label autorelease: pending
. Untuk mengonfirmasi kasus ini, cari permintaan tarik dengan label. (Kemungkinan besar itu adalah permintaan tarikan rilis terbaru.) Jika Anda menemukan permintaan tarikan rilis dengan label dan permintaan tersebut tidak akan dirilis (atau sudah dirilis), hapus label autorelease: pending
dan jalankan kembali Release Please.
Jika menurut Anda Release Please tidak dapat membuat PR rilis setelah permintaan penarikan dengan unit yang dapat dirilis digabungkan, silakan jalankan kembali release-please
. Jika Anda menggunakan aplikasi GitHub, tambahkan label release-please:force-run
ke permintaan penarikan gabungan. Jika Anda menggunakan tindakan tersebut, cari pemanggilan yang gagal dan coba lagi alur kerja yang dijalankan. Release Please akan segera memproses permintaan penarikan untuk menemukan unit yang dapat dirilis.
Rilis Harap mengotomatiskan rilis untuk jenis repositori berikut:
tipe rilis | keterangan |
---|---|
bazel | Modul Bazel, dengan MODULE.bazel dan CHANGELOG.md |
dart | Repositori dengan pubspec.yaml dan CHANGELOG.md |
elixir | Repositori dengan mix.exs dan CHANGELOG.md |
go | Repositori dengan CHANGELOG.md |
helm | Repositori dengan Chart.yaml dan CHANGELOG.md |
java | Sebuah strategi yang menghasilkan versi SNAPSHOT setelah setiap rilis |
krm-blueprint | Paket kpt, dengan 1 atau lebih file KRM dan CHANGELOG.md |
maven | Strategi untuk proyek Maven, menghasilkan versi SNAPSHOT setelah setiap rilis dan memperbarui pom.xml secara otomatis |
node | Repositori Node.js, dengan package.json dan CHANGELOG.md |
expo | Repositori React Native berbasis Expo, dengan package.json, app.json dan CHANGELOG.md |
ocaml | Repositori OCaml, berisi 1 atau lebih file opam atau esy dan CHANGELOG.md |
php | Repositori dengan composer.json dan CHANGELOG.md |
python | Repositori Python, dengan setup.py, setup.cfg, CHANGELOG.md dan opsional pyproject.toml dan <project>/__init__.py |
ruby | Repositori dengan version.rb dan CHANGELOG.md |
rust | Repositori Rust, dengan Cargo.toml (baik sebagai peti atau ruang kerja, meskipun perhatikan bahwa ruang kerja memerlukan rilis berbasis manifes dan plugin "cargo-workspace") dan CHANGELOG.md |
sfdx | Repositori dengan sfdx-project.json dan CHANGELOG.md |
simple | Repositori dengan version.txt dan CHANGELOG.md |
terraform-module | Modul terraform, dengan versi di README.md, dan CHANGELOG.md |
Ada berbagai cara untuk menerapkan rilis:
Cara termudah untuk menjalankan Release Please adalah sebagai tindakan GitHub. Silakan lihat googleapis/release-please-action untuk petunjuk instalasi dan konfigurasi.
Silakan lihat Running release-please CLI untuk semua opsi konfigurasi.
Tersedia aplikasi probot, yang memungkinkan Anda menerapkan Release Please sebagai Aplikasi GitHub. Silakan lihat github.com/googleapis/repo-automation-bots untuk petunjuk instalasi dan konfigurasi.
Rilis Silakan lihat komitmen sejak tag rilis terakhir Anda. Ini mungkin dapat atau tidak dapat menemukan rilis Anda sebelumnya. Cara termudah untuk melakukan onboarding pada repositori Anda adalah dengan mem-bootstrap konfigurasi manifes.
Rilis Harap memberikan beberapa opsi konfigurasi untuk memungkinkan penyesuaian proses rilis Anda. Silakan lihat customizing.md untuk lebih jelasnya.
Release Please juga mendukung pelepasan beberapa artefak dari repositori yang sama. Lihat selengkapnya di manifest-releaser.md.
Perpustakaan klien kami mengikuti jadwal rilis Node.js. Perpustakaan kompatibel dengan semua versi Node.js yang aktif dan pemeliharaan saat ini.
Pustaka klien yang menargetkan beberapa versi Node.js yang sudah habis masa pakainya tersedia, dan dapat diinstal melalui npm dist-tags. Dist-tag mengikuti konvensi penamaan legacy-(version)
.
Versi lama Node.js didukung sebagai upaya terbaik:
Versi lama tidak akan diuji dalam integrasi berkelanjutan.
Beberapa patch keamanan mungkin tidak dapat di-backport.
Dependensi tidak akan selalu diperbarui, dan fitur tidak akan di-backport.
legacy-8
: instal perpustakaan klien dari dist-tag ini untuk versi yang kompatibel dengan Node.js 8.
Perpustakaan ini mengikuti Versi Semantik.
Kontribusi diterima! Lihat Panduan Berkontribusi.
Untuk informasi lebih lanjut tentang desain perpustakaan, lihat desain.
Untuk masalah umum dan bantuan memecahkan masalah konfigurasi Anda, lihat Pemecahan Masalah.
Apache Versi 2.0
Lihat LISENSI
Ini bukan produk resmi Google.