Manifesto CI

Integrasi berkelanjutan adalah proses dan alur kerja pengembang/pengelola paket. Pengiriman berkelanjutan adalah proses dan alur kerja rilis.

Integrasi berkelanjutan bertujuan untuk memastikan perubahan yang rusak tidak memengaruhi pengembang, pengelola paket, pemelihara, atau pengguna lain. Pengiriman berkelanjutan bertujuan untuk memastikan perubahan yang rusak tidak terkirim atau dirilis.

Integrasi berkelanjutan memungkinkan kita mengoreksi arah dengan cepat saat membangun perangkat lunak menuju target yang terus bergerak. Umpan balik yang diberikan oleh integrasi berkelanjutan sangat penting untuk pengiriman perangkat lunak agile yang cepat. Pengujian yang terlambat, lama setelah perubahan terjadi, tidak dapat mengikuti kecepatan Fedora.

Karena terdapat beberapa upaya Integrasi Berkelanjutan, kita perlu menetapkan aturan dasar untuk memastikan kita semua memainkan permainan yang sama. Ketika kita menyebut suatu permainan "sepak bola", kita perlu menyepakati artinya. Kita mungkin memiliki kerangka kerja, implementasi, atau pengujian yang berbeda, tetapi perlu memainkan permainan yang sama.

Definisi

Anda tidak boleh menyebutnya "Integrasi Berkelanjutan" kecuali Anda …​

  1. Rakitlah bersama seperti di produksi, lalu uji seperti pengguna. Inilah Integrasi.

  2. Lakukan pengujian integrasi tersebut untuk setiap "perubahan" tunggal. Inilah Berkelanjutan.

Tanpa ini, mungkin itu adalah "pengujian unit", "pengujian penerimaan", "pengujian regresi", "jaminan kualitas", atau langkah lain dalam pipeline … tetapi bukan "integrasi berkelanjutan". Anda mungkin bahkan menjalankan pengujian yang sama lagi nanti sebagai bagian dari salah satu proses pengujian lainnya.

Membangun sebuah komponen, menyusunnya dengan komponen lain, merakitnya menjadi sistem yang menyerupai produksi, semuanya merupakan bagian dari integrasi. "Aliran perubahan" adalah cara kita menyebut perubahan-perubahan yang secara berkelanjutan ditindaklanjuti oleh integrasi. Pengembang adalah seseorang yang memulai dan/atau mengimplementasikan perubahan dan merupakan target umpan balik dari pengujian. Di Fedora, ini adalah pengelola paket atau pemelihara. Biasanya kita menerapkan integrasi tersebut pada aliran perubahan perangkat lunak, tetapi di lain waktu bisa berupa perubahan perangkat keras, atau perubahan lainnya.

Pengiriman berkelanjutan adalah mengambil sebagian dari integrasi yang berhasil tersebut dan mengirimkannya.

Manifesto

  1. Sebuah pengujian tidak memiliki nilai sampai hasilnya memengaruhi perilaku seorang pengamat.

  2. Pengamat terbaik untuk hasil pengujian adalah pengembang atau pengelola paket yang memulai dan/atau menginisiasi perubahan yang diintegrasikan.

  3. Manfaat integrasi berkelanjutan berbanding terbalik dengan ukuran perubahan. Banyak perubahan kecil yang iteratif jauh lebih baik daripada satu perubahan besar yang digabungkan.

  4. Umpan balik yang cepat kepada pengembang atau pengelola paket atas perubahan akan membuat mereka memperhatikannya. Targetkan jam, bukan hari, untuk memberikan hasil pengujian.

  5. Pengelola paket hanya bertanggung jawab atas pengujian yang dapat mereka kontribusikan.

  6. Pengelola paket menghargai pengujian dan sistem pengujian yang menghasilkan hasil yang andal. Sebaliknya, mereka mengabaikan dan menjauhi pengujian dan sistem yang tidak stabil.

  7. Pengelola paket tidak perlu mencari hasil pengujian di luar alur kerja mereka.

  8. Pengelola paket harus dapat menjalankan pengujian individual di mesin mereka sendiri.

  9. Pengujian yang ideal dapat diperbarui selaras dengan perubahan yang sedang diujinya. Usahakan untuk menyimpan pengujian bersama perangkat lunak yang paling berkaitan dengan pengujian tersebut.

  10. Tempat terbaik untuk menguji suatu perubahan adalah sebelum perubahan tersebut memengaruhi siapa pun.

  11. Sekumpulan kecil pengujian yang mengikuti prinsip-prinsip ini lebih bernilai bagi integrasi berkelanjutan daripada sekumpulan besar pengujian yang tidak mengikutinya.

Aturan

Integrasi Berkelanjutan menjadi mandiri dengan mengikuti dua aturan dasar …​

Agar upaya CI kita dapat berkembang, upaya tersebut harus dibuat mandiri. Ini tidaklah sulit. Aturan-aturan dasar ini adalah persyaratan untuk membangun siklus mandiri di mana pengujian berkembang, bukan membusuk.

1. Pengujian harus dapat diubah oleh orang-orang yang melakukan perubahan perangkat lunak

Pengembang dan pengelola paket harus dapat berkontribusi perubahan pada pengujian dan menjalankannya. Pengujian menjadi tanggung jawab pengelola paket dan siklus pengemasan. Dimungkinkan untuk memulai dengan korpus kecil pengujian yang memenuhi persyaratan ini. Korpus kecil ini pada akhirnya akan melampaui pengujian "non-Open Source" mana pun.

Alasan: Pengujian open source yang dapat direproduksi memungkinkan pengembang dan pengelola paket untuk berkontribusi, memperbaiki pengujian yang sudah usang, dan mengembangkan rangkaian pengujian. Mereka kemudian memperhatikan pengujian dan memeliharanya.

2. Umpan Balik Cepat kepada Orang yang Melakukan Perubahan

Pengembang atau pengelola paket yang melakukan perubahan pada sebuah paket atau kontainer memerlukan umpan balik cepat dari integrasi berkelanjutan. Perubahan tidak boleh dilanjutkan sampai orang tersebut merespons hasil kegagalan integrasi.

Alasan: Umpan balik yang cepat menyebabkan pengembang dan pengelola paket untuk

  1. memperhatikan pengujian

  2. memperbaiki masalah sementara perubahan masih segar dalam ingatan mereka dan

  3. menjadikan pengujian sebagai gerbang perubahan.