Hogyan csökkentette az egy vonal változás a klónidőinket 99 %

(Pinterest Engineering) (2020. október 23.)

Urvashi Reddy | Szoftvermérnök, mérnöki termelékenységi csapat
Adam Berry | Műszaki vezető, mérnöki termelékenységi csapat
Rui Li | Szoftvertechnikus, mérnöki termelékenységi csapat

A Pinterest mérnöki termelékenységi csapata egy apró változással találkozott, amely nagy hatással volt a csővezetékek építési idejének csökkentésére. Megállapítottuk, hogy a refspec opció beállítása a git-lekérés során 99% -kal csökkentette klónozási lépésünket.

A Pinterest mérnöki termelékenységi csoportjának feladata a mérnökök támogatása, akik szoftvereket építenek és telepítenek a vállalatnál. Csapatunk számos infrastrukturális szolgáltatást tart fenn, és gyakran nagyszabású erőfeszítéseket tesz – az összes szoftvert a Pinteresten (Bazelbe) költözteti, létrehozva a folyamatos kézbesítési platformot Hermez néven, és fenntartjuk azokat a monoreposokat, amelyek elkötelezik magukat naponta néhány százszor, hogy csak néhányat említsünk.

Minden nagyobb erőfeszítésünk célja, hogy előrelépjünk azon a célon, hogy a szoftverek fejlesztése és szállítása a Pinteresten gyors legyen. és fájdalommentes tapasztalat. Nemrég eszünkbe jutott, hogy az apró részletek is nagy hatással lehetnek erre a célra. Felfedeztünk egy figyelmen kívül hagyott Git opciót, amely jelentősen lerövidítette a folyamatos integrációs csővezetékeink építési idejét. Annak megértéséhez, hogy ennek a kis változásnak mekkora hatása volt, meg kell osztanunk egy kis információt monorepóinkról és csővezetékeinkről.

Monorepók és csővezetékek

A Pinteresten hat fő tárhelyünk van: Pinboard, Optimus, Cosmos, Magnus, iOS és Android. Mindegyik monorepo, és a nyelvspecifikus szolgáltatások nagy gyűjteményével rendelkezik. A Pinboard ugyanolyan régi, mint a cég, és a legnagyobb monorepo. A Pinboard több mint 350 000 elkötelezettséggel rendelkezik, és teljesen klónozva 20 GB méretű.

A sok kódot és előzményt tartalmazó monorepók klónozása időigényes, és a folyamatos integráció során a nap folyamán gyakran kell csinálnunk. csővezetékek. Csak a Pinboard esetében több mint 60 ezer gitet hajtunk végre munkanapokon. A legtöbb Jenkins csővezeték konfigurációs szkriptünk (Groovy-ban írva) egy „Checkout” szakaszsal kezdődik, ahol klónozzuk azt az adattárat, amelyet a későbbi szakaszok építenek és tesztelnek. Így néz ki egy tipikus „Checkout” szakasz:

Ha közvetlenül a Git parancssori felületet használtuk, az a következőre fordult:

“”

Annak ellenére, hogy felszólítjuk a Git-t, hogy végezzen sekély klónot, ne töltsön be címkéket, és töltse le az utolsó 50 elkötelezettséget, ” még mindig nem hajtja végre ezt a műveletet olyan gyorsan, amennyire csak lehet. Ez azért van, mert nem állítunk be a refspec beállítást. Figyelje meg, hogy ha nem állítja be a folyamat konfigurációs szkriptjében, akkor azt mondjuk a Gitnek, hogy töltse le az összes refspec-et: A Pinboard esetében ez a művelet több mint 2500 ágat fog lekérni.

Egyszerűen hozzáadva a refspec opciót és megadva, hogy melyik referenciák érdekelnek ( , esetünkben), korlátozhatjuk a referenciákat az általunk gondozott ágra, és sok időt spórolhatunk meg. Így néz ki a csővezeték-kódunkban:

Ez az egyszerű vonalváltás 99% -kal csökkentette klónidőinket, és ennek eredményeként jelentősen lerövidítette az építési időnket. A legnagyobb repónkat klónozva a Pinboard 40 percről 30 másodpercre ment. Ez azt mutatja, hogy néha kis erőfeszítéseinknek is nagy hatása lehet.

Tanulmányok

A legtöbb fejlesztői termelékenységi csapathoz hasonlóan mi is olyan nagy szolgáltatások mellett dolgozunk, amelyek nagy hatással vannak a mindennapi tapasztalatainkra. Azonban néha az egy vonal javításai jelenthetnek hatalmas változást. Munkánk ennek megértéséről szól.

Ha rajongsz a fejlesztői termelékenység javításáért, csatlakozz csapatunkhoz! Mérnöki szerepeket veszünk fel mérnöki termelékenységi csapatunkba.

Ha többet szeretne megtudni a mérnöki munkáról a Pinteresten, nézze meg a t, és látogasson el a Pinterest Labs webhely. A nyitott lehetőségek megtekintéséhez látogasson el a Karrier oldalunkra.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük