Yeni başlayanlar için CICD: hangi araçlar var ve neden yalnızca büyük ve tanınmış şirketler bunları kullanmıyor?

CICD araçlarının geliştiricileri genellikle büyük şirketleri (Microsoft, Oculus, Red Hat, hatta Ferrari ve NASA) müşteri olarak listeliyor. Görünüşe göre bu tür markalar yalnızca birkaç geliştirici ve bir tasarımcıdan oluşan bir startup'ın karşılayamayacağı pahalı sistemlerle çalışıyor. Ancak araçların önemli bir kısmı küçük ekipler için mevcuttur.

Aşağıda nelere dikkat edebileceğinizi anlatacağız.

Yeni başlayanlar için CICD: hangi araçlar var ve neden yalnızca büyük ve tanınmış şirketler bunları kullanmıyor?
Fotoğraf - Csaba Balazları — Sıçramayı kaldır

PHP Sansürü

PHP'de proje oluşturmayı kolaylaştıran açık kaynaklı bir CI sunucusu. Bu projenin bir çatalı PHPCI. PHPCI'nın kendisi hala gelişiyor, ancak eskisi kadar aktif değil.

PHP Censor GitHub, GitLab, Mercurial ve diğer birçok depoyla çalışabilir. Araç, kodu test etmek için Atoum, PHP Spec, Behat, Codeception kitaplıklarını kullanır. Burada örnek dosya ilk durum için konfigürasyonlar:

test:
    atoum:
        args: "command line arguments go here"
        config: "path to config file"
        directory: "directory to run tests"
        executable: "path to atoum executable"

Bu inanılmaktadırPHP Censor'un küçük projelerin dağıtımı için çok uygun olduğunu, ancak bunu kendiniz barındırmanız ve yapılandırmanız gerekecek (kendi kendine barındırılan). Bu görev oldukça ayrıntılı belgelerle basitleştirilmiştir - GitHub'da.

hükümdar

Rex, Uzaktan Yürütme'nin kısaltmasıdır. Sistem, veri merkezindeki süreçlerin otomatikleştirilmesi amacıyla mühendis Ferenc Erki tarafından geliştirildi. Rex, Perl komut dosyalarını temel alır, ancak araçla etkileşim kurmak için bu dili bilmek gerekli değildir - çoğu işlem (örneğin, dosyaları kopyalamak) işlev kitaplığında tanımlanır ve komut dosyaları genellikle on satıra sığar. Birden fazla sunucuda oturum açmaya ve çalışma süresini çalıştırmaya ilişkin bir örnek:

use Rex -feature => ['1.3'];

user "my-user";
password "my-password";

group myservers => "mywebserver", "mymailserver", "myfileserver";

desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
   my $output = run "uptime";
   say $output;
};

Araçla tanışmaya şununla başlamanızı öneririz: resmi rehber и e-kitapşu anda tamamlanmak üzere.

Açık Derleme Hizmeti (OBS)

Bu, dağıtımların gelişimini optimize etmeye yönelik bir platformdur. Kodu açık ve şu adresteki depoda: GitHub. Aracın yazarı şirkettir Novell. SuSE dağıtımının geliştirilmesine katıldı ve bu projeye başlangıçta openSUSE Build Service adı verildi. Open Build Service'in kullanılması sürpriz değil Kullanılmış openSUSE, Tizen ve VideoLAN'da projeler oluşturmak için. Dell, SGI ve Intel de araçla çalışıyor. Ancak düzenli kullanıcılar arasında küçük girişimler de var. Yazarlar özellikle onlar için topladılar (sayfa 10) önceden yapılandırılmış yazılım paketi. Sistemin kendisi tamamen ücretsizdir; onu dağıtmak için yalnızca barındırma veya donanım sunucusuna para harcamanız gerekir.

Ancak varlığı boyunca araç hiçbir zaman geniş bir topluluk kazanmadı. Rağmen o Açık işletim sisteminin standartlaştırılmasından sorumlu Linux Geliştirici Ağının bir parçası. Zor olabilir Sorunuzun cevabını tematik forumlarda bulun. Ancak Quora sakinlerinden biri şunu kaydetti: IRC sohbeti Freenode'da topluluk üyeleri oldukça hızlı yanıt veriyor. Küçük bir topluluğun sorunu küresel değildir, çünkü birçok sorunun çözümü anlatılmıştır. resmi belgelerde (PDF ve EPUB). Aynı eser. mevcut OBS ile çalışmaya yönelik en iyi uygulamalar (örnekler ve vakalar vardır).

Güverte

Aracı aç (GitHub), komut dosyalarını kullanarak veri merkezi ve buluttaki görevleri otomatikleştirir. Bunların yürütülmesinden özel bir komut dosyası sunucusu sorumludur. Rundeck, ControlTier uygulama yönetimi platformunun “kızı” diyebiliriz. Rundeck 2010 yılında bundan ayrıldı ve Puppet, Chef, Git ve Jenkins ile entegrasyonlar gibi yeni işlevler kazandı.

Sistem şu şekilde kullanılır: Walt Disney Company, Satış Gücü и Ticketmaster. Ancak proje startuplara da uygun. Bunun nedeni Rundeck'in Apache v2.0 lisansı altında lisanslanmış olmasıdır. Üstelik aracın kullanımı oldukça kolaydır.

