Sobes.tech
Junior

Τι συμβαίνει μετά το GitLab κατεβάσει τον κώδικα;

sobes.tech AI

Απάντηση από AI

Μετά τη λήψη του κώδικα (κλωνοποίηση του αποθετηρίου), το GitLab CI/CD εκτελεί ένα pipeline — ένα σύνολο εργασιών (jobs) και σταδίων (stages), ορισμένων στο αρχείο .gitlab-ci.yml στη ρίζα του αποθετηρίου.

Τα βασικά στάδια ενός τυπικού pipeline μετά τη λήψη του κώδικα:

  1. Stages: Το pipeline διαιρείται σε στάδια, που εκτελούνται διαδοχικά. Οι εργασίες σε ένα στάδιο μπορούν να εκτελεστούν παράλληλα.
  2. Jobs: Κάθε εργασία εκτελείται σε έναν ξεχωριστό Runner. Ένας Runner είναι ένας πράκτορας που λαμβάνει την εργασία από το GitLab CI/CD και την εκτελεί.
  3. Commands: Μέσα σε κάθε εργασία, εκτελούνται οι εντολές που ορίζονται στη ενότητα script στο .gitlab-ci.yml. Αυτές οι εντολές μπορεί να περιλαμβάνουν:
    • Την κατασκευή του έργου (π.χ., μεταγλώττιση κώδικα, συσκευασία artefacts).
    • Την εκτέλεση δοκιμών (μοναδικών, ολοκληρωμένων κ.λπ.).
    • Τον έλεγχο ποιότητας κώδικα (linting, στατική ανάλυση).
    • Τη δημιουργία εικόνων Docker.
    • Την ανάπτυξη σε περιβάλλοντα δοκιμών, staging ή παραγωγής.
    • Άλλες απαραίτητες ενέργειες.
  4. Dependencies (Εξαρτήσεις): Οι εργασίες μπορεί να εξαρτώνται από τα αποτελέσματα προηγούμενων εργασιών, χρησιμοποιώντας τη λέξη-κλειδί needs.
  5. Artifacts (Artefacts): Τα αποτελέσματα των εργασιών (π.χ., μεταγλωττισμένος κώδικας, αναφορές δοκιμών, εικόνες Docker) μπορούν να αποθηκευτούν ως artefacts, που είναι διαθέσιμα για λήψη ή χρησιμοποιούνται σε επόμενες εργασίες.
  6. Caching (Αποθήκευση): Εξαρτήσεις ή προσωρινά αρχεία μπορούν να αποθηκευτούν στην cache μεταξύ των εκτελέσεων εργασιών για ταχύτερη εκτέλεση.
  7. Reporting (Αναφορές): Τα αποτελέσματα εκτέλεσης (επιτυχία/αποτυχία), τα logs και τα artefacts είναι διαθέσιμα στη διεπαφή του GitLab.

Παραδείγματα δομής του .gitlab-ci.yml:

stages: # Ορισμός σταδίων
  - build
  - test
  - deploy

build_job: # Ορισμός εργασίας
  stage: build # Ανάλογα με το στάδιο
  script: # Εντολές προς εκτέλεση
    - echo "Κατασκευή του έργου..."
    - mvn package # Παράδειγμα εντολής κατασκευής με Maven
  artifacts: # Αποθήκευση artefacts
    paths:
      - target/*.jar

test_job:
  stage: test
  script:
    - echo "Εκτέλεση δοκιμών..."
    - mvn test # Παράδειγμα εντολής για εκτέλεση δοκιμών
  needs: # Εξάρτηση από προηγούμενη εργασία
    - build_job

deploy_job:
  stage: deploy
  script:
    - echo "Ανάπτυξη της εφαρμογής..."
    - docker build -t my-app . # Παράδειγμα κατασκευής Docker εικόνας
    - docker push my-app # Παράδειγμα αποστολής εικόνας στο αποθετήριο
  only: # Συνθήκη για την εκτέλεση της εργασίας
    - main # Μόνο σε commit στο branch main

Έτσι, μετά τη λήψη του κώδικα, το GitLab CI/CD οργανώνει την εκτέλεση μιας διαδικασίας που ορίζεται από τον χρήστη, εστιάζοντας στην κατασκευή, δοκιμή και ανάπτυξη της εφαρμογής.