Yunit 2 / 11

Pagdidisenyo ng CI/CD Pipelines na may Artipisyal na Intelligence: GitHub Actions at GitLab CI

Mga nadagdag:

  • Kakayahang maunawaan ang konsepto ng CI/CD, pipeline anatomy (trigger, trabaho, hakbang, runner, artifact) at ang mga pagkakaiba sa pagitan ng GitHub Actions at GitLab CI at magkaroon ng artificial intelligence na gumagawa ng mga pipeline na may tamang konteksto
  • Kakayahang suriin at i-secure ang mga lihim na sanggunian, pahintulot at pagkakaroon ng mga tinatawag na bahagi sa pipeline na ginawa ng artificial intelligence
  • Kakayahang ilapat ang mga prinsipyo ng hindi pagsusulat ng mga lihim sa plain text, pagbibigay ng minimal na awtorisasyon, at pagpapanatiling kontrolado ang deployment sa pamamagitan ng paghihiwalay nito sa CI

Ang puso ng modernong software ay ang automated na pipeline kung saan iniiwan ng code ang computer ng developer hanggang sa ligtas itong maabot ang customer. Ang tubo na ito ay tinatawag na CI/CD. Ang CI (Continuous Integration) ay ang awtomatikong pagsasama-sama at pagsubok ng bawat pagbabago ng code; Ang layunin nito ay mahuli ang isang bug bago pa man umalis ang developer sa keyboard. Ang CD (Continuous Delivery/Deployment) ay ang awtomatikong paghahanda o kahit na paglabas ng sinubok na code. Ang CI/CD pipeline ay isang configuration file na tumutukoy sa mga hakbang na ito sa pagkakasunud-sunod — kadalasang nakasulat sa YAML (isang format ng text ng configuration na nababasa ng tao).

Ang pagsulat ng mga YAML file na ito sa pamamagitan ng kamay ay nakakapagod, verbose, at madaling magkamali; Kung ang indentation ay dumulas sa isang puwang, ang buong pipeline ay masisira. Dito pumapasok ang AI: na may tamang konteksto, gumagawa ito ng gumaganang draft sa ilang segundo. Ngunit tungkulin mong unawain at i-verify kung ano ang ginagawa ng bawat nabuong hakbang — dahil ito ang pipe na nagdadala ng iyong code sa prod.

Anatomy ng pipeline ng CI/CD

Ang bawat pipeline ay binubuo ng ilang pangunahing konsepto. Hindi mo makokontrol ang output ng AI nang hindi nalalaman ang mga ito:

  • Trigger: Ano ang nagsisimula sa Pipeline? Kadalasan ay isang push sa isang branch, isang pull request (merge request), o isang schedule.
  • Trabaho: Logical unit na nagsasagawa ng serye ng mga hakbang; halimbawa "test", "build", "deploy".
  • Hakbang: Isang utos o aksyon sa loob ng isang trabaho.
  • Runner: Ang virtual machine o container kung saan tumatakbo ang mga trabaho.
  • Artifact: Ang output na ginawa ng isang trabaho at ginagamit ng mga kasunod na trabaho (halimbawa, isang pinagsama-samang file).
  • Lihim: Kumpidensyal na impormasyon na ginagamit ng Pipeline ngunit hindi dapat manatili sa plain text sa repository.

