Fedora CI
Portal Integrasi Berkelanjutan Fedora
Mengapa
Visi
Terdapat ratusan paket yang membentuk Sistem Operasi. Memastikan semuanya bekerja sama sebagai satu kesatuan bukanlah tugas yang mudah. Hal ini menjadi lebih sulit seiring bertambahnya jumlah paket dan ketergantungan antar paket tersebut. Pengujian ekstensif diperlukan sebelum versi baru sistem operasi dirilis untuk memastikan sistem tersebut cukup stabil. Itu adalah masa lalu.
Bayangkan sebuah Sistem Operasi yang Selalu Siap yang terdiri dari paket-paket yang terus-menerus dijaga dalam kondisi baik. Terintegrasi dan stabil berkat cakupan pengujian ekstensif yang terus dijalankan setiap kali ada perubahan pada masing-masing paket, dengan cara ini memungkinkan persiapan rilis baru dalam waktu yang jauh lebih singkat, atau bahkan tanpa waktu tunggu sama sekali.
Bayangkan sebuah distribusi sistem operasi yang dapat Anda rilis kapan saja. Inilah tujuan kami. Di sinilah CI, Integrasi Berkelanjutan (Continuous Integration), hadir sebagai alat yang sangat berharga untuk memastikan semuanya bekerja sama seperti yang diharapkan pada setiap titik waktu.
Manifesto
Integrasi berkelanjutan bertujuan untuk memastikan perubahan yang rusak terungkap sesegera mungkin dan tidak memengaruhi pengembang, pengemas (packager), pemelihara, atau pengguna lain. Umpan balik yang diberikan oleh integrasi berkelanjutan sangat penting untuk pengiriman perangkat lunak yang gesit dan cepat. Pengujian yang terlambat, lama setelah perubahan terjadi, tidak sebanding dengan kecepatan Fedora. Pelajari tujuan, terminologi, dan aturan untuk CI yang berfungsi dalam manifesto.
Bagaimana
Ada tiga bagian utama dari teka-teki ini untuk membuatnya bekerja dengan baik: Sebuah proses yang mendefinisikan secara jelas cara menemukan dan mengeksekusi pengujian, satu set alat yang membantu mengimplementasikan proses secara efisien, dan pengujian itu sendiri.
Proses
Mengaktifkan Pengujian
Tests can be enabled using the Test Metadata Specification implemented by the [Test Management Tool] which provides a number of features to efficiently work with tests.
Gating
Ketika pengujian gagal, CI dapat mencegah perubahan yang rusak memengaruhi paket lain. Gating tersebut terjadi di Bodhi. Greenwave digunakan bersama dengan ResultsDB dan WaiverDB untuk membuat keputusan gating.
Notifikasi
Notifikasi Fedora telah disesuaikan untuk memberi tahu secara default setiap pengemas ketika ada langkah dari pipa (pipeline) CI yang gagal pada salah satu paket yang mereka pelihara. Jadi, jika Anda adalah pemelihara kernel dan sebuah commit yang dilakukan pada repositori dist-git kernel gagal menyusun OSTree, FMN akan memberi tahu Anda tentang hal itu.
Bodhi menyertakan hasil CI di halaman pembaruannya, sama seperti yang sudah menyertakan hasil pengujian dari taskotron.
Pesan
Berbagai alat yang terlibat dalam otomatisasi CI mengirimkan pembaruan tentang kemajuan pengujian ke bus pesan. Format pesan CI yang konsisten memungkinkan pembangunan layanan yang lebih sederhana yang akan memberikan fitur berguna bagi semua orang.
-
Fedora CI Messages … CI messages specification
-
Datagrepper … mencari pesan yang terkirim (misalnya berdasarkan topik)
-
fedmsg bus … pesan yang dikirim oleh pipeline
-
topik … daftar topik fedmsg yang terkait dengan CI
Alat
Alat Manajemen Pengujian (Test Management Tool)
Alat tmt menyediakan cara yang ramah pengguna untuk bekerja dengan pengujian. Anda dapat dengan nyaman membuat pengujian baru, menjalankan pengujian dengan aman dan mudah di berbagai lingkungan yang berbeda, meninjau hasil pengujian, menelusuri kesalahan (debug) kode pengujian, dan mengaktifkan pengujian di CI menggunakan konfigurasi yang konsisten dan ringkas.
Kerangka Kerja (Frameworks)
As tmt does not define test framework which should be used for testing it is possible to choose the most suitable framework for your project. Here are some examples:
-
BeakerLib dan Pustaka-pustaka-nya
Jenkins pipelines
The Jenkins testing pipelines run generic tests for Bodhi updates in Testing Farm, and gather and report the results.
Packit as dist-git CI
Packit acts as CI for dist-git pull requests. Test results are displayed in the dist-git web interface. See Packit as Fedora CI for more details.
Pengujian
Inti dari keberhasilan CI adalah pengujian yang andal dengan kualitas yang baik, dipilih dengan tepat, stabil, terorganisir, dan terus dipelihara.
Jenis Pengujian
Secara umum, masuk akal untuk menyimpan pengujian sedekat mungkin dengan hulu (upstream). Jadi, apa saja jenis pengujian yang direkomendasikan untuk menguji Sistem Operasi yang Selalu Siap?
-
Pengujian fungsionalitas dasar
-
Pengujian integrasi
Untuk pengujian unit, biasanya lebih masuk akal untuk menyimpannya langsung di dalam repositori proyek hulu. Namun, dalam beberapa kasus, mungkin berguna juga untuk mengambil pengujian untuk Fedora CI dari repositori hulu tersebut.
Kode Pengujian
Kode pengujian dapat disimpan langsung di dist-git atau diambil dari repositori lain. Konfigurasi minimal untuk mengaktifkan pengujian asap (smoke test) sederhana terlihat seperti ini:
execute:
script: foo --version
Pengujian dari repositori bersama dapat diaktifkan dengan cara ini:
discover:
how: fmf
url: https://src.fedoraproject.org/tests/shell
execute:
how: tmt
Lihat dokumentasi Alat Manajemen Pengujian untuk detail dan contoh lebih lanjut.
Pelaksanaan Pengujian
Menjalankan pengujian sesederhana menjalankan satu perintah:
tmt run
Pelajari lebih lanjut di bagian Jalankan Pengujian.
Tanggung Jawab Bersama
The ownership and maintenance of tests should be shared between Quality / CI teams and maintainers. For tests that reside in the rpm namespace, Quality / CI can use pull requests to create/update tests. Likewise in the tests namespace, both Quality / CI and maintainers should have commit rights and review changes.
Lainnya
Kontak
Jika Anda memiliki pertanyaan atau ingin terlibat:
-
Matrix: #fedora-ci room
-
Discussion: #fedora-ci tag
-
Tickets: General CI Issues
Tautan
Berikut adalah beberapa tautan terkait tambahan:
-
Alat Manajemen Pengujian … dokumentasi Fedora CI untuk tmt
-
Panduan tmt … panduan hulu tmt
-
CI SIG … Kelompok Minat Khusus Integrasi Berkelanjutan
Want to help? Learn how to contribute to Fedora Docs ›