Πίσω στα RoboNews
113 πόντοιlinear.app4 λεπτά ανάγνωσης

Πώς η Linear βελτιστοποίησε το CI της για να συμβαδίσει με την ταχύτητα της AI

Πρωτότυπος τίτλος: "AI coding has made CI a bottleneck, so we reworked ours to keep up" (από julian_digital)

Αρχικό ΆρθροΣυζήτηση HN (97 σχόλια)
TL;DR (Εν Συντομία)

Η Linear αντιμετώπισε το πρόβλημα των καθυστερήσεων στο CI (Continuous Integration) που προκλήθηκαν από την αυξημένη παραγωγή κώδικα μέσω AI. Μέσω στοχευμένων βελτιστοποιήσεων στην υποδομή, το setup και την εκτέλεση των tests, κατάφερε να μειώσει τον χρόνο αναμονής των pull requests παρά την τετραπλάσια αύξηση της σουίτας ελέγχων.

📌 Κύρια Σημεία & Συμπεράσματα

  • Η αναβάθμιση σε ισχυρότερους runners και η χρήση σύγχρονων εργαλείων (όπως ο compiler tsgo) μείωσαν δραστικά τον χρόνο εκτέλεσης των jobs.
  • Η βελτιστοποίηση των 'gating' jobs (π.χ. αλλαγή στρατηγικής στο git checkout) μείωσε σημαντικά τον χρόνο που απαιτείται πριν ξεκινήσει η κύρια διαδικασία ελέγχου.
  • Η μείωση του overhead κατά το setup, μέσω προεγκατεστημένων dependencies και αποφυγής περιττών cache, επέτρεψε την αποτελεσματικότερη παράλληλη εκτέλεση (sharding).
  • Η απενεργοποίηση της απομόνωσης (isolation) σε επιλεγμένα test files του Vitest προσέφερε τη μεγαλύτερη μείωση χρόνου, μειώνοντας τα περιττά rebuilds.

Η πρόκληση της ταχύτητας στην εποχή του AI

Η χρήση AI για τη συγγραφή κώδικα έχει επιταχύνει κατακόρυφα την ανάπτυξη λογισμικού, δημιουργώντας όμως ένα νέο πρόβλημα: το CI (Continuous Integration) μετατρέπεται σε «λαιμό του μπουκαλιού». Στη Linear, η ραγδαία αύξηση των tests κατέστησε απαραίτητη την αναθεώρηση ολόκληρης της διαδικασίας CI, ώστε να μην καθυστερούν οι προγραμματιστές και τα AI agents.

Υποδομές και έξυπνη διαχείριση των Gating Jobs

Το πρώτο βήμα ήταν η μετάβαση σε third-party runners με ταχύτερους επεξεργαστές και καλύτερη αποθήκευση. Παράλληλα, η ομάδα εστίασε στα «gating jobs» — τις μικρές εργασίες που προηγούνται των μεγάλων ελέγχων. Περιορίζοντας το βάθος του git fetch και εξαλείφοντας περιττά checkouts, ο χρόνος ανίχνευσης αλλαγών μειώθηκε από τα 26 στα 8 δευτερόλεπτα.

Μείωση του Setup Overhead

Κάθε δευτερόλεπτο που δαπανάται για την εγκατάσταση πακέτων (pnpm install) ή το στήσιμο του περιβάλλοντος προσθέτει καθυστέρηση. Η Linear μετέφερε τα κοινά dependencies σε ένα custom CI base image και περιόρισε τις εγκαταστάσεις μόνο στα απαραίτητα πακέτα ανά job. Αυτές οι κινήσεις μείωσαν τον χρόνο setup ανά shard κατά περίπου 44%.

Βελτιστοποίηση της εκτέλεσης των Tests

Η πιο δραστική βελτίωση ήρθε από την αλλαγή στον τρόπο εκτέλεσης των tests με το Vitest. Επιτρέποντας σε επιλεγμένα αρχεία να μοιράζονται το module registry (απενεργοποιώντας το isolate: false), η ομάδα απέφυγε χιλιάδες περιττά rebuilds. Σε συνδυασμό με την αύξηση των shards από 4 σε 8, ο χρόνος ολοκλήρωσης της σουίτας ελέγχων μειώθηκε δραματικά, διασφαλίζοντας ότι η ταχύτητα ανάπτυξης παραμένει υψηλή παρά την συνεχή προσθήκη νέων tests.

Ετικέτες:#AI#Software#CI/CD#Engineering
GitHub Gems & Trends

Ανακαλύψτε καινοτόμα open-source εργαλεία και κρυμμένα διαμάντια ανοιχτού κώδικα.

Εξερεύνηση Gems

Διαβάστε επίσης