Saya bagian dari grup pengembangan dengan 5 tim, total sekitar 40 pengembang. Kami mengikuti metodologi Scrum, dengan sprint 3 minggu. Kami memiliki pengaturan integrasi berkelanjutan (Jenkins), dengan pipeline build memakan waktu beberapa jam (karena tes otomatis yang ekstensif). Pada dasarnya, proses pengembangan berjalan dengan baik.
Namun, kami mengamati bahwa setelah beberapa hari memasuki sprint baru, build kami sering menjadi tidak stabil, dan tetap goyah hingga ujung sprint "komit berhenti". Efek buruknya adalah langkah-langkah membangun jauh di bawah pipa, terutama UI- / Webtests tidak dieksekusi selama beberapa hari (karena hanya dipicu pada bangunan 'hijau'). Akibatnya, bug yang baru diperkenalkan seringkali hanya terdeteksi sangat lambat dalam sprint.
- Setiap komit diverifikasi terhadap serangkaian tes dasar. Setelah diverifikasi, perubahan didorong untuk dikuasai setelah ulasan kode (Gerrit)
- Tes unit dasar dijalankan setiap 30 menit, durasinya kurang dari 10 menit
- Tes integrasi dijalankan setiap 2 jam, durasi 1 jam
- UI- / Webtests berjalan pada tes integrasi yang berhasil, durasi beberapa jam
Bergantung pada siapa yang bertanggung jawab untuk membangun stabilitas selama sprint (tanggung jawab itu diberikan per sprint), mungkin ada "penghenti" sementara yang ad-hoc untuk membuat bangunan kembali ke stabil.
Jadi, kami ingin:
- Tim pengembang kami mengembangkan dan melakukan perubahan selama sprint tanpa hambatan
- Proses build kami untuk ditinggalkan jika langkah build gagal, karena hasil build selanjutnya hanya memiliki sedikit makna
- Proses pembangunan kami untuk memberikan umpan balik yang berkualitas kepada pengembang tepat waktu
Mengingat (2), poin (1) dan (3) tampaknya saling bertentangan. Adakah yang punya praktik yang baik bagaimana menghadapi ini?
( Kami saat ini sedang melonggarkan poin (2), dan memungkinkan pembangunan berkelanjutan bahkan pada langkah-langkah pembangunan yang gagal. Saya belum memiliki umpan balik bagaimana hal itu mempengaruhi kualitas kami )
Terima kasih, Simon
several hours
maka itu adalah masalah sebenarnya. itu menandakan bahwa solusi gabungan terlalu besar dan terlalu luas. Anda harus mencari untuk memomponisasi solusi dan kemudian memiliki potongan kecil kode sebagai paket (tersedia dalam satu atau lain cara dalam semua bahasa utama di semua platform). Dengan demikian setiap perubahan akan masuk ke komponen saja dan akan terdeteksi lebih cepat. Build penuh pada dasarnya hanya akan menggabungkan komponen yang sudah digabungkan, dan juga akan lebih cepat. Anda kemudian hanya akan menjalankan beberapa tes untuk memastikan komponen yang tepat terselesaikan.