Μετάβαση στο περιεχόμενο

Σενάρια αποθετηρίου

Τα σενάρια αποθετηρίου είναι σενάρια shell που ρυθμίζετε ανά αποθετήριο (Ρυθμίσεις → Αποθετήρια → το εικονίδιο τερματικού στη γραμμή ενός αποθετηρίου) και που ο διακομιστής του Control Center εκτελεί στο worktree ενός χώρου αυτού του αποθετηρίου — το απομονωμένο checkout κάτω από <dataDir>/<workspaceId>/spaces/<spaceId>/repos/<repo>/, όπου εργάζονται οι πράκτορες.

Υπάρχουν δύο είδη:

Σενάριο Πότε εκτελείται Για τι χρησιμεύει
Ρύθμιση Αμέσως μόλις προμηθευτεί ένα worktree για έναν χώρο Εγκατάσταση εξαρτήσεων, δημιουργία αρχείων, αντιγραφή του .env
Αρχειοθέτηση Λίγο πριν καταστραφεί ένα worktree ή περάσει από συλλογή απορριμμάτων Καθαρισμός πόρων εκτός του worktree (δίκτυα docker, σήραγγες, εξωτερική κατάσταση)

Και τα δύο σενάρια εκτελούνται μέσω bash -lc (ένας login shell, ώστε τα εργαλεία που έχουν εγκατασταθεί με Homebrew/nvm να βρίσκονται στο PATH) με το worktree ως κατάλογο εργασίας και με ορισμένες τις εξής μεταβλητές περιβάλλοντος:

Μεταβλητή Τιμή
CC_WORKSPACE_PATH Το worktree (ο κατάλογος εργασίας του σεναρίου)
CC_ROOT_PATH Το καταχωρισμένο αποθετήριο προέλευσης — το δικό σας checkout
CC_SPACE_ID Ο χώρος στον οποίο ανήκει το worktree
CC_SPACE_NAME Το εμφανιζόμενο όνομα του χώρου
CC_REPO_NAME Το εμφανιζόμενο όνομα του αποθετηρίου

Για παράδειγμα, ένα σενάριο ρύθμισης που εγκαθιστά εξαρτήσεις και φέρνει το .env του αποθετηρίου που αγνοεί το git:

Παράθυρο τερματικού
pnpm install
cp "$CC_ROOT_PATH/.env" .env
pnpm run build
  • Ένα σενάριο ρύθμισης που τερματίζεται με μη μηδενικό κωδικό (ή υπερβαίνει το χρονικό όριο των 5 λεπτών) οδηγεί σε αποτυχία της προμήθειας του χώρου: ο χώρος εμφανίζει την κατάσταση αποτυχίας με επιλογή επανάληψης και καταγράφεται η ουρά εξόδου της εκτέλεσης. Μια επανάληψη προμηθεύει από καθαρό worktree και εκτελεί ξανά το σενάριο — γράψτε τα σενάρια ρύθμισης έτσι ώστε μια επανεκτέλεση μετά από μια μερική εγκατάσταση να λειτουργεί (οι διαχειριστές πακέτων συμπεριφέρονται ήδη έτσι).
  • Ένα σενάριο αρχειοθέτησης εκτελείται χωρίς εγγυήσεις επιτυχίας: μια αποτυχία (ή το χρονικό όριο των 2 λεπτών) καταγράφεται, αλλά δεν εμποδίζει ποτέ τη διαγραφή. Η αρχειοθέτηση εκτελείται σε διαδρομές GC όπου δεν υπάρχει κανείς να απαντήσει σε κάποιο μήνυμα (διαγραφή χώρου, συγχώνευση PR, προγραμματισμένος καθαρισμός).

Η ρύθμιση εκτελείται μόνο σε νέο worktree: η εκ νέου αποστολή πρακτόρων σε έναν θερμό χώρο επαναχρησιμοποιεί το υπάρχον checkout και δεν ξαναπληρώνει την εγκατάσταση.

Κάθε εκτέλεση καταγράφεται με την κατάστασή της, τη διάρκειά της, τον κωδικό εξόδου και μια περιορισμένη ουρά εξόδου, ορατά στο ίδιο παράθυρο διαλόγου ρυθμίσεων στην ενότητα «Πρόσφατες εκτελέσεις» (η συνδρομή repos.watchScriptRuns τη μεταδίδει ζωντανά).

Τα σενάρια είναι shell που εκτελεί ο διακομιστής, οπότε η συγγραφή τους περιορίζεται στους διαχειριστές του χώρου εργασίας και προστατεύεται από την κλάση ενεργειών processSpawn — το ίδιο δίχτυ περιορισμών που θέτει υπό πύλη κάθε άλλη ενέργεια εκκίνησης διεργασίας.