Jednotka 2 / 11

Navrhovanie CI/CD kanálov s umelou inteligenciou: GitHub Actions a GitLab CI

zisky:

  • Schopnosť porozumieť konceptu CI/CD, anatómii potrubia (spúšťač, úloha, krok, bežec, artefakt) a rozdielom medzi akciami GitHub a GitLab CI a nechať umelú inteligenciu vytvárať potrubia so správnym kontextom
  • Schopnosť kontrolovať a zabezpečovať tajné referencie, povolenia a existenciu volaných komponentov v procese vytvárania umelej inteligencie
  • Schopnosť aplikovať princípy nepísať tajomstvá v obyčajnom texte, udeľovať minimálnu autorizáciu a udržiavať nasadenie pod kontrolou oddelením od CI

Srdcom moderného softvéru je automatizovaný kanál, cez ktorý kód opúšťa počítač vývojára, kým sa bezpečne nedostane k zákazníkovi. Toto potrubie sa nazýva CI/CD. CI (Continuous Integration) je automatická kompilácia a testovanie každej zmeny kódu; Jeho účelom je zachytiť chybu skôr, než vývojár vôbec opustí klávesnicu. CD (Continuous Delivery/Deployment) je automatická príprava alebo dokonca uvoľnenie testovaného kódu. Potrubie CI/CD je konfiguračný súbor, ktorý definuje tieto kroky v poradí – zvyčajne napísaný v YAML (konfiguračný textový formát čitateľný pre ľudí).

Ručné písanie týchto YAML súborov je únavné, podrobné a náchylné na chyby; Ak sa priehlbina posunie o jednu medzeru, celé potrubie sa zlomí. Tu prichádza umelá inteligencia: so správnym kontextom vytvorí pracovný návrh v priebehu niekoľkých sekúnd. Ale je vašou úlohou pochopiť a overiť, čo robí každý vygenerovaný krok – pretože toto je kanál, ktorý prenáša váš kód do prod.

Anatómia CI/CD potrubia

Každé potrubie pozostáva z niekoľkých základných pojmov. Výstup AI nemôžete ovládať bez toho, aby ste vedeli:

  • Spúšťač: Čo spúšťa potrubie? Zvyčajne push na pobočku, žiadosť o stiahnutie (žiadosť o zlúčenie) alebo plán.
  • Job: Logická jednotka, ktorá vykonáva sériu krokov; napríklad "test", "build", "deploy".
  • Krok: Jediný príkaz alebo akcia v rámci úlohy.
  • Runner: Virtuálny počítač alebo kontajner, na ktorom sa spúšťajú úlohy.
  • Artefakt: Výstup vytvorený jednou úlohou a použitý nasledujúcimi úlohami (napríklad skompilovaný súbor).
  • Tajomstvo: Dôverné informácie, ktoré Pipeline používa, ale nemali by zostať ako obyčajný text v úložisku.

