Πώς να χρησιμοποιήσετε το 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 είναι ο κύριος μηχανισμός για τη μεταφορά εξόδων δεδομένων μεταξύ σταδίων.