Pinapanatili ng GitHub Actions ang kahulugang ito sa mga .github/workflows/*.yml file; Ang unit ay workflow → job → step hierarchy. Ang GitLab CI, sa kabilang banda, ay gumagamit ng stage → job structure sa .gitlab-ci.yml file. Alam ng AI ang parehong mga syntax, ngunit dapat mong tahasang sabihin kung alin ang gusto mo.

Tip: Kapag humihingi ng mga pipeline sa AI, palaging tukuyin ang: platform (GitHub Actions o GitLab CI), wika/framework (Node, .NET, Python...), trigger, at kung ito ay ide-deploy. Ang apat na piraso ng impormasyon na ito ay doble ang pagiging kapaki-pakinabang ng output.

Hakbang-hakbang: Pagdidisenyo ng pipeline gamit ang AI

  1. Linawin ang layunin. Tulad ng "magpatakbo ng mga pagsubok sa push to main, bumuo ng imahe, ngunit i-deploy lamang kapag inihagis ang tag."
  2. Ipagawa ang balangkas. Tanungin ang AI para sa pangunahing daloy ng trabaho.
  3. Basahin at unawain ang mga hakbang. I-verify kung ano ang ginagawa ng bawat run at gumagamit ng linya.
  4. Suriin ang mga Lihim na sanggunian. Tinatawag ba ang mga lihim ng ${{ secrets.NAME }} o naka-embed ba ang mga ito sa code?
  5. Subukan ito sa lokal/CI. Patakbuhin ito sa isang maliit na imbakan ng pagsubok, tingnan ang red-green (fail-pass) na gawi.
  6. Palawakin nang paunti-unti. Una magdagdag lamang ng CI (pagsubok), pagkatapos ay bumuo, huling magdagdag ng deploy.

Seguridad: lihim at pahintulot sa pipeline

Ang CI/CD ay isa sa mga lugar kung saan ang mga sikreto ang pinakamaraming tumutulo. Tatlong gintong panuntunan:

  1. Huwag kailanman magsulat ng mga lihim sa plain text sa YAML. Gamitin ang lihim na repository ng platform (GitHub Secrets, GitLab CI/CD Variables) at tawagan ito ng ${{ secrets.X }}.
  2. Pinakamababang pribilehiyo. Ang token na ibibigay mo sa Pipeline ay magkakaroon lamang ng higit na awtoridad kung kinakailangan. Paliitin ito gamit ang mga pahintulot: i-block sa GitHub Actions.
  3. Huwag pindutin ang lihim sa log. Ang mga linya tulad ng echo $TOKEN ay nagpapakita ng sikreto sa log. Mga platform mask, ngunit mag-ingat din.
Pag-iingat: Para sa kaginhawahan, minsan ay naglalagay ang AI ng mga naka-embed na halaga tulad ng password: 123456 o masyadong malawak na mga pahintulot: write-all sa mga sample na pipeline. Palaging ayusin ito: baguhin ang lihim sa reference, i-collapse ang pahintulot.

tsart ng paghahambing

konsepto

Mga Pagkilos sa GitHub

GitLab CI

File ng configuration

.github/workflows/*.yml

.gitlab-ci.yml

yunit ng gusali

daloy ng trabaho → trabaho → hakbang

yugto → trabaho

gatilyo

sampu:

panuntunan: / lamang:

Tumawag ng sikreto

${{ secrets.NAME }}

$NAME (CI/CD Variables)

Handa na bahagi

gumagamit ng: action@v4

isama ang: /template

mananakbo

tumatakbo:

mga tag:

tatlong mini case

Kaso 1 — Binawasan sa 6 na oras at 40 minuto. Nais ng isang team na i-automate ang kanilang manual test-build-deploy na proseso, ngunit walang pamilyar sa YAML. Inilarawan nila ang YZ bilang "Node.js project, GitHub Actions, npm test at npm build in push to main, i-deploy lang sa v* tag". Gumawa ang AI ng gumaganang balangkas ng 40 linya; Na-verify ng team ang bawat hakbang at naging live sa loob ng 40 minuto. Kung isinulat nila ito sa pamamagitan ng kamay, ito ay isang araw na gawain.

Kaso 2 — Ang pagpapatotoo ay nakakuha ng kahinaan sa seguridad. Hiniling ng isang engineer sa AI na mag-deploy ng workflow. Kasama sa output ang mga pahintulot: write-all — ibig sabihin ang token ay maaaring sumulat sa repositoryo, mga pakete, lahat. Napansin ito ng engineer at pinaliit ito ng mga pahintulot: { contents: read, packages: write }. Inalis nito ang panganib ng na-hijack na dependency na pinapalitan ang buong repositoryo.

Case 3 — Hallucinatory action. Isang team ang nagpatakbo ng mga iminungkahing gamit ng AI: actions/deploy-to-aws@v3 line; Walang ganoong opisyal na aksyon, ginawa ng AI ang pangalan. Sumabog ang pipeline na may "action not found". Aralin: I-verify sa Marketplace na ang bawat component na tinatawag na may mga gamit: ay aktwal na umiiral.

Apat na maaaring kopyahin na mga template

1) Basic CI workflow:

Sumulat ng isang CI workflow para sa GitHub Actions. Proyekto: [LANGUAGE/FRAMEWORK].Trigger: humiling ng push at pull sa pangunahing sangay. Mga hakbang: mag-install ng mga dependency, magpatakbo ng mga pagsubok, magpatakbo ng lint. WALANG Deploy.Runner ubuntu-latest. Walang lihim na kailangan. I-annotate ang YAML.

2) Na-deploy ang daloy ng trabaho sa CD (secure):

Isulat ang deploy workflow para sa [PLATFORM]. Dapat lang itong gumana sa tag na 'v*'. Target: [MEDIA/CLOUD]. Mga Panuntunan: - HUWAG magsulat ng mga lihim sa simpleng teksto, tawagan sila ng ${{ mga lihim.

3) Ilarawan ang umiiral na pipeline:

Ilarawan ang sumusunod na [PLATFORM] pipeline na linya sa pamamagitan ng linya: ano ang ginagawa ng bawat trabaho, sa anong pagkakasunud-sunod ito tumatakbo, anong lihim ang ginagamit nito, at ano ang dalawang pinakamapanganib na punto nito? Panghuli, magmungkahi ng 3 pagpapahusay. Pipeline: [YAML CONTENT]

4) Pabilisin ang Pipeline:

Ang sumusunod na pipeline ng CI ay mabagal na tumatakbo (tagal: [X min]). Suriin para sa paggamit ng cache, mga parallel na trabaho at mga hindi kinakailangang hakbang. Magbigay ng 5 kongkreto, naaaksyunan na mga mungkahi sa pagpapabilis at isulat ang tinantyang epekto ng bawat isa. Pipeline: [YAML]

Mahinang prompt / Malakas na prompt

Mahina: "Isulat ang daloy ng trabaho ng Mga Pagkilos sa GitHub."

Resulta: hindi malinaw kung aling wika, alin ang nag-trigger, kung mayroong deployment; Nagbibigay ang AI ng generic na halimbawa ng Node, malamang na hindi akma sa iyong proyekto, at maaaring i-hardcode ang sikreto.

Malakas: "Isulat ang workflow ng GitHub Actions. Python 3.12 project, patakbuhin ang pytest + ruff sa pull request at main push; NO deploy; bilisan ang mga dependency na may pip cache; walang kinakailangang mga lihim. I-export ang YAML na may mga komento."

Pagkakaiba: ang pangalawang prompt ay nagbibigay ng wika, trigger, saklaw (walang deployment), inaasahan sa pagganap, at hadlang sa seguridad. Direktang gumagana ang output.

Mga karaniwang pagkakamali

  • Pag-embed ng Lihim sa YAML. Ang password/token ng plaintext ay ang pinakakaraniwang kahinaan sa CI.
  • Masyadong malawak na permit. Ibigay ang minimum na pahintulot na kinakailangan sa halip na isulat-lahat.
  • Umaasa sa hindi umiiral na aksyon/template. I-verify ang mga gamit na ginawa ng AI: mga linya sa Marketplace.
  • Nakakalito ang Deploy sa CI. Ang pagsubok ay maaaring tumakbo sa bawat push, ngunit ang deployment ay dapat na kontrolado at maaprubahan.
  • Hindi gumagamit ng cache. Ang pag-install ng mga dependency mula sa simula sa bawat pagtakbo ay nagpapabagal sa pipeline ng ilang minuto.
  • Sinusubukan ang unang daloy ng trabaho nang direkta sa pangunahing imbakan. Patakbuhin muna ito sa isang test repository.

Sa buod

Ang mga pipeline ng CI/CD ay mga automated na pipe na ligtas na naglilipat ng code sa prod at tinukoy gamit ang YAML. Mabilis na gumagawa ang AI ng mga gumaganang blueprint para sa GitHub Actions at GitLab CI — ngunit kailangan mong maging malinaw tungkol sa platform, wika, trigger, at saklaw ng pag-deploy. Mayroong tatlong mga patakaran sa seguridad: tumawag ng mga lihim sa pamamagitan ng sanggunian, magbigay ng pinakamababang mga pribilehiyo, huwag mag-print ng mga lihim sa log. Responsibilidad mong i-verify na ang bawat gumagamit ay:/include: na aktwal na umiiral at kung ano ang ginagawa ng bawat hakbang.

Gawain ng aplikasyon

Pumili ng isang simpleng sample na proyekto (kahit isang "hello world" sa iyong wika ay gagawin). Hayaang gumawa ng workflow ang AI gamit ang template na "Basic CI workflow" sa itaas. Pagkatapos: (1) isulat sa iyong sariling mga salita kung ano ang ginagawa ng bawat hakbang; (2) i-verify na walang mga lihim na naka-embed at makitid ang mga pahintulot; (3) Kung maaari, patakbuhin ito sa isang tangke ng pagsubok at obserbahan ang pulang-berdeng gawi.

checklist

  • [ ] Idinagdag ko ang platform, wika/framework, trigger at deploy scope sa aking prompt.
  • [ ] Naiintindihan ko kung ano ang ginagawa ng bawat trabaho at hakbang sa nabuong YAML.
  • [ ] Walang lihim ang plaintext; lahat ng ${{ secrets.X }} / CI variable.
  • [ ] Pinaliit ko ang mga pahintulot sa pinakamababang awtoridad.
  • [ ] Na-verify ko na lahat ng tinatawag na aksyon/template ay talagang umiiral.
  • [ ] Ginawa ko ang hakbang sa pag-deploy na kontrolado nang may pag-apruba/proteksyon.