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.ymlistifadə 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.