GitLab: Yeniden kullanılabilir boru hatları oluştur CI/CD | Haberler Online

Saberie

Active member
Birçok kuruluşta, yazılım ekipleri kod, test, tarama, yapı ve dağıtım kontrolleri gibi yinelenen faaliyetlerle başa çıkmak için CI/CD boru hatlarını geliştirir. Bu bireysel prosedür genellikle konfigürasyon ve bakım için işe yaramaz ek bir çabaya yol açar, bu da yeni özelliklerin geliştirilmesine daha iyi yatırım yapacak zamana mal olur. Takımlar arasındaki görevler ve iş akışları benzer olsa da, her takım mevcut çözümlerden yararlanmak yerine tekerleği yeniden keşfeder. Bu uygulama, serbest bırakma döngülerini genişletebilir ve ekiplerin verimliliğinden ödün verebilir.










Şu anda Kıdemli Bir Yazılım Mühendisi olarak Dennis, DevSecops ile birlikte mimarlık ve yazılım geliştirme konularında uzun yıllar deneyime sahiptir. Ölçeklenebilir ve sağlam uygulamaların oluşturulması Dennis için ön plandadır.







Bu zorluklarla yüzleşmek için, boru hattı CI/CD için şirket düzeyinde standart oluşturmak mantıklı olacaktır. Bu, kataloglanan, belgelenmiş ve merkezi olarak iyi bilinen iş modelleri ve GitLab bileşenleri gibi standart yeniden kullanılabilir modüller sağlayarak yapılabilir. Bu modüller, karmaşık bağımlılıklar veya çeşitli parametreler olmadan, farklı ekipler tarafından kolayca kurulacak, değiştirilmesi veya büyütülmesi için jenerik ve esnek olmalıdır. Şirket düzeyinde bir standart verimliliği artıracak ve tüm ekiplerin kanıtlanmış ve istikrarlı çözümlere düşebilmesini sağlayacaktır, bu da sonunda gelişimi hızlandırır ve yazılımın kalitesini artırır.



İlk yaklaşım ve gereksinimler


İlk adımda, programlama dili tarafından kullanılan teknolojileri, ortaya çıkan eserleri, yapılandırma dosyalarını kaydetmek ve CI/CD boruları için gerekli adımları, adımların bağlamının bağlamlarını ve sınırlarını tamamen tanımlamak önemlidir.

Aşağıdaki senaryolar, bir Maven projesi şeklinde bir GITLAB deposunda bulunan bir Java uygulamasına dayanmaktadır. Bu nedenle teknolojik yığın şunları içerir: CI/CD sistemi olarak Java, Maven, Docker ve GitLab. Java kaynak kodu önce kontrol edilmeli, test edilmeli (birim testler) ve bu nedenle tamamlanmalı, yani “testler” ve “yapı”.

Uygulama dizinin yapısı:



  • Uygulama/
    • .Mvn/sargı
    • Uygulamanın SRC # Java Kaynak Kodu
    • .Gentignor
    • Sargı MVNW # Maven
    • pom.xml
“Naif” yaklaşım


İki GitLab çalışma modelleri ve gitLab bileşenleri kullanılmadan önce, testlerin ve yapının “saf” bir boru hattı başlangıçta prosedürü göstermelidir.

Birim testlerini gerçekleştirmek için, CLI Maven aracı komutla birlikte verilmiştir. mvn test kullanılmış. Komuta mvn package Uygulama derlemesini atın. Her iki adım da, CLI Maven aracının bulunabileceği Docker kabının bir görüntüsünü gerektirir ve MVNW sarma dosyası, uygulamalar deposunda bulunmayan kullanılabilir. Aksi takdirde, MVN yerine,/MVNW komut dosyası aynı ada sahip parametrelerle gerçekleştirilmelidir.

Docker dosyası aşağıdaki gibi tanımlanmıştır:



# syntax=docker/dockerfile:1

MAINTAINER <maintainer-name>

FROM docker.io/library/debian:bookworm-slim

ENV TZ=Europe/Berlin # tzdata vorausgesetzt

RUN apt-get install -y mvn

RUN useradd -u 10001 noadmin

USER noadmin


