Vahid 2 / 11

Süni intellektlə CI/CD boru kəmərlərinin layihələndirilməsi: GitHub Actions və GitLab CI

Qazanclar:

  • CI/CD konsepsiyasını, boru kəməri anatomiyasını (tətik, iş, addım, qaçışçı, artefakt) və GitHub Actions ilə GitLab CI arasındakı fərqləri anlamaq və düzgün kontekstdə boru kəmərləri istehsal edən süni intellektə sahib olmaq bacarığı
  • Süni intellekt tərəfindən istehsal olunan boru kəmərində gizli istinadları, icazələri və çağırılan komponentlərin mövcudluğunu yoxlamaq və təmin etmək bacarığı
  • Açıq mətndə sirləri yazmamaq, minimal icazə vermək və CI-dən ayırmaqla yerləşdirməni nəzarətdə saxlamaq prinsiplərini tətbiq etmək bacarığı

Müasir proqram təminatının ürəyi, kodun müştəriyə təhlükəsiz şəkildə çatana qədər tərtibatçının kompüterini tərk etdiyi avtomatlaşdırılmış boru kəməridir. Bu boru CI/CD adlanır. CI (Continuous Integration) hər bir kod dəyişikliyinin avtomatik tərtibi və sınaqdan keçirilməsidir; Onun məqsədi, tərtibatçı hətta klaviaturanı tərk etməzdən əvvəl bir səhvi tutmaqdır. CD (Continuous Delivery/Deployment) sınaqdan keçirilmiş kodun avtomatik hazırlanması və ya hətta buraxılmasıdır. CI/CD boru xətti bu addımları ardıcıllıqla müəyyən edən konfiqurasiya faylıdır – adətən YAML-də yazılır (insan tərəfindən oxuna bilən konfiqurasiya mətn formatı).

Bu YAML fayllarını əl ilə yazmaq yorucu, ətraflı və səhvlərə meyllidir; Əgər girinti bir boşluqla sürüşürsə, bütün boru kəməri qırılır. Süni intellektin işə girdiyi yer budur: düzgün kontekstlə o, saniyələr ərzində işlək qaralama hazırlayır. Ancaq hər bir yaradılan addımın nə etdiyini anlamaq və yoxlamaq sizin işinizdir - çünki bu, kodunuzu istehsala daşıyan borudur.

CI/CD boru kəmərinin anatomiyası

Hər bir boru kəməri bir neçə əsas anlayışdan ibarətdir. Bunları bilmədən AI çıxışını idarə edə bilməzsiniz:

  • Tətik: Boru kəmərini nə işə salır? Adətən filiala təkan, çəkmə sorğusu (birləşmə sorğusu) və ya cədvəl.
  • İş: Bir sıra addımları yerinə yetirən məntiqi vahid; məsələn, "test", "qurmaq", "yerləşdirmək".
  • Addım: İş daxilində tək bir əmr və ya hərəkət.
  • Runner: İşlərin işlədiyi virtual maşın və ya konteyner.
  • Artefakt: Bir iş tərəfindən istehsal olunan və sonrakı işlər tərəfindən istifadə edilən çıxış (məsələn, tərtib edilmiş fayl).
  • Gizli: Pipeline-ın istifadə etdiyi məxfi məlumat, lakin depoda düz mətndə qalmamalıdır.

GitHub Actions bu tərifi .github/workflows/*.yml fayllarında saxlayır; Vahid iş axını → iş → addım iyerarxiyasıdır. GitLab CI isə .gitlab-ci.yml faylında mərhələ → iş strukturundan istifadə edir. AI hər iki sintaksisi bilir, ancaq hansını istədiyinizi açıq şəkildə söyləməlisiniz.

İpucu: Boru kəmərləri üçün süni intellektdən soruşarkən həmişə qeyd edin: platforma (GitHub Actions və ya GitLab CI), dil/çərçivə (Node, .NET, Python…), trigger və onun yerləşdirilib-yerləşdirilməyəcəyi. Bu dörd məlumat çıxışın faydalılığını ikiqat artırır.

Addım-addım: AI ilə boru kəmərinin layihələndirilməsi

  1. Məqsədi aydınlaşdırın. "Məssildə təkanla testlər aparın, şəkil yaradın, ancaq etiket atıldıqda yerləşdirin" kimi.
  2. Skelet istehsal olunsun. Əsas iş axını üçün AI-dan soruşun.
  3. Addımları oxuyun və anlayın. Hər bir qaçış və istifadə xəttinin nə etdiyini yoxlayın.
  4. Gizli istinadları yoxlayın. Sirrlər ${{ secrets.NAME }} ilə adlanır, yoxsa onlar koda daxil edilib?
  5. Yerli olaraq sınayın/CI. Kiçik bir test deposunda işə salın, qırmızı-yaşıl (uğursuzluq) davranışına baxın.
  6. Tədricən genişləndirin. Əvvəlcə sadəcə CI (test) əlavə edin, sonra qurun, sonuncu yerləşdirmə əlavə edin.

Təhlükəsizlik: boru kəmərində sirr və icazə

CI/CD, sirlərin ən çox sızdığı yerlərdən biridir. Üç qızıl qayda:

  1. YAML-də heç vaxt sirləri düz mətnlə yazmayın. Platformanın gizli deposundan istifadə edin (GitHub Secrets, GitLab CI/CD Variables) və onu ${{ secrets.X }} ilə çağırın.
  2. Ən az imtiyaz. Pipeline-a verdiyiniz token yalnız lazım olan qədər səlahiyyətə malik olacaq. Bunu icazələrlə daraltın: GitHub Actions-da bloklayın.
  3. Günlükdə sirri basmayın. echo $TOKEN kimi xətlər jurnaldakı sirri açır. Platformalar maskalanır, amma diqqətli olun.
Diqqət: Rahatlıq üçün süni intellekt bəzən parol kimi daxil edilmiş dəyərləri qoyur: 123456 və ya həddən artıq geniş icazələr: hamısını nümunə boru kəmərlərində yazmaq. Həmişə bunu düzəldin: sirri istinada dəyişin, icazəni yığışdırın.

müqayisə diaqramı

anlayış

GitHub Fəaliyyətləri

GitLab CI

Konfiqurasiya faylı

.github/workflows/*.yml

.gitlab-ci.yml

tikinti vahidi

iş axını → iş → addım

mərhələ → iş

tətik

on:

qaydalar: / yalnız:

Sirri çağırın

${{ sirr.NAME }}

$NAME (CI/CD Dəyişənləri)

Hazır komponent

istifadə edir: action@v4

daxildir: /şablon

qaçışçı

çalışır:

teqlər:

üç mini qutu

1-ci hal — 6 saat 40 dəqiqəyə endirildi. Komanda əl ilə sınaq-qurma-yerləşdirmə prosesini avtomatlaşdırmaq istədi, lakin heç kim YAML ilə tanış deyildi. Onlar YZ-ni "Node.js layihəsi, GitHub Fəaliyyətləri, npm testi və npm əsasda təkan qurmaq, yalnız v* etiketində yerləşdirmək" kimi təsvir ediblər. Süni intellekt 40 sətirdən ibarət işləyən bir skelet istehsal etdi; Komanda hər addımı yoxladı və 40 dəqiqə ərzində canlı yayıma çıxdı. Əllə yazsaydılar, bir günlük iş olardı.

2-ci hal - Doğrulama təhlükəsizlik zəifliyini aşkar etdi. Mühəndis süni intellektdən iş prosesini yerləşdirməyi xahiş etdi. Çıxışa icazələr daxil idi: hamısını yaz - o deməkdir ki, işarə depoya, paketlərə, hər şeyə yaza bilər. Mühəndis bunu fərq etdi və icazələrlə onu daraltdı: { məzmun: oxundu, paketlər: yazın }. Bu, qaçırılmış asılılığın bütün deponu əvəz etməsi riskini aradan qaldırdı.

3-cü vəziyyət - Halüsinasiya hərəkəti. Bir komanda süni intellekt tərəfindən təklif olunan istifadələri həyata keçirdi: actions/deploy-to-aws@v3 xətti; Belə bir rəsmi hərəkət yox idi, adı AI uydurdu. Boru kəməri "fəaliyyət tapılmadı" ilə partladı. Dərs: Marketplace-də istifadə edilən hər bir komponentin: həqiqətən mövcud olduğunu yoxlayın.

Dörd kopyalana bilən şablon

1) Əsas CI iş axını:

GitHub Actions üçün CI iş axını yazın. Layihə: [LANGUAGE/FRAMEWORK].Trigger: əsas filiala təkan və çək sorğusu. Addımlar: asılılıqları quraşdırın, testlər keçirin, lint işləyin. NO Deploy.Runner ubuntu-ən son. Heç bir sirr tələb olunmur. YAML-ə şərh yazın.

2) Yerləşdirilmiş CD iş axını (təhlükəsiz):

[PLATFORM] üçün yerləşdirmə iş prosesini yazın. O, yalnız 'v*' etiketində işləməlidir. Hədəf: [MEDIA/CLOUD]. Qaydalar: - Heç vaxt sirləri düz mətnlə yazmayın, onlara ${{ sirləri ilə zəng edin.

3) Mövcud boru kəmərini təsvir edin:

Aşağıdakı [PLATFORM] boru kəmərini sətir-sətir təsvir edin: hər bir iş nə edir, hansı ardıcıllıqla işləyir, hansı sirrdən istifadə edir və onun ən riskli iki nöqtəsi nədir? Nəhayət, 3 təkmilləşdirmə təklif edin. Boru kəməri: [YAML CONTENT]

4) Boru kəmərini sürətləndirin:

Aşağıdakı CI boru kəməri yavaş işləyir (müddət: [X dəq]). Keş istifadəsini, paralel işləri və lazımsız addımları yoxlayın. 5 konkret, təsirli sürətləndirmə təklifi verin və hər birinin təxmini təsirini yazın. Boru kəməri: [YAML]

Zəif məlumat / Güclü göstəriş

Zəif: "GitHub Actions iş axını yazın."

Nəticə: hansı dil, hansı tetikleyici, yerləşdirmənin olub-olmadığı aydın deyil; Süni intellekt ümumi Node nümunəsi verir, çox güman ki, layihənizə uyğun gəlməyəcək və sirri kodlaşdıra bilər.

Güclü: "GitHub Actions iş axınını yazın. Python 3.12 layihəsi, pull sorğusunda və əsas təkanda pytest + ruff-u işlədin; Yerləşdirmə YOX; pip keşi ilə asılılıqları sürətləndirin; sirr tələb olunmur. Şərhlərlə YAML-i ixrac edin."

Fərq: ikinci sorğu dili, tetikleyiciyi, əhatə dairəsini (yerləşdirmə yoxdur), performans gözləntisini və təhlükəsizlik məhdudiyyətini verir. Çıxış birbaşa işləyir.

Ümumi səhvlər

  • Sirri YAML-də yerləşdirmək. Açıq mətn parolu/tokeni ən çox yayılmış CI zəifliyidir.
  • Həddindən artıq geniş icazə. Hamısını yazmaq əvəzinə tələb olunan minimum icazəni verin.
  • Mövcud olmayan hərəkətə/şablona əsaslanaraq. Süni intellekt tərəfindən istifadə edilənləri yoxlayın: Marketplace-də xətlər.
  • Deploy-u CI ilə qarışdırmaq. Test hər təkanla işləyə bilər, lakin yerləşdirmə nəzarət edilməli və təsdiqlənməlidir.
  • Keş istifadə etməmək. Hər qaçışda sıfırdan asılılıqların quraşdırılması boru kəmərini dəqiqələrlə yavaşlatır.
  • Birinci iş axını birbaşa əsas depoda sınanır. Əvvəlcə onu sınaq deposunda işə salın.

Xülasə

CI/CD boru kəmərləri kodu təhlükəsiz şəkildə məhsula köçürən və YAML ilə müəyyən edilən avtomatlaşdırılmış borulardır. Süni intellekt tez bir zamanda GitHub Actions və GitLab CI üçün işləyən planlar hazırlayır – lakin siz platforma, dil, tetikleyici və yerləşdirmə sahəsi haqqında aydın olmalısınız. Təhlükəsizliyin üç qaydası var: sirləri istinadla çağırın, minimum imtiyazlar verin, jurnalda sirləri çap etməyin. Hər birinin:/include: komponentindən istifadə etdiyini və hər bir addımın nə etdiyini yoxlamaq sizin məsuliyyətinizdir.

Tətbiq tapşırığı

Sadə bir nümunə layihə seçin (hətta dilinizdə "salam dünya" belə edəcək). Süni intellektə yuxarıdakı "Əsas CI iş axını" şablonu ilə iş axını yaratsın. Sonra: (1) hər bir addımın nə etdiyini öz sözlərinizlə yazın; (2) heç bir sirrin daxil edilmədiyini və icazələrin dar olduğunu yoxlayın; (3) Mümkünsə, onu sınaq tankında işlədin və qırmızı-yaşıl davranışı müşahidə edin.

yoxlama siyahısı

  • [ ] Mən sorğuma platforma, dil/çərçivə, trigger və yerləşdirmə sahəsini əlavə etdim.
  • [ ] Mən hər bir işin və addımın yaradılan YAML-də nə etdiyini başa düşürəm.
  • [ ] Heç bir sirr açıq mətn deyil; bütün ${{ secrets.X }} / CI dəyişəni.
  • [ ] Mən icazələri minimum səlahiyyətə qədər daraltdım.
  • [ ] Bütün adlanan hərəkətlərin/şablonların həqiqətən mövcud olduğunu təsdiqlədim.
  • [ ] Mən yerləşdirmə addımını təsdiq/mühafizə ilə idarə etdim.