Програмоване CI англійською: Dagger and Earthly Vocabulary
Вивчіть англійську лексику, яку використовують у Dagger і Earthly — програмовані конвеєри CI, модулі, кешування і відтворювані збірки з поясненнями для фахівців з інформаційних технологій.
Introduction
Традиційні системи CI використовують YAML для опису конвеєрів, але такі інструменти, як Dagger і Earthly, мають інший підхід: вони надають вам змогу писати ваші конвеєри на реальних мовах програмування або у синтаксисі, схожому на синтаксис Makefile. Цей зсув приносить новий словник, який інженери використовують при обговоренні цих інструментів. Якщо ваша команда використовує програмований інтерфейс, ви зустрінете такі терміни, як модулі, шари кешування, відтворюваність і конвеєр як код у щоденних обговореннях. У цьому підручнику пояснюється основні поняття і англійські фрази, які інженери використовують навколо них.
Дагер: трубопроводи в коді
Dagger надає вам змогу писати конвеєри CI мовою Python, Go, TypeScript або іншими мовами. Основний словник:
- ** Dagger module ** — пакунок функцій конвеєра, який можна використовувати багаторазово; « ми опублікували модуль для нашого конвеєра лінтування »
- function — одиниця роботи в Dagger; « ми визначаємо функцію, яка створює образ Docker »
- ** pipeline ** — складений ряд функцій; « ми вставляємо функції у трубопровід »
- ** containerise ** — запустити крок конвеєра всередині контейнера; « кожна функція виконується у контейнері для ізоляції »
- ** call ** — виклик функції Dagger; « ми викликаємо функцію тестування з функції збирання »
Ключова концепція Dagger полягає в тому, що все працює в контейнерах. Інженери описують це так: « Ми отримуємо ізоляцію і відтворюваність безкоштовно, оскільки кожен крок виконується у визначеному контейнері. » Фраза « виконується у контейнері » є специфічною для обговорень Dagger.
** Рушій Dagger ** — це фонова служба, яка виконує конвеєр. Інженери кажуть, що «двигун кешує проміжні результати між запусками» — тобто, якщо ви перезапускаєте конвеєр і вхідні дані не змінилися, Dagger повторно використовує кешовані шари контейнера.
Коли інженери обговорюють цінність Dagger, вони часто кажуть: « Ми пишемо нашу логіку CI мовою Python, тією ж мовою, що і наш код програми — це означає, що розробники можуть тестувати конвеєр локально перед тим, як відправляти його ». Фраза « тестувати локально » є ключовим аргументом: конвеєри Dagger працюють ідентично на ноутбуці розробника і в CI.
Земний: Makefile зустрічає Docker
Earthly використовує власний синтаксис (Earthfiles), який поєднує підхід Makefiles, заснований на цілі, з кешуванням шарів у стилі Docker. Словник:
- ** Earthfile ** — файл, який визначає цілі, схожий на Makefile
- ** target ** — названа одиниця роботи у файлі Earthfile; « ми визначаємо ціль
+testі ціль+docker» - ** artefact ** — файл, створений цільовим об’ єктом і збережений для подальших кроків; « цільовий об’ єкт збирання створює бінарний артефакт »
- ** image ** — штамп Docker, створений цільовим пристроєм; « цільовий пристрій
+dockerстворює кінцевий штамп » - «Save artifact» — синтаксис Earthly для захоплення виводу з кроку; фраза, яка буквально з’являється в Earthfiles
- ** відтворюваний збір ** — збір, який створює ідентичний вивід за ідентичних вхідних даних, незалежно від середовища
Інженери кажуть: « Earthly надає нам відтворювальні збірки, оскільки кожна ціль виконується всередині контейнера з визначеним середовищем ». Слово ** відтворюваний ** є центральним у маркетингу і документації Earthly, і інженери використовують його постійно.
Кешування Earthly описується словником шарів Docker: « Ми кешуємо крок встановлення залежностей — якщо файл go.sum не змінився, Earthly повторно використовує кешований шар і пропускає завантаження ». Фраза « пропускає крок » або « повторно використовує кешований шар » є поширеною в дискусіях щодо оптимізації збирання.
Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма: Програма:
Обидва інструменти мають спільний словник, який застосовується до програмованого CI загалом:
- ** pipeline as code ** — принцип, згідно з яким конвеєри CI слід писати справжньою мовою програмування або структурованим синтаксисом, версії якого слід вказати разом з кодом програми
- «Запустити конвеєр локально» — виконати CI-кроки на машині розробника; ключова перевага обох інструментів
- «Недійсність кешу» — коли кешований крок застарів і повинен бути виконаний знову; «зміна Dockerfile анульовує кеш для цього шару і все після нього»
- ** DAG ** (Directed Acyclic Graph) — графік залежності кроків конвеєра; « Dagger створює DAG ваших функцій і виконує незалежні кроки паралельно »
- «Паралельні кроки» — виконувати незалежні кроки конвеєра водночас, щоб скоротити загальний час збирання
Поширена фраза для обговорення архітектури: «Ми перейшли від YAML-заснованої CI-конфігурації до Dagger, тому що YAML не складається добре — з Dagger, ми можемо писати функції повторного використання і викликати їх через декілька конвеєрів»
Ключовий словник
| Term | Definition |
|---|---|
| pipeline as code | CI pipelines written in a real programming language and versioned with the app |
| Dagger module | A reusable package of Dagger pipeline functions |
| Earthfile | The file that defines Earthly targets, analogous to a Makefile |
| target | A named unit of work in an Earthfile |
| artifact | A file produced by a build step and captured for later use |
| reproducible build | A build that produces identical output given identical inputs |
| cache invalidation | When a cached step is outdated due to input changes |
| DAG | Directed Acyclic Graph — the dependency structure of pipeline steps |
| containerised | Running in an isolated container with a defined environment |
| run locally | Execute CI pipeline steps on a developer’s machine |
Практичні поради
-
** Поясніть « pipeline as code » скептичнішому колегі англійською мовою. ** Вправиться з цим поясненням: « За допомогою YAML ви не можете писати тести одиниць для вашої логіки конвеєра. З Dagger, ваш конвеєр є функцією Python — ви можете писати тести для нього, імпортувати його в інші конвеєри, і запускати його локально з таким же результатом, як і в CI.”
-
** Використовуйте « відтворюваний » у точності. ** У дискусіях щодо інструментів збирання, « відтворюваний » означає, що ті самі вхідні дані завжди дають ті самі вихідні дані. Практикуйте використання його в контексті: « Наша Земна збірка відтворюється, тому що кожен крок виконується в прикріпленому зображенні контейнера без залежностей середовища »
-
** Обговорення анульованого кешу англійською мовою. ** « Кеш було анульовано під час оновлення базового штампу » — це поширене пояснення несподівано повільних збирань. Зрозуміти цю фразу допоможе вам зневаджувати і повідомляти про проблеми з швидкодією збирання.
-
Прочитайте Dagger і Earthly GitHub issue trackers. Реальні проблеми і їх рішення обговорюються простою англійською. Це чудова вправа для читання технічної англійської мови у реальному контексті.
Conclusion
Програмовані інструменти CI, такі як Dagger і Earthly, зростають у прийнятті, а їх словник - конвеєр як код, відтворювальні збірки, анульування кешу, модулі, цілі - стає стандартом в DevOps і обговореннях інженерії платформи. Освоєння цих термінів допоможе вам оцінити інструменти, долучитися до обговорення перенесення і написати чітку документацію щодо вашої архітектури CI. Зміна від YAML до коду є так само концептуальною зміною, як і технічною.
Складання мовлення: приклади використання мовлення в реалістичних сценаріях
Основні концепції Dagger - особливо його здатність оптимізувати введення залежностей і будувати графіки - і Earthly - забезпечення відтворюваних середовищ - є потужними інструментами. Однак, справжнє їхнє оволодіння не лише про розуміння * як *; це про впевнене вираження ваших намірів і рішень в професійному англійському контексті. Це особливо важливо для розробників, які активно будують свій технічний словник англійською мовою. Розглянемо деякі типові сценарії, де точне формулювання має значення при обговоренні цих технологій з колегами або написанні документації.
Одна з найчастіших проблем виникає під час перегляду коду, особливо при роботі з комплексними графіками залежностей Dagger. Рецензент може прокоментувати опис PR так: « Ця конфігурація Dagger здається надто багатослівною; чи можемо ми спростити графік, щоб зменшити потенційні проблеми з продуктивністю? » Ключовим тут є не просто зауваження, що графік « складний », а пояснення * чому * він викликає занепокоєння — а саме, потенційні наслідки для продуктивності. Аналогічно, під час налаштування середовища Earthly вам, можливо, слід буде чітко вказати причини включення певних залежностей або встановлення певних версій. Повідомлення Slack, що вимагає пояснення від товариша по команді, може бути таким: «Я намагаюся переконатися, що ця Земна побудова повністю відтворюється у всіх середовищах. Чи можете ви підтвердити, що каталог node_modules буде явно виключено, щоб уникнути можливого дрейфу версій?» Метою є перейти за межі технічного жаргону і представити ваші думки у такий спосіб, який легко зрозуміти і виконати. Використання точної мови демонструє не тільки знання, але й розуміння ширших наслідків вашого вибору.
Іншою областю, де словник має значне значення, є в описах PR для змін Dagger. Хороший опис повинен чітко описувати які зміни ви робите, чому ви робите їх (з посиланням назад до продуктивності або підтримки), і як вони впливають на інші частини коду. Наприклад: « Перероблено графік залежностей для служби автентифікації користувача за допомогою Dagger, щоб поліпшити ефективність кешування і зменшити витрати на інстанціонування. Ця зміна виключає необхідність створення зайвих об’ єктів під час запитів на реєстрацію, що призведе до виміряного зменшення затримки, що було продемонстровано у нещодавніх тестах продуктивності. » Зауважте використання технічних термінів, таких як « витрати на інстансування » і « затримка » — це звичайні фрази, які ви почуєте під час оптимізації систем.
Нарешті, пам’ятайте, що модульність Dagger добре підходить для обговорення компонентів, які можна використовувати повторно. Коли ви пропонуєте новий модуль Dagger, ви можете пояснити: « Цей новий модуль містить логіку обробки платежів, що дозволяє нам легко інтегрувати його у різноманітні служби без дублювання коду і зменшення ризику невідповідностей ». У цьому випадку чітке повідомлення підкреслює переваги модульної конструкції — можливість підтримки, повторного використання і зменшення складності.
earthly exec --debug my-earthly-project bash -c "node --version"
Ця проста команда показує, як можна використовувати Earthly для виконання команд у визначеному середовищі, перевіряючи версію Node. js, яку ви використовуєте. Це реальний приклад того, як можна обговорити відтворюваність і послідовність середовища у розмові про ваш конвеєр CI/CD.