Перейти до вмісту

runnerhut (бігун)

Посібники

Розв'язання проблем CI, з якими команди стикаються насправді.

швидкість13

Як прискорити GitHub ActionsВаш конвеєр займає більше часу, ніж будь-хто хоче чекати, і неочевидно, куди йде час.Як знайти повільний крок у робочому процесіКонвеєр повільний, але кожен окремий крок виглядає розумним.Як зменшити кількість холодних запусків GitHub ActionsЗавдання залишаються від 30 до 90 секунд перед виконанням першого кроку.Як діагностувати час у черзі GitHub ActionsЗавдання стоять у черзі протягом кількох хвилин, перш ніж бігун забере їх.Як зробити git checkout швидшимдії/перевірка займають хвилини у великому сховищі.Як запустити CI у дуже великому сховищіПеревірка, індексування та звітування про статус погіршуються разом із зростанням сховища.Як пришвидшити перевірку Git LFSОб’єкти LFS завантажуються послідовно та домінують під час оформлення замовлення.Як усунути простої на робочих місцяхРобота витрачає час на нічого не роблячи — чекаючи на службу, сплячи або цикл опитування.Як справлятися з довготривалими роботамиДеякі роботи тривають годинами, іноді досягаючи шестигодинного ліміту.Як ефективно запускати нічні збіркиНічні збірки дорогі, а результати ніхто не читає.Як зупинити шторми повторного запуску CIРозробники неодноразово повторюють невдалі завдання, збільшуючи вартість і приховуючи справжні невдачі.Як розділити тести на матрицюОдне довге тестове завдання домінує в конвеєрі.Як запускати лише ті тести, на які вплинули зміниКожне натискання запускає весь набір тестів незалежно від змін.

Вартість13

Як зменшити витрати на GitHub ActionsРахунок CI зростає швидше, ніж команда, і ніхто не знає, чому.Як виміряти вартість CI за запит на отриманняВи знаєте загальну суму за місяць, але не знаєте, скільки коштує один запит на отримання.Як віднести вартість CI до командВитрати на CI – це один рядок у рахунку-фактурі, і жодна команда не відчуває відповідальності за це.Як встановити бюджет хвилин КІВитрати виявляються наприкінці місяця, а не контролюються протягом нього.Коли більші бігуни насправді економлять грошіБільший бігун коштує більше за хвилину, тому незрозуміло, чи він дешевший загалом.Як скоротити витрати на macOS runnermacOS домінує в рахунку CI.Як зменшити вихідні витрати КІПередача даних є значною та зростаючою часткою законопроекту BYOC.Як зменшити витрати ECRЗалучення зображень контейнера створює значні витрати на передачу даних.Як зменшити витрати на передачу S3 у CIТрафік кешу та артефактів до S3 дорогий.Справжня вартість самостійних бігунівСамостійні бігуни виглядають безкоштовно поруч із тарифікацією за хвилину.Як використовувати точкові екземпляри для бігунів CIЕкземпляри на вимогу є дорогими для робочих навантажень, які за своєю суттю можуть повторюватися.Як правильно підібрати розмір бігунокРозміри бігунів були обрані один раз і ніколи не поверталися.Як економічно використовувати CI з відкритим кодомCI з відкритим вихідним кодом є безкоштовним для запускачів, розміщених на GitHub, але повільним, а самостійне розміщення небезпечно.

Кешування16

Як зробити так, щоб кеші CI дійсно зберігалисяКеш-пам’ять налаштовано, але показник звернень низький.Як обійти ліміт кешу в 10 ГБВаші кеш-пам’яті перевищують 10 ГБ на репозиторій і починають тихо видалятися.Як надати спільний доступ до кешу збірки між сховищамиКожен репозиторій підтримує власний кеш для тих самих спільних залежностей.Як поділитися кеш-пам’яттю Docker між завданнямиКожна нога матриці перебудовує однакові шари.Як виправити недійсність кешу DockerШари Docker відновлюються, навіть якщо відповідні файли не змінюються.Як написати ключ кешу, який потрапляєКеш налаштовано, але промахується під час кожного запуску.Як використовувати ccache в GitHub ActionsЗбірки C і C++ перекомпілюють усе під час кожного запуску.Як використовувати sccache для збірок RustCargo відновлює залежності кожного разу, коли кеш цільового каталогу пропускається.Як увімкнути кеш конфігурації GradleGradle витрачає від 30 до 60 секунд на налаштування перед компіляцією.Як кешувати менеджери інструментівmise, asdf або proto перевстановлюйте середовища виконання мови під час кожного запуску.Як кешувати пакети NuGetdotnet restore завантажує ті самі пакети під час кожного запуску.Як кешувати перетворення JestJest повторно перетворює кожен файл під час кожного запуску.Як кешувати пакети vcpkg і ConanМенеджери залежностей C++ відновлюють пакети з джерела під час кожного запуску.Як кешувати Xcode DerivedDataXcode перебудовує весь проект під час кожного запуску CI.Вибір бекенда buildx кешуІснує чотири сервери кешу, і незрозуміло, який використовувати.Як підтримувати кеш базової гілки в тепліГілки нових функцій завжди починаються з холодного кешу.

Docker12

