Sobes.tech
Middle

Kas notiek pēc tam, kad GitLab lejupielādē kodu?

sobes.tech AI

Atbilde no AI

Pēc tam, kad GitLab lejupielādē koda repozitoriju darba direktorijā, sākas CI/CD pailpajins, kas ir definēts .gitlab-ci.yml failā.

  1. .gitlab-ci.yml analīze: GitLab Runner (vai pats GitLab, ja tiek izmantots integrēts CI) lasa konfigurāciju no .gitlab-ci.yml. Šis fails apraksta posmus (stages) un uzdevumus (jobs) pailpajinam.
  2. Runner'a inicializācija: Piešķirts pieejams GitLab Runner pailpajina izpildei. Runner saņem informāciju par repozitoriju, komītu, zaru un .gitlab-ci.yml konfigurāciju.
  3. Vykdymo vides sagatavošana: Runner sagatavo vidi uzdevumu izpildei. Tas var būt:
    • Virtuālā mašīna
    • Konteineris (Docker, Kubernetes)
    • Atvēlēts serveris
    • Shell
  4. Posmu (stages) izpilde: Pailpajins tiek izpildīts pa posmiem, kas ir definēti .gitlab-ci.yml. Viena posma uzdevumi var tikt izpildīti paralēli.
  5. Uzdevumu (jobs) izpilde: Katram posmam tiek izpildīti konfigurētie uzdevumi. Uzdevums ietver:
    • Attēla vai izpildītāja (executor) noteikšanu, ja tas nav norādīts pailpajina vai variables sadaļā.
    • Repozitorijas klonēšanu (jau veica GitLab, bet Runner var izpildīt git fetch vai git checkout nepieciešamajam stāvoklim).
    • Keša atjaunošanu (ja tas ir konfigurēts) paātrinājumam (piemēram, atkarību lejupielādei).
    • Skriptu izpildi (script): tas ir galvenais uzdevuma saturs, kur tiek izpildītas būvniecības, testēšanas, analīzes vai izvietošanas komandas.
    • Artefaktu augšupielādi (ja tas ir konfigurēts): uzdevuma rezultāti (piemēram, kompilētas binārās, ziņojumi) tiek saglabāti turpmākai izmantošanai vai augšupielādei.
    • Keša saglabāšanu (ja tas ir konfigurēts) nākotnes palaišanas paātrināšanai.
  6. Statusa ziņojums: Runner nosūta statusu par katru uzdevumu (veiksme, kļūda, atcelšana) atpakaļ uz GitLab. Lietotājs redz progresu un rezultātus pailpajina lapā.
  7. Nākamā posma pāreja: Ja visi uzdevumi pašreizējā posmā ir veiksmīgi pabeigti (vai ir iestatīts allow_failure), tiek uzsākts nākamais posms. Ja uzdevums beidzas ar kļūdu un allow_failure nav iestatīts, viss pailpajins tiek pārtraukts.
  8. Pailpajina noslēgums: Pēc visu posmu izpildes (vai kļūdas gadījumā) pailpajins tiek pabeigts. Rezultāti un artefakti ir pieejami caur GitLab tīmekļa saskarni.

Piemērs struktūrai /.gitlab-ci.yml`:

// Definējam pailpajina posmus
stages:
  - build
  - test
  - deploy

// Būvniecības uzdevums build posmā
build_job:
  stage: build
  image: docker:latest // Izmanto Docker attēlu
  script:
    - echo "Būvējam lietojumprogrammu..."
    - docker build -t myapp:$CI_COMMIT_SHORT_SHA . // Būvē Docker attēlu
  artifacts:
    paths:
      - myapp.tar // Saglabā būvniecības artefaktu

// Testēšanas uzdevums test posmā
test_job:
  stage: test
  image: python:3.9 // Izmanto Python attēlu
  script:
    - echo "Vykdome testus..."
    - pip install -r requirements.txt
    - pytest // Vykdome testus
  needs: ["build_job"] // Atkarīgs no veiksmīga build_job pabeigšanas

// Deploy uzdevums deploy posmā
deploy_job:
  stage: deploy
  image: ubuntu:latest // Izmanto Ubuntu attēlu
  script:
    - echo "Deploying the application..."
    - echo "Deploy script goes here..." // Deploy skripts
  only: // Palaiž tikai pie master vai zīmēm
    - master
    - tags
  needs: ["test_job"] // Atkarīgs no veiksmīga test_job pabeigšanas

Tādējādi, koda lejupielāde ir tikai pirmais solis, kam seko sarežģīts automatizētas būves, testēšanas un izvietošanas process, balstīts uz .gitlab-ci.yml konfigurāciju.