Sobes.tech
Middle

Πώς να χρησιμοποιήσετε το GitLab CI για την αποθήκευση δεδομένων μεταξύ πολλαπλών σταδίων κατασκευής;

sobes.tech AI

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

Για την αποθήκευση δεδομένων μεταξύ των σταδίων κατασκευής στο GitLab CI, χρησιμοποιούνται τα artefacts. Αυτά είναι αρχεία ή καταλόγοι που δημιουργούνται σε ένα στάδιο και διατίθενται στα επόμενα.

Η διαμόρφωση στο .gitlab-ci.yml φαίνεται ως εξής:

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Αποτέλεσμα κατασκευής" > build_output.txt # Δημιουργία αρχείου
  artifacts:
    paths: # Ορίζουμε ποια αρχεία/καταλόγους θα αποθηκευτούν
      - build_output.txt
    expire_in: 1 week # Διάρκεια διατήρησης των artefacts

test_job:
  stage: test
  script:
    - cat build_output.txt # Πρόσβαση στο αρχείο από το προηγούμενο στάδιο
    - npm test
  needs: # Ορίζουμε εξάρτηση από το προηγούμενο στάδιο
    - build_job

deploy_job:
  stage: deploy
  script:
    - deploy_script.sh
  needs:
    - test_job

Βασικά στοιχεία:

  • artifacts: Ορίζει ποια αρχεία ή καταλόγοι πρέπει να αποθηκευτούν μετά την εκτέλεση του σταδίου.
  • paths: Λίστα διαδρομών προς αρχεία ή καταλόγους που θα γίνουν artefacts.
  • expire_in: Ορίζει πόσο καιρό θα είναι διαθέσιμα τα artefacts.
  • needs: Δείχνει ρητά την εξάρτηση του τρέχοντος σταδίου από το προηγούμενο. Το GitLab CI θα κατεβάσει αυτόματα τα artefacts από τα καθορισμένα στάδια πριν την εκτέλεση του τρέχοντος.

Χωρίς needs, το GitLab CI θα κατεβάσει artefacts από όλα τα προηγούμενα στάδια στο ίδιο ή σε παλαιότερα στάδια, κάτι που μπορεί να είναι αναποτελεσματικό. Η ρητή δήλωση με needs ελέγχει πιο ακριβώς ποια artefacts κατεβάζονται.

Επίσης, μπορεί να χρησιμοποιηθεί cache για την αποθήκευση εξαρτήσεων, όπως εγκατεστημένα πακέτα, αλλά αυτό προορίζεται για την επιτάχυνση επαναλαμβανόμενων κατασκευών, και όχι για τη μεταφορά αποτελεσμάτων από ένα στάδιο σε άλλο. Τα artefacts είναι ο κύριος μηχανισμός για τη μεταφορά εξόδων δεδομένων μεταξύ σταδίων.