Akcie GitHub uchovávajú túto definíciu v súboroch .github/workflows/*.yml; Jednotkou je workflow → job → hierarchia krokov. GitLab CI na druhej strane používa štruktúru stage → job v súbore .gitlab-ci.yml. Umelá inteligencia pozná obe syntaxe, ale musíte jasne povedať, ktorú chcete.

Tip: Keď žiadate AI o kanály, vždy špecifikujte: platformu (GitHub Actions alebo GitLab CI), jazyk/rámec (Node, .NET, Python…), spúšťač a či bude nasadený. Tieto štyri informácie zdvojnásobujú užitočnosť výstupu.

Krok za krokom: Navrhovanie potrubia s AI

  1. Ujasnite si cieľ. Ako napríklad „spustiť testy na push to main, zostaviť obrázok, ale nasadiť len vtedy, keď sa hodí značka“.
  2. Nechajte vyrobiť kostru. Požiadajte AI o základný pracovný postup.
  3. Prečítajte si a pochopte kroky. Overte, čo robí každý riadok spustenia a použitia.
  4. Skontrolujte tajné referencie. Volajú sa tajomstvá ${{ secrets.NAME }} alebo sú vložené do kódu?
  5. Skúste to lokálne/CI. Spustite ho na malom testovacom úložisku, pozrite si červeno-zelené (fail-pass) správanie.
  6. Rozširujte postupne. Najprv stačí pridať CI (test), potom zostaviť a nakoniec pridať nasadenie.

Bezpečnosť: tajomstvo a povolenie sa pripravuje

CI/CD je jedno z miest, kde tajomstvá unikajú najviac. Tri zlaté pravidlá:

  1. Nikdy nepíšte tajomstvá ako obyčajný text v YAML. Použite tajné úložisko platformy (GitHub Secrets, GitLab CI/CD Variables) a zavolajte ho pomocou ${{ secrets.X }}.
  2. Najmenej privilégium. Token, ktorý dáte Pipeline, bude mať len toľko autority, koľko je potrebné. Zúžte to pomocou povolení: blokovať v akciách GitHub.
  3. Netlačte tajne na denník. Riadky ako echo $TOKEN odhaľujú tajomstvo v denníku. Platformy maskujte, ale buďte opatrní.
Upozornenie: Umelá inteligencia pre pohodlie niekedy vkladá do vzorových kanálov vložené hodnoty, ako je heslo: 123456 alebo príliš široké oprávnenia: zapisovať všetko. Vždy to opravte: zmeňte tajomstvo na referenciu, zbaľte povolenie.

porovnávacia tabuľka

koncepcie

Akcie GitHub

GitLab CI

Konfiguračný súbor

.github/workflows/*.yml

.gitlab-ci.yml

stavebná jednotka

pracovný postup → úloha → krok

etapa → zamestnanie

spúšťač

desať:

pravidlá: / len:

Privolať tajomstvo

${{ secrets.NAME }}

$NAME (premenné CI/CD)

Pripravený komponent

použitie: action@v4

zahŕňajú: /template

bežec

nájazdy:

značky:

tri mini prípady

Prípad 1 – Skrátené na 6 hodín a 40 minút. Tím chcel zautomatizovať svoj proces manuálneho testovania, zostavovania a nasadenia, ale nikto nebol oboznámený s YAML. YZ opísali ako „projekt Node.js, akcie GitHub, test npm a zabudovanie npm push to main, nasadenie iba v značke v*“. AI vytvorila pracovnú kostru so 40 riadkami; Tím overil každý krok a za 40 minút sa spustil. Keby to napísali rukou, bola by to práca na deň.

Prípad 2 – Autentifikácia zachytila ​​chybu zabezpečenia. Inžinier požiadal AI o nasadenie pracovného postupu. Výstup obsahoval oprávnenia: write-all – čo znamená, že token mohol zapisovať do úložiska, balíkov, všetko. Inžinier si to všimol a zúžil to pomocou oprávnení: { obsah: čítanie, balíky: zápis }. Tým sa eliminovalo riziko unesenej závislosti nahradzujúcej celé úložisko.

Prípad 3 – Halucinácia. Jeden tím spustil použitie odporúčané AI: riadok actions/deploy-to-aws@v3; Žiadna taká oficiálna akcia nebola, názov vymyslela AI. Potrubie explodovalo s „akciou sa nenašla“. Lekcia: Overte si na Marketplace, že každý komponent volaný s použitím: skutočne existuje.

Štyri kopírovateľné šablóny

1) Základný pracovný postup CI:

Napíšte pracovný postup CI pre akcie GitHub. Projekt: [LANGUAGE/FRAMEWORK]. Spúšťač: žiadosť o zatlačenie a vytiahnutie do hlavnej vetvy. Kroky: nainštalujte závislosti, spustite testy, spustite lint. NO Deploy.Runner ubuntu-najnovšie. Nevyžaduje sa žiadne tajomstvo. Anotovať YAML.

2) Pracovný postup nasadeného disku CD (zabezpečený):

Napíšte pracovný postup nasadenia pre [PLATFORMU]. Malo by to fungovať iba so značkou 'v*'. Cieľ: [MEDIA/CLOUD]. Pravidlá: - NIKDY nepíšte tajomstvá ako obyčajný text, nazývajte ich ${{ tajomstvá.

3) Popíšte existujúce potrubie:

Opíšte nasledujúci kanál [PLATFORMA] riadok po riadku: čo robí každá úloha, v akom poradí prebieha, aké tajomstvo používa a aké sú jej dva najrizikovejšie body? Nakoniec navrhnite 3 vylepšenia. Pipeline: [YAML CONTENT]

4) Zrýchlite potrubie:

Nasledujúce potrubie CI beží pomaly (trvanie: [X min]). Skontrolujte využitie vyrovnávacej pamäte, paralelné úlohy a nepotrebné kroky. Uveďte 5 konkrétnych návrhov na zrýchlenie a zapíšte si odhadovaný vplyv každého z nich. Potrubie: [YAML]

Slabá výzva / Silná výzva

Slabé: „Pracovný postup napísať akcie GitHub.“

Výsledok: nie je jasné, ktorý jazyk, ktorý spúšťač, či existuje nasadenie; AI poskytuje generickú inštanciu Node, pravdepodobne nebude vyhovovať vášmu projektu a dokáže napevno zakódovať tajomstvo.

Strong: "Píšte pracovný postup GitHub Actions. Projekt Python 3.12, spustite pytest + ruff v žiadosti o stiahnutie a hlavné push; ŽIADNE nasadenie; zrýchlenie závislostí pomocou vyrovnávacej pamäte pip; nie sú potrebné žiadne tajomstvá. Exportujte YAML s komentármi."

Rozdiel: druhá výzva poskytuje jazyk, spúšťač, rozsah (bez nasadenia), očakávaný výkon a bezpečnostné obmedzenie. Výstup funguje priamo.

Časté chyby

  • Vloženie tajomstva do YAML. Heslo/token v otvorenom texte je najčastejšou zraniteľnosťou CI.
  • Príliš široké povolenie. Namiesto zápisu všetkých udeľte minimálne požadované povolenie.
  • Spoliehanie sa na neexistujúcu akciu/šablónu. Overte si využitie: linky pomocou AI na Marketplace.
  • Zamieňanie nasadenia s CI. Test môže prebiehať pri každom stlačení, ale nasadenie musí byť kontrolované a schválené.
  • Nepoužívanie vyrovnávacej pamäte. Inštalácia závislostí od začiatku pri každom spustení spomalí priebeh o minúty.
  • Vyskúšanie prvého pracovného postupu priamo v hlavnom úložisku. Najprv ho spustite na testovacom úložisku.

V súhrne

Potrubia CI/CD sú automatizované kanály, ktoré bezpečne presúvajú kód do produktu a sú definované pomocou YAML. Umelá inteligencia rýchlo vytvára pracovné plány pre akcie GitHub Actions a GitLab CI – musíte však mať jasno v platforme, jazyku, spúšťači a rozsahu nasadenia. Existujú tri pravidlá bezpečnosti: volať tajné informácie odkazom, udeľovať minimálne privilégiá, netlačiť tajomstvá do denníka. Je vašou zodpovednosťou overiť, či každý komponent use:/include: skutočne existuje a čo robí každý krok.

Aplikačná úloha

Vyberte si jednoduchý vzorový projekt (stačí aj „ahoj svet“ vo vašom jazyku). Nechajte AI vytvoriť pracovný postup so šablónou „Základný pracovný postup CI“ vyššie. Potom: (1) napíšte vlastnými slovami, čo robí každý krok; (2) overiť, že nie sú vložené žiadne tajomstvá a oprávnenia sú obmedzené; (3) Ak je to možné, spustite ho v testovacej nádrži a sledujte červeno-zelené správanie.

kontrolný zoznam

  • [ ] Do výzvy som pridal platformu, jazyk/rámec, spúšťač a rozsah nasadenia.
  • [ ] Rozumiem tomu, čo robí každá úloha a krok vo vygenerovanom YAML.
  • [ ] Žiadne tajomstvo nie je otvorený text; všetky ${{ secrets.X }} / premenná CI.
  • [ ] Povolenia som zúžil na minimálne oprávnenie.
  • [ ] Overil som, že všetky volané akcie/šablóny skutočne existujú.
  • [ ] Urobil som krok nasadenia kontrolovaný schválením/ochranou.