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.

  • Gating …​ cara mengaktifkan gating, instruksi pelepasan (waiving)

  • Bodhi …​ Sistem pembaruan Fedora

  • Greenwave …​ service to evaluate gating policies based on test results

  • ResultsDB …​ results store engine

  • WaiverDB …​ service for recording waivers against test results

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.

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:

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.

COPR / dist-git integration

dist-git integration with COPR provides auto-rebuilding and pull request/commit flagging on new changes.

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:

Tautan

Berikut adalah beberapa tautan terkait tambahan: