Berikut adalah kutipan sebagian dari jawaban untuk pertanyaan tentang " Bagaimana cara menghindari ketidakstabilan yang disebabkan oleh integrasi berkelanjutan di lingkungan pengujian? ":
Lingkungan ini biasanya membeku selama tes.
Pertanyaan saya: apa contoh implementasi dari lingkungan beku? Yaitu apa yang dapat Anda lakukan untuk menegakkan secara teknis bahwa tidak seorang pun (kecuali jika diizinkan oleh pengguna yang berwenang seperti manajer rilis) akan dapat mengubah apa pun dalam lingkungan beku tersebut.
Klarifikasi :
Saya tidak berbicara tentang apa (saya pikir) disebut "periode beku" selama (misalnya) pemrosesan akhir tahun di bank. Itu adalah tentang tidak diizinkan untuk menerapkan perubahan (ulangi apa pun) pada lingkungan produksi, untuk mengurangi risiko perubahan / perbaikan baru yang diperkenalkan yang dapat berdampak pada pemrosesan akhir tahun.
Asumsikan bahwa pengguna yang diizinkan untuk menyetujui / menerapkan perubahan (seperti manajer rilis dalam contoh saya), hanya akan melakukannya dalam kasus luar biasa. Seperti di mana selama pengujian masalah keparahan tinggi ditemukan, yang menunda perbaikan untuk rilis berikutnya bukanlah suatu pilihan (karena itu akan berproduksi berisiko jika rilis tersebut akan diaktifkan tanpa perbaikan tersebut).
Ini bisa saja tentang menangguhkan pembaruan otomatis apa pun selama pengujian. Intinya adalah: hindari orang lain memutakhirkan Aplikasi A ke versi Y sementara tim lain masih menguji aplikasi B dalam versi X yang bergantung pada aplikasi A. Ini bisa berarti memiliki penjaga untuk menghindari tim uji untuk memerlukan pembaruan pada ketergantungan di bawah uji.
sumber
TeamCity memiliki fitur membangun Sumber Daya Bersama yang memungkinkan Anda untuk menentukan sumber daya yang bergantung pada beberapa Definisi Pembuatan. Definisi Build dapat memerlukan Kunci Baca atau Kunci Tulis, Anda juga dapat menentukan apakah kunci ini eksklusif atau memungkinkan tingkat paralelisme.
Jika kami membuat asumsi berikut tentang lingkungan bersama bernama PreProd :
Karena itu, yang berikut ini benar:
Anda dapat menggunakan mekanisme serupa dengan Jenkins menggunakan plugin Pengecualian . Bahkan, Anda dapat membangun fungsionalitas ini ke dalam proses apa pun menggunakan penguncian atau semafor - misalnya Apache ZooKeeper atau HashiCorp Consul .
sumber
Ini kedengarannya seperti pola anti bagi saya. Saya percaya semua orang atau tidak seorang pun harus memiliki akses ke semua lingkungan.
Jika pengguna merongrong proses maka saya akan melihat serius proses untuk mencoba dan memastikan itu tidak menghalangi orang.
Menerapkan mekanisme otomatis yang memberlakukan negara tertentu juga berguna untuk mendorong orang untuk melakukan hal-hal dengan cara yang benar. Ini bisa melalui Manajemen Config atau menghancurkan instance yang tidak dapat diubah jika seseorang SSH melakukannya
sumber