Wikipedia, bu terimlerin çoğunun oldukça iyi özetlerini verir. İşte onları almam:
Derleme otomasyonu , derleyiciyi manuel olarak çağırmak yerine yazılımın nasıl oluşturulacağını otomatikleştiriyor . Bu, örneğin, Make veya Ant gibi araçlar vasıtasıyla gerçekleştirilebilir .
Dağıtım otomasyonu yerleşik yazılımınızı alıyor ve bir test veya üretim sistemine dağıtıyor veya kuruyor.
Sürekli entegrasyon , geliştiricilerin kodu kontrol ettiği ve otomatik olarak kodun çalıştığından emin olmak için birim testleri uyguladığı için yazılımınızı sürekli olarak otomatik hale getirmek anlamına gelir . Örneğin, bir sunucu her 15 ila 30 dakikada bir uyanabilir, yeni check-in'ler için VCS'yi tarayabilir , ardından herhangi bir değişiklik yapılırsa projeyi güncelleyebilir ve oluşturabilirsiniz. Derleme adımlarını gerçekleştirmenin yanı sıra, otomatik birim testleri ve kod kalitesi denetimleri yapmak için de harika bir fırsattır .
Sürekli dağıtım , yazılım yapılarının da bir test sistemine dağıtıldığı önceki kavramların bir birleşimidir, isteğe bağlı olarak yapılan testler ve oluşturulan raporlarla.
En azından, yapı otomasyonuna, yani bir çeşit yapı komut dosyasına sahip olmanız gerekir . Bu, projenizi oluşturmak için bir düğmeyi tıklamanız veya bir komut vermenizi sağlar. Bunun yararı, manuel olarak çalışan adımlardan kaynaklanan hataları azaltmaktır. Karmaşık yapı ortamları, kod oluşturmayı ( yapılandırmalardan DAO'ları , JAXB gibi arabirim kodunu düşünün ), kodu derlemeyi, paketlemeyi, meta verileri özelleştirmeyi vb. İçerebilir . oluşturma komut dosyası ve çalıştırmak için bir araç? Hataları azaltır ve tutarlılık sağlar.
Sıradaki CI: Bu gerçekten iyi ama kesinlikle gerekli değil. Sorunları erken teşhis etmeye yardımcı olur. Gün boyunca kodu kontrol eden ve belki de kendi çalışma alanlarını sürekli olarak senkronize etmeyen birden fazla geliştiriciniz varsa, değişikliklerinin birbirlerini etkileme riski vardır. Özellikle sürüm kontrolü çakışmalarına değil, statik kod hatalarına atıfta bulunuyorum. Bir CI derleme sunucusu bu riski azaltacaktır.
Son olarak dağıtım adımlarımız var. Buradaki fikir, zamandan tasarruf etmek ve yazılımı manuel olarak dağıtmaktan kaynaklanan hatayı azaltmaktır. Yapı otomasyonu gibi, bir yazılım dağıtımını kapatmanın yüz yolu vardır. Yarın tesise gelecek müşteriler için işleyen bir sisteme ihtiyaç duyduğumuzda birçok durumda manuel dağıtım sorunlarını gidermek için şahsen ofiste geç kaldım. Birden fazla sistemi otomatikleştirmek daha fazla risk doğurur: Muhtemelen çökecek veya garip hatalar olan bir sistem yerine artık birden çok sistemimiz varyanlış gidebilecek sistemler. Bununla birlikte, bu risk, bir kontrol listesinde bir adımı atlamayan veya yanlış komut veren ve bir dağıtımı bozan birinden çok daha düşüktür. Şanslıysanız, bir DB yedeklemesini geri yükleyebilir ve baştan başlayabilirsiniz, eğer şanssızsanız, bir hata sistemin yanlış çalışmasına neden olabilir. Bir yazılım hatası mı? Teknisyen yapılandırmayı doğru bir şekilde ayarlamadı mı? Bu işlemin teşhis edilmesi, sahip olamayacağınız zaman ve süreci otomatik hale getirirseniz harcanmaması gereken zaman alır.