Rundeck'le çalışan bir Reddit sakini, diyor, zorlukların çoğunu kendi başıma çözdüm. Ona bu konuda yardımcı oldular dokümantasyon ve e-kitaplar, geliştiriciler tarafından yayınlandı.

Aracı çevrimiçi olarak kurmaya yönelik kısa kılavuzlar da bulabilirsiniz:

GoCD

Aracı aç (GitHub) kod sürümü kontrolünün otomatikleştirilmesi. Şirket tarafından 2007 yılında tanıtıldı THOUGHTWORKS - daha sonra projenin adı Cruise idi.

GoCD, çevrimiçi araba satış sitesi AutoTrader, şecere hizmeti Ancestry ve kredi kartı sağlayıcısı Barclaycard mühendisleri tarafından kullanılıyor. Ancak araç kullanıcılarının dörtte biri küçük bir işletme oluşturur.

Hizmetin yeni başlayanlar arasındaki popülaritesi açıklığıyla açıklanabilir - Apache v2.0 lisansı altında dağıtılmaktadır. Aynı zamanda GoCD vardır üçüncü taraf yazılımlarla entegrasyon için eklentiler - yetkilendirme sistemleri ve bulut çözümleri. Gerçek sistem oldukça karmaşık mastering'de çok sayıda operatör ve ekip var. Ayrıca, bazı kullanıcılar zayıf arayüzden şikayetçi ve gerek aracıları ölçeklendirme için yapılandırın.

Yeni başlayanlar için CICD: hangi araçlar var ve neden yalnızca büyük ve tanınmış şirketler bunları kullanmıyor?
Fotoğraf - Matt Wildbore — Sıçramayı kaldır

GoCD'yi pratikte denemek istiyorsanız proje web sitesinde bulabilirsiniz. resmi belgeler. Ayrıca ek bilgi kaynağı olarak da önerilebilir GoCD Geliştirici Blogu kılavuzlarla kuruluma göre.

Jenkins

Jenkins yaygın olarak biliniyor ve kabul CICD alanında bir tür standart - tabii ki o olmasaydı bu seçim tamamen tamamlanmış olmazdı. Araç 2011'de ortaya çıktı, tavır Oracle'dan Hudson Projesi'nin bir çatalı.

Bugün Jenkins'le çalışma NASA, Nintendo ve diğer büyük organizasyonlarda. Fakat Daha 8% kullanıcılar on kişiye kadar küçük ekiplerden oluşur. Ürün tamamen ücretsizdir ve dağıtılmaktadır MIT lisansı altında. Ancak Jenkins'i kendiniz barındırmanız ve yapılandırmanız gerekecektir; bu, özel bir sunucu gerektirir.

Enstrümanın tüm varlığı boyunca çevresinde büyük bir topluluk oluşmuştur. Kullanıcılar iş parçacıklarında aktif olarak iletişim kurar Reddit и google Grupları. Jenkins'le ilgili materyaller Habré'de de düzenli olarak yayınlanıyor. Topluluğun bir parçası olmak ve Jenkins ile çalışmaya başlamak istiyorsanız, resmi belgeler и geliştirici kılavuzu. Ayrıca aşağıdaki kılavuzları ve kitapları da öneririz:

Jenkins'in birçok yararlı yan projesi var. İlki bir eklentidir Kod Olarak Yapılandırma. Araç hakkında derinlemesine bilgisi olmayan yöneticilerin bile anlayabileceği, okunması kolay API'ler ile Jenkins'in kurulumunu kolaylaştırır. İkincisi ise sistem Jenkins X bulut için. Bazı rutin görevleri otomatikleştirerek büyük ölçekli BT altyapısında konuşlandırılan uygulamaların teslimini hızlandırır.

yapı robotu

Bu, uygulamaların oluşturulma ve test edilme döngüsünü otomatikleştirmeye yönelik sürekli bir entegrasyon sistemidir. Kodun işlevselliğini, üzerinde her değişiklik yapıldığında otomatik olarak kontrol eder.

Aracın yazarı mühendis Brian Warner'dı. Bugün o görevde değişmiş Altı geliştiriciden oluşan Buildbot Gözetim Komitesi girişim grubu.

yapı robotu kullanılmış LLVM, MariaDB, Blender ve Dr.Web gibi projeler. Ancak wxWidgets ve Flathub gibi daha küçük projelerde de kullanılır. Sistem tüm modern VCS'leri destekler ve bunları açıklamak için Python'u kullanan esnek yapı ayarlarına sahiptir. Hepsiyle başa çıkmanıza yardımcı olacaktır. resmi belgeler ve üçüncü taraf eğitimler, örneğin burada kısa bir eğitim var IBM kılavuzu.

Tabii ki, hepsi bu değil Küçük kuruluşların ve startupların dikkat etmesi gereken DevOps araçları. En sevdiğiniz araçları yorumlarda belirtin; aşağıdaki materyallerden birinde onlar hakkında konuşmaya çalışacağız.

Kurumsal blogda yazdıklarımız:

Kaynak: habr.com

Yorum ekle