SVN Web Sitesi Geliştirme ve Dağıtım Çözümü

7 Cevap php

İşte durum: Biz komut deneyimi değişen derecelerde ile birden geliştiriciler var ve bizim web siteleri için bir dağıtım çözümü araya sokmaktadırlar. Üretim ortamı 2 SUSE Linux kutuları olduğunu. Geliştirme ortamı yanı sıra bir SUSE Linux kutusudur. Her geliştirici / geliştirme ve test için kendi ev dizininde SVN ağacının bir kopyasına sahip olacaktır gelmiştir.

Amacı birden fazla üretim sunucuları ile çalışacak dönmek için kullanımı kolay ve kolay bir sürüm sistemine sahip olmaktır. Olmayan bir web geliştirici (değil sadece web dünyasında hala kodlayıcı) kolayca de web sitelerinin herhangi dönmek olabilir eğer bir bonus olacaktır. Optimal bir dünyada, serbest serbest bırakmak istediğiniz web sitesinde tek bir komut koşma gibi basit olurdu. Bu komut üretim sunucularını güncellemek ve onun ardından bir döndürme yolu bırakacaktı.

Mevcut dağıtım çözümü biraz aksak dönmek oldukça zor ve kir gibi yavaş. Şu anda SVN kullanarak tüm dosyaları kontrol edin. Sonra komut aslında SVN'de bir etiket oluşturur çalıştırılır. İkinci bir komut 2 üretim sunucularının her üzerine gider ve bir 'svn up' çalışır o zaman çalıştırılır.

Herhangi bir öneriniz?

7 Cevap

Ben bir. Net bir adamım ve bu nedenle pencereler dünyadaki şeyler ile çalışmak ... gerçi inşa süreçlerini yönetmek için bir günlük bazda çalışmak teknolojileri dünyaya geldiğini söyledikten! ({[(3 (CruiseControl), VisualSVN ben kullanmak CruiseControl.NET (Linux / java teknolojileri parantez içinde ama ben çok pencereleri okuyucular için onların eşdeğer dahil) )]}), Tortoise, ve NAnt (Ant) benim yapı tüm ihtiyaçlarını dikkat çekmek için.

Benim oluşturur Bütün genelde otomatik itti ve benim kaynak denetimi (SVN veya SubVersion) izler gibi bu CruiseControl ile yapılır check-in sırasında etiketlenir. CruiseControl (CC) yeni kod sırayla yapı sunucu üzerinde Ant script dışarı çağıran bir CC projeyi yürütecek kontrol edildiğini görür.

Ant komut ortak bir yapı içinde benim için birçok şeyi yapar. Bu son kodunun bir kopyasını kontrol ve yapım sunucusu aşağı getirecektir. Daha sonra işler en azından derleme emin olmak için kod inşa edecek. Daha sonra benim veritabanı temiz bir kopyasını ayarlar ve güncel sürüme kadar db bu temel kurmak için herhangi bir sql komut çalıştırır. Sonra benim birim test tüm projeleri çalıştırın. Ben daha sonra diğer şeyler arasında kod hala benim arka uç (onlar senkronize dışında nadiren yüzden ben genellikle benim projelerde bir ORM kullanmak ile uyumlu olduğundan emin olmak için benim depo katmanı sınamak entegrasyon testleri çalıştırmak ... ama iyi bir adım sürecinde). Bir kere tüm testleri temiz bir duruma veritabanını geri almak ve onu tıkla karşı geliştirmek için temiz bir veritabanı ile ekip sağlar gibi (bu önemli güncel sürüme kadar getirmek için komut dosyalarını yürütmek geçti (ya da başarısız) var Bir düğmeye). Inşa başarılı olursa o zaman ben (ben de benim sunucuları hazırlama ve üretim sunucuları için tek tıklama dağıtım var) geliştirme sunucuya dışarı kodunu dağıtmak olacaktır. Eğer her çek ile kod tabanı etiketlemek istiyorsanız bunu burada da yapabiliriz.

Bir kere bütün bu I NDepend, NDoc kullanarak benim kod bazı analiz çalıştırmak istiyorum, ve NCover tamamlandı. NDepend şey olması gerektiği gibi adlandırma standartları olduğunu, mimari doğru, ve daha bir sürü emin olmak için bir kod analiz aracıdır. Ndoc kod yorumların tüm ayıklar ve benim kod MSDN tarzı belgeler oluşturur. Benim kod birim testler ile uygun kapsama varsa NCover söyledi.

