Sobes.tech
Middle+

GitLab CI-də daxil etmələr və nişanlar istifadə edərək nə qədər mürəkkəb pipeline-lər yazmısınız?

sobes.tech Süni İntellekt

AI-dan cavab

GitLab CI boru xətlərində işlədim, kodun strukturlaşdırılması və təkrar istifadəsi üçün daxil etmələr və anklardan istifadə edən, müxtəlif mürəkkəblikdə layihələrdə.

Tipik istifadə ssenariləri: mikroxidmətlər üçün müxtəlif mühitlərdə (inkişaf, sınaq, istehsal) quruluş boru xətləri.

İstifadə edirəm:

  • Xarici daxil etmələr: mərkəzləşdirilmiş depozitdən ümumi quruluş, test və yerləşdirmə şablonlarını qoşmaq üçün.
  • Yerli daxil etmələr: böyük .gitlab-ci.yml faylını kiçik və oxunaqlı hissələrə bölmək üçün (məsələn, quruluş növü və ya mərhələ üzrə).
  • Anklalar (&) və istinadlar (*): Docker şəkillərinin konfiqurasiyası, ümumi skriptlər və ya tapşırıq parametrlərini təkrar istifadə etmək üçün.

Mürəkkəblik nümunələri:

  • Commit növü, təsir edən fayllar və ya filial əsasında şaxələnən boru xətləri.
  • rules və ya only/except istifadə edərək daxil etmələr ilə müəyyən tapşırıqları və ya boru xətlərini daxil etmək və ya çıxarmaq.
  • Anklalar və daxil etmələrin birləşməsi ilə parametrli tapşırıq şablonları yaratmaq, bunlar uşaq fayllarda asanlıqla yenidən konfiqurasiya oluna bilər.
# .gitlab-ci.yml - struktur nümunəsi
include:
  - project: 'common/ci-templates'
    ref: main
    file: '/templates/build-java.yml' # Ümumi Java quruluş şablonu

  - local: '.gitlab-ci/deploy-prod.yml' # Yerli yerləşdirmə faylı

variables:
  SERVICE_NAME: my-service

stages:
  - build
  - test
  - deploy

# Ümumi konfiqurasiyalar üçün ankladan istifadə
.base_job: &base_job
  image: ubuntu:latest
  before_script:
    - echo "Starting job..."

build-job:
  <<: *base_job # Ankaranın tətbiqi
  stage: build
  script:
    - echo "Building $SERVICE_NAME"

# common/ci-templates daxilində təyin olunmuş tapşırıq
# java-build:
#    <<: *base_job
#    stage: build
#    script:
#      - mvn clean package
# ... (digər tapşırıqlar)

Effektiv daxil etmələr və anklardan istifadə, miqyaslana bilən və asan saxlanılan CI/CD boru xətləri yaratmağa imkan verir, kod təkrarlamasını azaldır və konfiqurasiya idarəsini sadələşdirir. Mürəkkəblik adətən xidmətlərin sayı, texnologiyaların müxtəlifliyi və boru xəttinin tələb olunan elastikliyi ilə müəyyən edilir.