Docker dosyası için aşağıdaki yönler gözlemlenmelidir:

  • Docker dosyasının belirli bir sürümü belirtilmelidir.
  • Docker konteynerinin görüntüsü (buradaki Hub Docker'dan elde edilir) hafif olmalıdır. Yalnızca sicilden indirmenin hızlı bir şekilde gerçekleştirilmesi ve bilgisayar korsanları için saldırı alanlarının küçük kalması için gerçek etkinliği doğru bir şekilde yerine getirmek için gerekli programları ve kütüphaneleri içermelidir.
    • Ayrıca, Hub Docker'da bulunan güvenlik açıklarına dikkat edin.
  • Maven-Cli kurulmuş ve kullanılabilir.
  • Saat dilimi, zaman damgalarının bile doğru görüntülenebileceği şekilde ayarlanmalıdır.
  • Docker kabının görüntüsü “köksüz” dir. Dolayısıyla, komutlar oluşturmak ve işlemleri başlatmak özel bir kullanıcıdır.
    • Bu kullanıcı, dayanıklılık için güvenliği artırmak için Kubornetes tasarım kaynaklarında (GitLab koşusu gibi) güvenlik bağlamında kullanılan bir UID alır.
Bir konteyner görüntüleri deposu tarafından elde edilebilmesi için konteynerin görüntüsünün önceden oluşturulması önerilir.

Bu hazırlık çalışmasını tamamladıktan sonra, uygulama topunun uygulanmasının kökeninde ilk .gitlab-ci.yml boru hattı gitLab aşağıdaki gibi tanımlanmıştır:



# Stages und Abfolge definieren
stages:
- test
- build

# Code liegt bereits vor
run_maven_test:
stage: test
image:
name: <custom container image> # based on docker.io/library/openjdk:21
entrypoint: [""]
script:
- echo "Run Unit Tests with Maven"
- mvn test

run_maven_compile:
stage: build
image:
name: <custom container image> # based on docker.io/library/openjdk:21
entrypoint: [""]
script:
- echo "Run Build with Maven"
- mvn compile


Uygulama deposundaki boru hattı dosyasını kontrol ettikten sonra, çalışma sinyale geçer. Gitlab-koşucu kullanılabilir olur olmaz, tanımlanan adımlar sırayla gerçekleştirilir.

Açıklanan yaklaşımın hemen tanınabilir bir dezavantajı vardır: iş akışı, bir referansla doğrudan diğer projelerde gerçekleştirilemez, örneğin include – Temiz önemlidir. Bu durumda en basit çözüm bir kopya ve yapıştırmadır. Bununla birlikte, aynı kod dağıtılır ve her yerde ve dolayısıyla birkaç kez tutmanız gerekir.

Bu ek faaliyetler daha karmaşık, daha fazla aşamadır ve bu nedenle adımlar bir GitLab boru hattı içerir. Örneğin, “sırların taranması” (sırların tespiti ile tespit etmek için), “CVE taraması”, “yapı-kontorer imajı” ve “bağımlılıkların güncellenmesi için” bağımlılıkların güncellenmesi için “bağımlılıkların güncellenmesi için) (bağımlılıkların güncellenmesi için) aşamaları.






(Resim: cloudland.org)


1-4 Temmuz 2025 tarihleri arasında, ilgili taraflar, platformun mühendisliği teması da dahil olmak üzere Cloud Native Festival Cloudland'da 200'den fazla vurgula eksiksiz bir eğitim bulacaklar. Ziyaretçiler, sizi aktif olarak katılmaya davet eden eksiksiz bir destek programı eşliğinde çoğunlukla etkileşimli oturumlar, eller ve atölyelerin renkli bir karışımını bekleyebilirler.

Hiperscaler AWS, Azure ve Google Cloud topluluklarının konuları ile karakterize edilen maksimum on akış üzerine dağıtıldığında, oturumlar vardır:

  • Yerel Yazılım Mühendisliği Bulutu
  • Mimarlık
  • AI & Ml
  • Veri ve BI
  • İtaatkâr
  • Halka açık bulut
  • Güvenlik ve uyumluluk
  • Organizasyon ve kültür
  • Egemen bulut
  • Hesaplayın, Depolama ve Ağ
Festival biletleri hala 6 Mayıs'a kadar mevcuttur.
 
Üst