Як налаштувати кешування рівня DockerСтворення Docker займає десять хвилин, оскільки кожен шар будується заново.Як оптимізувати Dockerfile для CIНевеликі зміни коду викликають довгі перебудови.Як використовувати багатоетапні збірки DockerЗображення великі та містять інструменти для створення, які не слід надсилати.Як безпечно запускати паралельні збірки DockerПаралельні матричні ноги змагаються, а збірки сповільнюються або виходять з ладу.Як користуватися віддаленим конструктором DockerКеш шарів передається в раннер і з нього під час кожної збірки.Як швидко створювати мультиплатформенні зображенняДодавши linux/arm64, збирання займе двадцять хвилин.Як зменшити розмір зображення контейнераЗображення займають сотні мегабайт і повільно завантажуються в кожну роботу.Як передати секрети в збірку DockerПід час збірки вам потрібен маркер приватного реєстру або ключ SSH.Як налаштувати профілі конструктора DockerДля різних зображень потрібні різні ресурси конструктора.Як створити багато зображень із монорепоКожне натискання створює кожне зображення в сховищі.Як опублікувати в кількох реєстрахТой самий образ створюється один раз для кожного реєстру.Як налаштувати протягнутий кеш реєструВитягування зображень повільне, і ви постійно досягаєте обмежень швидкості Docker Hub.

Спостережливість10

Як збирати метрики бігунівВи не можете визначити, чи прив’язане завдання до процесора, пам’яті чи диска.Як відстежувати процентиль тривалості збіркиСередній час збирання виглядає добре, але розробники все одно скаржаться.Як експортувати трасування CI за допомогою OpenTelemetryДані синхронізації CI знаходяться в окремому інструменті від решти вашої спостережуваності.Як запитувати дані CI програмним шляхомВам потрібні дані КІ на інформаційній панелі або в щотижневому звіті.Як запустити щотижневий звіт про стан КІКІ поступово погіршується, і ніхто цього не помічає, поки він не стане поганим.Як сповіщати про регресії CIЗміна сповільнює CI на 40%, і це залишається непоміченим тижнями.Як працювати з нестабільними роботами CIТести випадковим чином не вдаються, і люди повторюють спробу, доки не пройдуть.Як налагодити невдалий робочий процесЗавдання не вдається в CI і працює скрізь.Як встановити рівні обслуговування CIНіхто не погоджується щодо того, наскільки швидким має бути CI, тому йому ніколи не віддається пріоритет.Як надати агентам AI дані CIАгенти, які налагоджують помилки КІ, мають працювати лише з текстом журналу.

масштаб28

Як масштабувати автономні раннериСамостійні бігуни або стоять у черзі в пік, або сидять без діла й дорогі.Як використовувати групи бігунівБудь-який репозиторій може планувати завдання на будь-якому бігуні.Як розробити стратегію бігунівЕтикетки росли органічно, і ніхто не знає, які використовувати.Хостинг або BYOC: як вибратиВи не впевнені, використовувати розміщені бігуни чи розгортати у власній хмарі.Як використовувати багаторазові робочі процеси в масштабіП'ятдесят сховищ мають п'ятдесят дещо різних копій одного конвеєра.Як координувати робочі процеси між сховищамиЗміна в одному репозиторії повинна ініціювати збірки в інших.Як створювати власні зображення бігунівКожна робота витрачає хвилини на встановлення тих самих інструментів.Як безпечно розгортати оновлення базового зображенняОновлення базового образу розриває збірки в багатьох сховищах одночасно.Як обробляти навантаження CI залежностейDependabot відкриває тридцять пул-запитів і стрибки вартості CI.Як працювати з обмеженнями паралельностіЧерга завдань, і незрозуміло, який ліміт є обов’язковим.Як ефективно використовувати роботу контейнерівКонтейнерні завдання забезпечують відтворюваність, але порушують кешування.Як правильно користуватися сервісними контейнерамиПід час запуску тести періодично дають збій.Як створити один раз і розгорнути багато разівТой самий артефакт перебудовується для кожного середовища.Як структурувати завдання розгортанняРозгортання є повільним, ризикованим і важким для аудиту.Як ефективно запускати середовища попереднього переглядуКожен запит на отримання чекає на повну збірку середовища.Як структурувати збірки випускуВипускні збірки повільні та іноді невідтворювані.Як опублікувати артефакти збіркиВитрати на зберігання артефактів зростають, а збереження ніколи не було налаштовано.Як обробляти завантаження великих артефактівЗавантаження результатів збірки займає кілька хвилин.Як отримати додаткові збірки в CICI завжди виконує чисту збірку, навіть якщо ваша система збірки підтримує інкрементну компіляцію.Як передавати дані між завданнямиВакансії повинні ділитися результатами збірки, і незрозуміло як.Як добре використовувати матричні збіркиМатриця розросла, і ніхто не пам'ятає, чому існує кожна комбінація.Як контролювати вибух матриціНевелика зміна матриці потроїла кількість робіт і рахунок.Як визначити розмір бігунів для збірок JavaВи вгадуєте розмір бігуна для збірки Maven або Gradle.Як визначити розмір бігунів для наборів тестів NodeПрацівники Jest або Vitest або голодують, або бідують, і ви не впевнені, що саме.Як визначити розмір бігунів для наборів тестів Pythonpytest працює на одному ядрі, тоді як бігун має вісім неактивних.Як визначити розмір бігунів для збірок RustCargo створює масштаб за допомогою ядер, але незрозуміло, як далеко це заходить.Як визначити розмір бігунів для збірок DockerВи обираєте розмір бігуна для збірок зображень.Як визначити розмір бігунів для збірок AndroidДля збирання Gradle і тестування приладів потрібні дуже різні машини.