Proyek 06 memasang penjaga terakhir pada riwayat: hooks yang memeriksa setiap commit sebelum commit itu diperbolehkan lahir. Dengan itu, satu kompetensi saja yang belum pernah dilatih tangan kita dari ujung ke ujung: mengemas pekerjaan yang sudah terjaga kualitasnya menjadi sebuah rilis. Proyek penutup ini mengerjakannya — dan sekaligus merangkai seluruh perjalanan course, dari commit pertama sampai tag yang diberi nomor versi, dalam satu putaran utuh.
Panggungnya adalah katalog film: aplikasi teks kecil dengan daftar film dan pencarian judul. Kita menuntaskan dua fitur lewat branch, memasang satu perbaikan, membekukan riwayat, lalu menjalani ritual rilis yang sesungguhnya — menimbang angka versi dengan Semantic Versioning, menandai titik rilis dengan annotated tag, menyusun changelog untuk pembaca manusia, membungkus artefak dari tag, dan memverifikasi bahwa hasilnya benar-benar bisa dihidupkan kembali dari remote.
Apa yang Kita Bangun #
Rilis v1.0.0 proyek katalog film dikerjakan dalam empat babak:
- menentukan versi — dua fitur digabungkan lewat branch
fitur/*masing-masing, satu perbaikan typo menyusul, riwayat dibekukan dan ditinjau, lalu angka1.0.0dipilih dengan pertimbangan SemVer dan dikunci ke berkasVERSION; - membuat tag — titik rilis ditandai
git tag -a v1.0.0dengan pesan rilis multi-baris, dibedah metadatanya, dan dibagikan ke remote pusat; - menyiapkan changelog — riwayat commit diterjemahkan menjadi
CHANGELOG.mdformat Keep a Changelog, dan satu pelajaran tentang urutan changelog-versus-tag dibayar jujur dengan tag ulang; - menerbitkan release — seluruh commit dan tag didorong, artefak
tar.gzdibungkus langsung dari tag, catatan rilis disusun, dan satu clone baru membuktikan rilis berdiri utuh.
Alur keempat babak itu berjalan sebagai satu pipa:
Diagram itu dibaca dari kiri ke kanan sebagai satu tarikan napas: bahan fitur masuk di kiri, keluar sebagai rilis bernomor di kanan. Hasil akhirnya: repository katalog-film dengan delapan commit (dua gelembung merge), tag annotated v1.0.0 yang menunjuk tepat ke commit rilis lengkap dengan changelog, berkas CHANGELOG.md yang terformat rapi, artefak katalog-film-1.0.0.tar.gz, dan clone verifikasi yang melaporkan v1.0.0 dari git describe.
Peta Empat Bagian #
| Bagian | Fokus | Bekal utama | Perkiraan waktu |
|---|---|---|---|
| Bagian 1: Menentukan Versi | bangun repo, dua fitur merged, satu fix, freeze, kunci 1.0.0 | Semantic Versioning , git merge | 20 menit |
| Bagian 2: Membuat Tag | tag annotated berpesan rilis, bedah, bagi ke pusat | Annotated Tag , Berbagi Tag ke Remote | 15 menit |
| Bagian 3: Menyiapkan Changelog | susun CHANGELOG.md, temukan tag tertinggal, tag ulang | Changelog , Release Workflow | 20 menit |
| Bagian 4: Menerbitkan Release | push penuh, artefak, catatan rilis, verifikasi clone | Release Workflow | 25 menit |
Total waktu pengerjaan sekitar 80 menit. Setiap bagian berdiri di atas keadaan akhir bagian sebelumnya, jadi kerjakan berurutan dari Bagian 1.
Prasyarat #
Materi berikut perlu dikuasai sebelum mulai; setiap konsep dipakai tanpa dijelaskan ulang di sini:
- perbedaan lightweight dan annotated tag — Annotated Tag dari section Tags dan Releases;
- mengirim tag ke remote — Berbagi Tag ke Remote ;
- aturan penaikan MAJOR.MINOR.PATCH dan makna loncatan ke
1.0.0— Semantic Versioning ; - format dan disiplin changelog — Changelog ;
- delapan langkah alur rilis dari pembekuan sampai pengumuman — Release Workflow ;
- prefiks
feat:/fix:/chore:pada pesan commit — Conventional Commits ; - menggabungkan fitur dengan
--no-ff— git merge dan Feature Branch Workflow .
Alat yang dipakai adalah Git 2.23 ke atas; seluruh sesi diuji nyata pada Git 2.47.3.
Struktur Proyek dan Transkrip #
Panggung rilis kita bernama proyek-07 dengan susunan berikut:
proyek-07/
├── katalog-film/ ← repository kerja (README.md, VERSION, src/app.txt, CHANGELOG.md)
│ ├── katalog-film-1.0.0.tar.gz ← artefak rilis (git archive dari tag)
│ └── verifikasi/ ← clone baru dari bare (uji ujung-ke-ujung)
└── katalog-film-pusat.git/ ← remote pusat (bare, tanpa working tree)Berkas README.md, CHANGELOG.md, VERSION, dan src/app.txt yang menyertai halaman proyek ini memuat kondisi akhir repository — bandingkan isinya dengan hasil kerja kita setelah Bagian 4 selesai.
Semua bekal sudah di tangan. Mari tutup course ini dengan caranya para tim sungguhan: satu rilis utuh dari commit pertama sampai tag terverifikasi — mulai dari Bagian 1: Menentukan Versi .
Tutup fitur 1.0.0 dan tentukan nomor versi berdasarkan SemVer.
Buka → # Bagian 2: Membuat TagBuat annotated tag v1.0.0 beserta pesan rilisnya.
Buka → # Bagian 3: Menyiapkan ChangelogSusun CHANGELOG.md dari riwayat commit yang ada.
Buka → # Bagian 4: Menerbitkan ReleaseDorong tag dan susun berkas rilis yang siap dibagikan.
Buka →