Ben o zaman bu bina ne kadar bok (sprint sonunda genellikle) bana başka bir rapor oluşturmak ve / / CodeDebt etiketleri çeşitli / / TODO için benim kod tüm ayrıştırır yazdığı özel bir Ant görev var Benim kod tabanı yukarı. Bu daha sonraki sürat çarpanlarına olabilir.

Bu raporların tümü ya gider ya da çok uygun bağlantılı yapı e-posta dahil edilmiştir.

Her .. check-in ve kimse bile bir düğmesini tıklatın kalmadan için yukarıdaki bütün olur unutmayın! Bu doğrudur sürekli entegrasyon ve her yapı ustası hedefi olmalıdır.

CruiseControl da olmayan web dev adamlar (kimse gerçekten) gitmek ve kod kontrol etmeden bu itme yürütmesine olanak sağlayacak web tabanlı bir konsol vardır ... bir yapı zorlama denir.

Kolayca da sürece her şey sürüm kontrolü altında olduğu gibi bir itme geri dönebilirsiniz bu çerçeve göz önüne alındığında. Sen aynı işlemi yapmak istiyorsunuz başka Ant script gerekir ama bu bir ek birinci görevi bu üzerinde inşa sürecini gerçekleştirmek yerine en son daha kodunun son sürümünü almak gerekir. Ant tüm görevleri farklı bir yürütme hedefi ile tekrar edilebilir.

Capistrano harika bir çözümdür. Başlangıçta Raylar platformda Ruby için geliştirilmiş olsa da, ben PHP bir dizi proje başarıyla kullandım. SSH yoluyla gerçekleştirilen eylemleri otomatikleştirir. Her dağıtım yeni bir dizine teslim çünkü dağıtımları atom vardır.

Geçerli kopya sembolik bir bağlantı kullanılarak açılır. Kaynak son sürümü arşivdekini çekilir. Ayrıca üretim ortamında kullanmak için statik konfigürasyon dosyalarını kurabilirsiniz.

Eğer dağıtımlar arasında veritabanı değişiklik yapıyoruz burada dikkatli olmak zorunda rağmen Capistrano ayrıca, rollbacks destekler. migrations, bu sorunu çözmek için dbdeploy veya raylar gibi bir şey kullanmayı düşünün.

Sadece, basit tutmak SpringLoops a try. It's a hosted svn service with options to deploy (and revert) to different servers vermek. Bu, gerçekten kullanımı kolay ve düzmece ücretsiz sürümü sadece tek bir sunucuya dağıtmak sağlar, ama ödemek için istekli iseniz, farklı sunucularda (evreleme, geliştirme ve üretim) dağıtabilir.

Ücretsiz olarak herhangi paketleri 30 gün alabilir, bu yüzden size gereken birçok sunucuları ile test edebilirsiniz. Ben springloops bağlı değilim. Ben sadece bunu kullanmak ve kullanışlı ve sade basit buluyorum.

Içine çalıştırabilirsiniz şeylerden biri farklı sürümleri adresinden farklı veritabanı yapıları arasında ileri ve geri olduğunu. Daha çok bunu gerekli başlatma veri varsa. Ben aramak ama oldukça bu gibi burada da benzer sorular olduğunu hatırlamıyorum ..

Eğer / karınca phing veya xinc veya phpUnderControl gibi hatta bir CI çözüm gibi araçları oluşturmak, mevcut baktınız mı?

Yıkıcı güncelleştirmeleri işlemek için basit bir yolu yoktur çünkü benim deneyim, "Geri Döndür" özelliği, korumak için neredeyse imkansızdır. O dedi, kesinlikle sadece svn up daha iyi yapabilirim. En azından, sen kodundan sonra çalıştırın bir betik (veritabanı vb değişiklik yapmak) uygulamasını yama olabilir, kontrol edilir olmasını isterdim. Muhtemelen de gerçek güncelleme atom yapmak isterdim, bu yüzden geçici bir klasöre size svn export tavsiye ve sonra bitirdiniz kez klasöre işaret etmek için bir sembolik bağ güncelleştirmek. Muhtemelen de yamalar çalışması sırasında herhangi bir hizmet durdurmak isterdim.

Sen güzel bir paket içinde tüm kadar sarılması için Capistranoda gibi bir şey kullanarak içine bakmak olabilir. Bu oldukça biz-tabanlı GUI (Webistrano) ile birlikte gelir.

Ben size üretim sunuculara dosya dağıtma varsa o kukla iki yapılandırmaları yönetimi için harika bir araçtır ve aynı zamanda yıkıcılık (ya da git) gelen içerik dağıtma için kullanılan olabileceğini düşündürmektedir. Arama kukla ve vcsdeploy modülü http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff kukla demirci üzerinde.