Building the continuous integration layer in Avea
-
Upload
oguzhan-ozavar -
Category
Technology
-
view
167 -
download
0
description
Transcript of Building the continuous integration layer in Avea
Building the Continuous Integration Layer in Avea
Oğuzhan ÖzavarIT Development Lead, Avea
[email protected]@gmail.com
© 2013 IBM Corporation
2
Gündem
CI – CD Giriş
İlk hedef verimli kod geliştirme
– Kaynak Kod Yönetimi
– Build & Deployment otomasyonu
– Test odaklı geliştirme
– Statik kod analizi
Nihai hedef verimli yaşam döngüsü yönetimi
– Testlerin otomasyonu
– Çevik iterasyonlar
– Lab Yönetimi
– Build Pipeline Yönetimi
3
Continuous Integration – Continuous Delivery
Analiz & Tasarım
Çevik İterasyonlar
Test
Test OtomasyonLab Yönetimi
Geliştirme
Kaynak Kod YönetimiBuild & Deployment Otomasyonu
Test Odaklı GeliştirmeStatik Kod Analizi
Continuous Delivery
Continuous Integration
4
İlk Hedef Verimli Kod Geliştirme
Team ConcertSource Control
•Uygulama kodu•Test kodu
Team ConcertBuild Definitions
•Build parametreleri•Build takvimi
Maven & Ant
RTC
EclipseRTC Client
Lokal Build
Build Sunucu
Kod İlet
Build Tanımla
Team ConcertBuild Process
Kodları İndir
Nexus Sonar
KullanıcılarıBilgilendir
ReferanslarıYönet
Oluşan paketiversiyonla
Statik AnalizTetikle
BuildTetikle
Unit TestFramework
Unit Test Tetikle
SonuçlarıYayınla
Continuous Dev BuildDöngüsü
5
Kaynak Kod Yönetimi
Tüm uygulamalar merkezi RTC repository de tutuluyor
Paralel dev streamler tek bir production streame akacak şekilde tanımlı
Sürüm planlamasına göre production streame manual merge yapılıyor
6
Build & Deployment Otomasyonu
Yeni bir uygulama geliştirirken Otomatik build & deployment en başta gerçeklenmeli
Büyük bir uygulama sonradan otomatize edildiğinde refactoring gerekebilir
– Circular Dependency
– Hardcode Ortam Parametreleri
– Dizin yapısı
– Referanslar
Maven
– Birçok konuda standartlaşmayı sağlıyor (otomatik dokumantasyon, otomatik versiyonlama vb.)
– Referanslar otomatik yönetiliyor.
– Bir artifact repository ile kullanıldığında kontrol sağlanabilir
– Çok sayıda plugin mevcut
7
Test Odaklı Geliştirme
Uygulama kodunu geliştirmeden önce test kodunun geliştirilmesi felsefesine dayanır
– Birim geliştirme maliyetini artırır
– Geliştirme kaynaklı hata sayısı sıfıra yaklaşır
– Refactor işlemleri korku olmaktan çıkar
– Yeni başlayan biri saatler içinde release yapabilir
Teknolojiye uygun unit test framework belirlenir
– Junit (Java) Nunit (.Net) utPLSQL (Oracle DB) SoapUI (web services)
Build mekanizmasına eklenerek geliştirme sürecinde tüm testlerin sürekli çalışır halde olması garanti altına alınır
Testlerin yazılmasını garanti altına almak için minimum test kapsama oranı belirlenerek build mekanizmasında kontrol edilebilir
8
Test Odaklı Geliştirme
9
Statik Kod Analizi
Kaynak kodların endüstri standartlarına göre yapısal analizini sağlayan bir framework belirlenir
Build mekanizmasına eklenerek geliştirme sürecinde istenmeyen paternlerin yakalanması sağlanır
Belirlenen politikaları ihlal eden bulgular için otomatik hata kaydı açılması sağlanır
Satınalmalarda önemli bir başvuru kaynağı
Dışarıya iş yaptırılması sürecinin yönetilmesinde önemli bir girdi sağlar
10
Nihai Hedef: Verimli Yaşam Döngüsü Yönetimi
Serbest Manual Süreç Continuous Delivery
11
Testlerin Otomasyonu
Jenkins
Avea QCInterface
HP Quality Center
Rational Team Concert
App 1 Build
App 2 Build
App 3 Build
IntegrationBuild
Test Ortamı
Testleri koş
Entegrasyon kapsamındaki buildleri çalıştır
Test başlat
KurulumYap
12
Çevik İterasyonlar
Fonksyonel testlerin süreki bir döngüde koşulabilmesi için çevik iterasyonlar gerekli
Çevik iterasyonlarda analiz ve tasarım storyler bazında yapılmalı
Test otomasyonun ihtiyaç duyduğu girdiler hızlı bir prototip geliştirilerek sağlanmalı
Çevik iterasyon planlarının yapılabildiği bir ortam belirlenir. Bu ortamın continuous integration katmanı ile entegre çalışması tercih sebebi olmalıdır. (RTC, TFS, Jira vb.)
13
Lab Yönetimi
Statik test ortamlarının ortaklaşa kullanımı test otomasyonu için zorluk yaratıyor
– Devam eden diğer testler ile senkronize olma gereği
– Uygulama versiyonlarının ve datanın başlangıçtaki haline dönülmesi
– Ortam kısıtlamaları (WLS node larda admin console un ortak olması vb.)
– Performans sorunları
Lab Yönetimi
– Ortamlar otomasyon test öncesi ayağa kaldırılır, işi bitince geri dönüştürülür
– Ortamların sanallaştırılması dolayısı ile ciddi donanım ve sistem yatırımı gerektirebilir
– Donanım verimliliği homojendir
– Diğer testlere bağımlılık yoktur
– Ortam kısıtlamaları minimumdadır (Sanallaştırlamayan sistemler hariç)
– Büyüme ölçeklendirilebilir durumdadır
14
Build Pipeline Yönetimi
Dev, Test ve Production döngülerini koordine eden ve tekrar edebilen bir süreç oluşturulabilmeli
Otomasyon adımları ile manual adımlar aynı süreçte kurgulanabilmeli
Ürüne ait tüm uygulamaların hangi ortamda ve hangi aşamada olduğunun takibi tek yerden yapılabilmelidir
15
Build Pipeline Yönetimi
16
Teşekkürler
Soru - Cevap
?