Riba:
- Ability don fahimtar ra'ayin CI / CD, tsarin jiki na bututu (mai tayar da hankali, aiki, mataki, mai gudu, kayan tarihi) da bambance-bambance tsakanin GitHub Actions da GitLab CI kuma suna da hankali na wucin gadi suna samar da bututu tare da mahallin da ya dace.
- Ikon dubawa da amintaccen bayanan sirri, izini da wanzuwar abubuwan da ake kira a cikin bututun da aka samar ta hanyar hankali na wucin gadi
- Ikon yin amfani da ƙa'idodin rashin rubuta sirri a cikin rubutu bayyananne, ba da izini kaɗan, da kiyaye tura aiki ta hanyar raba shi da CI.
Zuciyar software ta zamani ita ce bututun mai sarrafa kansa wanda lambar ke barin kwamfutar mai haɓakawa har sai ta isa ga abokin ciniki lafiya. Ana kiran wannan bututu CI/CD. CI (Ci gaba da Haɗuwa) ita ce haɗawa ta atomatik da gwajin kowane canjin lambar; Manufarsa shine a kama kwaro kafin mai haɓakawa ya bar maɓalli. CD (Ci gaba da Bayarwa/Aiki) shiri ne ta atomatik ko ma sakin lambar da aka gwada. Bututun CI/CD shine fayil ɗin daidaitawa wanda ke bayyana waɗannan matakan cikin tsari - yawanci ana rubuta su cikin YAML (tsarin rubutu na daidaitawa da mutum zai iya karantawa).
Rubuta waɗannan fayilolin YAML da hannu abu ne mai wahala, magana, kuma mai saurin kuskure; Idan shigarwar ta zame ta wuri ɗaya, duka bututun ya karye. Wannan shine inda AI ya shigo: tare da mahallin da ya dace, yana samar da daftarin aiki a cikin daƙiƙa. Amma aikin ku ne fahimtar da tabbatar da abin da kowane mataki da aka samar ke yi - saboda wannan bututun ne ke ɗaukar lambar ku don samarwa.
Anatomy na bututun CI/CD
Kowane bututun ya ƙunshi dabaru na asali da yawa. Ba za ku iya sarrafa fitar da AI ba tare da sanin waɗannan:
- Trigger: Me ke farawa bututun? Yawancin lokaci tura zuwa reshe, buƙatun ja (buƙatun haɗin kai), ko jadawali.
- Ayuba: Naúrar ma'ana wanda ke aiwatar da jerin matakai; misali "gwaji", "gina", "aikawa".
- Mataki: Umarni ɗaya ko aiki a cikin aiki.
- Mai gudu: Injin kama-da-wane ko kwandon da ayyuka ke gudana akansa.
- Artifact: Abubuwan da aka samar ta aiki ɗaya kuma ana amfani da su ta hanyar ayyuka na gaba (misali, fayil ɗin da aka haɗa).
- Sirri: Bayanin sirri wanda Pipeline ke amfani da shi amma bai kamata ya kasance cikin rubutu bayyananne a cikin ma'ajiya ba.
Ayyukan GitHub yana kiyaye wannan ma'anar a cikin .github/workflows/* .yml fayiloli; Naúrar ita ce tafiyar aiki → aiki → matsayi matsayi. GitLab CI, a gefe guda, yana amfani da matakin → tsarin aiki a cikin fayil ɗin .gitlab-ci.yml. AI ya san duka kalmomin biyu, amma dole ne ku faɗi a sarari wanda kuke so.
Tukwici: Lokacin tambayar AI don bututun, koyaushe saka: dandamali (Ayyukan GitHub ko GitLab CI), harshe / tsarin (Node, .NET, Python…), jawo, da ko za a tura shi. Waɗannan bayanan guda huɗu sun ninka amfanin fitarwa.
Mataki-mataki: Zayyana bututu tare da AI
- Bayyana manufar. Kamar "gudanar gwaje-gwaje akan turawa zuwa babba, gina hoto, amma sai a tura lokacin da aka jefa alamar".
- A sa an samar da kwarangwal. Tambayi AI don ainihin tafiyar aiki.
- Karanta kuma ku fahimci matakan. Tabbatar da abin da kowane gudu da amfani da layi ke yi.
- Duba Bayanan Sirri. Ana kiran asirin da ${{ secrets.NAME }} ko an saka su a cikin lambar?
- Gwada shi a gida/CI. Guda shi a kan ƙaramin ma'ajiyar gwaji, duba ja-kore (fail-pass) hali.
- Fadada sannu a hankali. Da farko kawai ƙara CI (gwaji), sannan ginawa, ƙara ƙarawa ta ƙarshe.
Tsaro: sirri da izini a cikin bututun
CI/CD yana daya daga cikin wuraren da ake yawan zubar da sirri. Dokokin zinariya guda uku:
- Kar a taɓa rubuta sirri cikin rubutu a sarari cikin YAML. Yi amfani da ma'ajiyar sirrin dandamali (Sirrin GitHub, GitLab CI/CD Variables) kuma a kira shi da ${{ secrets.X}}.
- Mafi ƙarancin gata. Alamar da kuka ba Pipeline zai sami iko da yawa gwargwadon buƙata. Ƙuntata wannan tare da izini: toshe a cikin Ayyukan GitHub.
- Kar a latsa sirri a kan log ɗin. Layuka kamar echo $TOKEN suna bayyana sirrin cikin log ɗin. Mashin dandali, amma kuma a kula.
Tsanaki: Don dacewa, AI wani lokaci yana sanya dabi'u masu alaƙa kamar kalmar sirri: 123456 ko manyan izini: rubuta-duk a cikin bututun samfurin. Koyaushe gyara wannan: canza sirri zuwa tunani, rugujewar izini.
kwatanta jadawalin
ra'ayi
Ayyukan GitHub
GitLab CI
Fayil na tsari
.github/gudanar aiki/*.yml
.gitlab-ci.yml
ginin naúrar
aiki → aiki → mataki
mataki → aiki
jawo
goma:
dokoki: / kawai:
Sirrin kira
${{sirrin.NAME}}
$NAME ( CI/CD Variables)
Abubuwan da aka shirya
Yana amfani da: Action@v4
sun haɗa da: / samfuri
mai gudu
gudu-on:
Tag:
uku mini lokuta
Case 1 - Rage zuwa awanni 6 da mintuna 40. Ƙungiya ta so ta sarrafa tsarin aikin gwajin-gina-aiki, amma babu wanda ya saba da YAML. Sun bayyana YZ a matsayin "aikin Node.js, GitHub Actions, gwajin npm da gina npm a turawa zuwa babba, tura kawai a cikin alamar v*". AI ta samar da kwarangwal mai aiki na layin 40; Tawagar ta tabbatar da kowane mataki kuma ta tafi kai tsaye cikin mintuna 40. Da da hannu suka rubuta ta, da aikin yini ne.
Hali na 2 - Tabbatarwa ya sami raunin tsaro. Wani injiniya ya tambayi AI don tura aikin aiki. Abubuwan da aka fitar sun haɗa da izini: rubuta-duk - ma'ana alamar zata iya rubuta zuwa ma'ajiyar, fakiti, komai. Injiniyan ya lura da wannan kuma ya rage shi tare da izini: {content: read, packs: write}. Wannan ya kawar da haɗarin abin dogaro da aka sace wanda ya maye gurbin duka ma'ajiyar.
Case 3 - Hallucinatory mataki. Ƙungiya ɗaya ta gudanar da amfani da AI da aka ba da shawara: ayyuka / tura-to-aws@v3 line; Babu irin wannan aikin na hukuma, AI ya sanya sunan. Bututun ya fashe tare da "ba a sami matakin ba". Darasi: Tabbatar a cikin Kasuwa cewa kowane ɓangaren da ake kira tare da amfani: a zahiri ya wanzu.
Samfura huɗu masu kwafi
1) Basic CI aiki gudana:
Rubuta aikin CI don Ayyukan GitHub. Aiki: [HARSHE/TSARA.Tsauka: turawa da jawo buƙatun zuwa babban reshe. Matakai: shigar da dogara, gudanar da gwaje-gwaje, gudanar da lint. NO Deploy.Mai gudu ubuntu-sabon. Babu wani sirri da ake bukata. Bayanin YAML.
2) Rarraba CD ɗin aiki (amintacce):
Rubuta aikin turawa don [PLATFORM]. Ya kamata kawai yayi aiki akan alamar 'v*'. Manufar: [MEDIA/Cloud]. Dokoki: - KADA KA rubuta asirin cikin rubutu bayyananne, a kira su da ${{ sirrin.
3) Bayyana bututun da ke akwai:
Yi bayanin layin bututun [PLATFORM] mai zuwa: menene kowane aiki yake yi, a wane tsari yake gudanarwa, wane sirri yake amfani da shi, kuma menene maki biyu mafi haɗari? A ƙarshe, bayar da shawarar ingantawa guda 3. Bututun: [YAML CONTENT]
4) Gaggauta Bututun:
Bututun CI mai zuwa yana gudana a hankali (lokacin: [X min]). Bincika amfani da cache, ayyuka masu kama da juna da matakan da ba dole ba. Ba da kankare guda 5, shawarwarin hanzarta aiwatarwa kuma rubuta qiyasin tasirin kowane. Bututu: [YAML]
Rauni mai ƙarfi / Ƙarfi mai ƙarfi
Rauni: "Rubuta GitHub Ayyukan Ayyuka."
Sakamako: ba a san ko wane harshe ba ne, wanda ke jawo, ko akwai turawa; AI yana ba da misalin Node na gabaɗaya, mai yiwuwa ba zai dace da aikin ku ba, kuma yana iya yin taurin sirrin.
Ƙarfafa: "Rubuta aikin GitHub Actions workflow. Python 3.12 aikin, gudanar da pytest + ruff a cikin buƙatun ja da babban turawa; NO turawa; haɓaka abin dogara tare da cache pip; babu asirin da ake buƙata. Fitar da YAML tare da sharhi."
Bambanci: faɗakarwa ta biyu tana ba da harshe, faɗakarwa, iyaka (babu turawa), tsammanin aiki, da ƙuntatawar tsaro. Fitowar tana aiki kai tsaye.
Kuskuren gama gari
- Shigar da Sirrin cikin YAML. Kalmar sirrin rubutu/alama shine mafi yawan lahani na CI.
- Izini mai faɗin yawa. Ba da mafi ƙarancin izinin da ake buƙata maimakon rubuta-duk.
- Dogaro da aiki/samfurin da babu shi. Tabbatar da amfani da AI-yi: layuka a cikin Kasuwa.
- Rikicin Ƙaddamarwa tare da CI. Gwajin na iya gudana akan kowane turawa, amma ƙaddamarwa dole ne a sarrafa shi kuma a amince da shi.
- Ba amfani da cache ba. Shigar da abubuwan dogaro daga karce akan kowane gudu yana rage jinkirin bututun da mintuna.
- Gwada aikin farko na aiki kai tsaye a cikin babban ma'ajiya. Shigar da shi a kan ma'ajiyar gwaji da farko.
A takaice
Bututun CI/CD bututu ne masu sarrafa kansa waɗanda ke motsa lamba lafiya zuwa samarwa kuma an ayyana su tare da YAML. AI da sauri yana samar da zane-zane masu aiki don Ayyukan GitHub da GitLab CI - amma kuna buƙatar bayyana sarai game da dandamali, harshe, faɗakarwa, da ƙaddamar da iyaka. Akwai dokoki guda uku a cikin tsaro: kiran sirri ta hanyar tunani, ba da mafi ƙarancin gata, kar a buga sirrin cikin log ɗin. Alhakin ku ne don tabbatar da cewa kowane yana amfani da:/haɗa: akwai ainihin abin da kowane mataki yake yi.
Aikin aikace-aikace
Zaɓi aikin samfur mai sauƙi (ko da "sannu duniya" a cikin harshen ku zai yi). Shin AI ta samar da tsarin aiki tare da samfurin "Basic CI workflow" a sama. Sa'an nan: (1) rubuta da kalmominka abin da kowane mataki yake yi; (2) tabbatar da cewa babu wani sirri da aka shigar kuma izini kunkuntar; (3) Idan za ta yiwu, gudanar da shi a cikin tankin gwaji kuma kula da halayen ja-kore.
jerin abubuwan dubawa
- [ ] Na ƙara dandali, harshe/tsari, faɗakarwa da ƙaddamar da iyaka ga faɗakarwa na.
- [ ] Na fahimci abin da kowane aiki da mataki ke yi a cikin YAML da aka samar.
- [ ] Babu wani sirri da ke bayyana a sarari; duk ${{sirrin.X}} / CI m.
- [ ] Na rage izini zuwa mafi ƙarancin iko.
- [ ] Na tabbatar da cewa duk abin da ake kira ayyuka/samfuri a zahiri sun wanzu.
- [ ] Na sanya matakin turawa sarrafawa tare da yarda/kariya.