Sobes.tech
Junior

GitLab CI ilə təcrübəniz nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Mən avtomatlaşdırma layihələrində GitLab CI ilə işlədim, yığma, test və tətbiqetmə proseslərinin avtomatlaşdırılması.

Əsas vəzifələr:

  • Pipeline-lərin yaradılması və konfiqurasiyası: .gitlab-ci.yml istifadə edərək yığma, test və yerləşdirmə mərhələlərinin təsviri.
  • Runner-lərin idarə olunması: Paylaşılan və xüsusi runner-lərin konfiqurasiyası, qeydiyyatı və miqyaslandırılması (Docker Executive, Shell Executive).
  • Alətlərlə inteqrasiya: Kod analizi üçün SonarQube, imiclərin saxlanması üçün Docker Registry, Kubernetes-də yerləşdirmə üçün Helm ilə inteqrasiya.
  • Pipeline-lərin optimallaşdırılması: Asılılıqların keşi ilə yığmanın sürətləndirilməsi, tapşırıqların paralel icrası.
  • CI/CD tətbiqi: git flow Davamlı inteqrasiya və çatdırılma strategiyalarının hazırlanması, o cümlədən testlərin uğurlu keçməsindən sonra avtomatik yerləşdirmə.
  • Artefaktlarla işləmək: Yığma və test nəticələrinə giriş və saxlanması üçün konfiqurasiya.
  • Yerləşdirmənin avtomatlaşdırılması: dpl, GitLab Pages, Ansible və Terraform ilə infrastrukturun inteqrasiyası.

Konfiqurasiya nümunələri:

image: docker:latest # Yığma üçün Docker imicindən istifadə

services:
  - docker:dind # Docker in Docker ilə konteynerlərin yığılması üçün

variables:
  DOCKER_REGISTRY: $CI_REGISTRY # GitLab registry-ə yol üçün dəyişən

stages:
  - build
  - test
  - deploy

build_image:
  stage: build
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY # Registry-ə giriş
    - docker build -t $DOCKER_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA-$CI_COMMIT_REF_SLUG . # Etiketlə yığma
    - docker push $DOCKER_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA-$CI_COMMIT_REF_SLUG # İmici registry-ə yükləmə
  only:
    - main

run_tests:
  stage: test
  image: python:latest # Testlər üçün Python imicindən istifadə
  script:
    - pip install -r requirements.txt # Asılılıqları quraşdırma
    - pytest # Testlərin işlədilməsi
  only:
    - merge_requests

deploy_staging:
  stage: deploy
  environment:
    name: staging
    url: https://staging.example.com # Mühitin URL-si
  needs: ["run_tests"] # Testlərin uğurlu olması şərti
  script:
    - # Staging-ə yerləşdirmə üçün komandalar (məsələn, Helm vasitəsilə)
  only:
    - main

deploy_production:
  stage: deploy
  environment:
    name: production
    url: https://example.com # İstehsal URL-si
  needs: ["deploy_staging"] # Staging-ə yerləşdirmənin uğurlu olması şərti
  script:
    - # İstehsala yerləşdirmə üçün komandalar (məsələn, əl ilə və ya cədvəl üzrə)
  when: manual # İstehsal üçün əl ilə işə salma
  only:
    - main

İşləmiş aspektlər:

Aspekt Təcrübə
runnersExecutors Docker, Shell
cache Yığmanı sürətləndirmək üçün istifadə
artifacts Logların, hesabatların, yığılmış artefaktların saxlanması
environments Yerləşdirmə üçün mühitlərin təyin edilməsi
variables Gizli dəyişənlər, CI/CD dəyişənləri
rules/only/except Job-un şərti icrası
include Konfiqurasiyanın kiçik fayllara bölünməsi
triggers Xarici hadisələrə görə pipeline-lərin başlaması
child pipelines Çətin layihələr üçün alt pipeline-lər
job dependencies Job-lər arasında asılılıqların qurulması

Möhkəm CI/CD prinsiplərini başa düşürəm və GitLab CI-dən istifadə edərək etibarlı və avtomatlaşdırılmış inkişaf və yerləşdirmə prosesləri qura bilirəm.