Kod değişikliklerinin sürekli olarak merkezi bir repository'ye entegre edilmesi anlamına gelir. Amaç, geliştiricilerin çalışma kopyalarını sürekli olarak paylaşılan bir branch ile birleştirerek, olası entegrasyon problemlerini erken tespit etmektir.
Nasıl çalışır?
Kodun, test süreçlerinden geçtikten sonra manuel bir onay ile staging veya production ortama hazır hale getirilmesini ifade eder. Deployment sürecini otomatikleştirir.
Nasıl çalışır?
Testlerden geçmiş olan her kod değişikliği otomatik olarak production ortamına deploy edilir. Bu model, insan müdahalesini ortadan kaldırır.
Nasıl çalışır?
Kod değişiklikleri daha hızlı bir şekilde test edilip deploy edilebilir. Bu, yeni özelliklerin veya düzeltmelerin daha hızlı bir şekilde son kullanıcılara ulaşmasını sağlar.
Otomatik testler, hataları üretim ortamına geçmeden önce tespit etmeye yardımcı olur.
Geliştiriciler, daha sık kod entegrasyonları yaptıkları için takım çalışması kolaylaşır. Conflict minimuma iner.
Sürekli build ve test süreçleri, kodun daha temiz ve bakımı kolay olmasını sağlar.
Manuel müdahaleleri en aza indirerek daha stabil ve tekrarlanabilir bir deployment süreci sunar.
Hatalar erken tespit edildiği için deployment sonrası gerçekleştirilmesi gereken dönüşler azalır.
Scrum veya Kanban gibi çevik metodolojilerle uyumlu çalışır. Daha sık teslimatlar yaparak iterasyonların daha etkili olmasını sağlar.
Kod, merkezi bir repository'den çekilir. Bu adım, pipeline'ın başlangıç noktasıdır.
git clone https://github.com/username/project-name.git
Kodun çalışabilir hale gelmesi için derleme işlemi yapılır. Örnek:
dotnet build
Bu işlem, kodun hatasız şekilde derlenip derlenmediğini kontrol eder.
Derleme işleminden sonra testler ve statik kod analizleri çalıştırılır. Hataların erken tespit edilmesi bu adımda sağlanır.
dotnet test
Kod analiz araçları ile kodun kalite standartlarına uygunluğu kontrol edilir:
dotnet format
Derleme sonrası deploy edilebilir bir çıktı (artifact) oluşturulur. Örnek:
dotnet publish -c Release -o ./publish
Bu işlem, uygulamanın dağıtım için gerekli dosyalarını hazırlar.
Artifact, Docker container içinde çalıştırılabilir hale getirilir. Bu adım, uygulamanın bağımsız bir ortamda çalışmasını sağlar.
Dockerfile örneği:
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY ./publish .
ENTRYPOINT ["dotnet", "YourApp.dll"]
Docker image oluşturma:
docker build -t yourapp:latest .
Artifact, bir sunucuya (development, QA, staging, production) deploy edilir. Örneğin Docker kullanarak container'ı başlat:
docker run -d -p 5000:80 --name yourapp-container yourapp:latest
Alternatif olarak artifact dosyalarını uzak bir sunucuya SCP ile göndermek:
scp -r ./publish user@server:/var/www/yourapp
Fallback, hata veya başarısızlık durumunda bir önceki çalışan duruma geri dönme yaklaşımıdır. Bu yöntem, yazılım sistemlerinde hata yönetimini kolaylaştırır ve sistemin bir şekilde çalışmaya devam etmesini sağlar. Örneğin, bir yeni sürüm başarısız olursa eski bir sürüm aktif hale getirilir.
Avantajları:
Falling forward, hata meydana geldiğinde sistemi olduğu yerden devam ettirme yaklaşımıdır. Bu yöntem, küçük hataların üstesinden gelmek için hızlı düzeltmeler veya bypass çözümleri kullanmayı hedefler.
Avantajları:
Örnek: Bir ödeme sisteminde hata meydana geldiğinde, hatalı ödemeleri işaretleyip diğer işlemleri devam ettirmek.