Σενάρια αποθετηρίου
Τα σενάρια αποθετηρίου είναι σενάρια 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 installcp "$CC_ROOT_PATH/.env" .envpnpm run buildΣυμπεριφορά σε περίπτωση αποτυχίας
Ενότητα με τίτλο «Συμπεριφορά σε περίπτωση αποτυχίας»- Ένα σενάριο ρύθμισης που τερματίζεται με μη μηδενικό κωδικό (ή υπερβαίνει το χρονικό όριο των 5 λεπτών) οδηγεί σε αποτυχία της προμήθειας του χώρου: ο χώρος εμφανίζει την κατάσταση αποτυχίας με επιλογή επανάληψης και καταγράφεται η ουρά εξόδου της εκτέλεσης. Μια επανάληψη προμηθεύει από καθαρό worktree και εκτελεί ξανά το σενάριο — γράψτε τα σενάρια ρύθμισης έτσι ώστε μια επανεκτέλεση μετά από μια μερική εγκατάσταση να λειτουργεί (οι διαχειριστές πακέτων συμπεριφέρονται ήδη έτσι).
- Ένα σενάριο αρχειοθέτησης εκτελείται χωρίς εγγυήσεις επιτυχίας: μια αποτυχία (ή το χρονικό όριο των 2 λεπτών) καταγράφεται, αλλά δεν εμποδίζει ποτέ τη διαγραφή. Η αρχειοθέτηση εκτελείται σε διαδρομές GC όπου δεν υπάρχει κανείς να απαντήσει σε κάποιο μήνυμα (διαγραφή χώρου, συγχώνευση PR, προγραμματισμένος καθαρισμός).
Η ρύθμιση εκτελείται μόνο σε νέο worktree: η εκ νέου αποστολή πρακτόρων σε έναν θερμό χώρο επαναχρησιμοποιεί το υπάρχον checkout και δεν ξαναπληρώνει την εγκατάσταση.
Ιστορικό εκτελέσεων
Ενότητα με τίτλο «Ιστορικό εκτελέσεων»Κάθε εκτέλεση καταγράφεται με την κατάστασή της, τη διάρκειά της, τον κωδικό εξόδου και
μια περιορισμένη ουρά εξόδου, ορατά στο ίδιο παράθυρο διαλόγου ρυθμίσεων στην ενότητα
«Πρόσφατες εκτελέσεις» (η συνδρομή repos.watchScriptRuns τη μεταδίδει ζωντανά).
Δικαιώματα
Ενότητα με τίτλο «Δικαιώματα»Τα σενάρια είναι shell που εκτελεί ο διακομιστής, οπότε η συγγραφή τους περιορίζεται
στους διαχειριστές του χώρου εργασίας και προστατεύεται από την κλάση ενεργειών
processSpawn — το ίδιο δίχτυ περιορισμών που θέτει υπό πύλη κάθε άλλη ενέργεια
εκκίνησης διεργασίας.