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

Pengujian dapat diaktifkan menggunakan Spesifikasi Metadata Pengujian yang diimplementasikan oleh [Test Management Tool] yang menyediakan sejumlah fitur untuk bekerja secara efisien dengan pengujian dan sekarang menjadi cara yang direkomendasikan. Antarmuka Pengujian Standar masih didukung tetapi telah usang.

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 …​ layanan untuk mengevaluasi kebijakan gating berdasarkan hasil pengujian

  • ResultsDB …​ mesin penyimpanan hasil

  • WaiverDB …​ layanan untuk mencatat pengecualian (waiver) terhadap hasil pengujian

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.

Peran Pengujian Standar (Standard Test Roles)

Peran Pengujian Standar diimplementasikan untuk memungkinkan alat otomatisasi dan pengembang di lingkungan lokal mereka menjalankan pengujian dengan mudah. Kumpulan peran ansible ini mendukung berbagai kerangka kerja dan memungkinkan pelaksanaan pengujian terhadap subjek pengujian yang berbeda (seperti paket rpm klasik, kontainer docker, atau Atomic Host). Peran Pengujian Standar telah digantikan oleh [Test Management Tool].

Kerangka Kerja (Frameworks)

Karena Antarmuka Pengujian Standar tidak menentukan kerangka kerja pengujian mana yang harus digunakan, Anda dapat memilih kerangka kerja yang paling sesuai untuk proyek Anda. Berikut adalah beberapa contohnya:

Pipa (Pipeline)

Pipeline pengujian mendeteksi pengujian untuk paket-paket yang diaktifkan, menjalankan cakupan pengujian, dan mengumpulkan hasilnya.

Pagure

Hasil pengujian dari pipa CI ditampilkan di antarmuka web Pagure. Lihat halaman commit dan halaman permintaan tarik (pull request) dari masing-masing paket untuk melihat hasilnya. Integrasi Pagure dengan COPR menyediakan pembangunan ulang otomatis dan penandaan pull request/commit pada setiap perubahan baru.

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

Kepemilikan dan pemeliharaan pengujian harus dibagi antara QE & Devel. Untuk pengujian yang berada di namespace rpm, QE dapat menggunakan pull request untuk membuat/memperbarui pengujian. Demikian pula di namespace pengujian, baik QE maupun Devel akan memiliki hak commit, serta baik QE maupun Devel harus meninjau dan menyetujui (sign-off) setiap commit.

Lainnya

Kontak

Jika Anda memiliki pertanyaan atau ingin terlibat:

Tautan

Berikut adalah beberapa tautan terkait tambahan: