Добици:
- Способност разумевања концепта ЦИ/ЦД, анатомије цевовода (окидач, посао, корак, тркач, артефакт) и разлика између ГитХуб Ацтионс и ГитЛаб ЦИ и вештачка интелигенција производи цевоводе са правим контекстом
- Способност провере и обезбеђивања тајних референци, дозвола и постојања позваних компоненти у цевоводу које производи вештачка интелигенција
- Способност примене принципа неписања тајни у обичном тексту, давања минималног овлашћења и држања контроле примене одвајањем од ЦИ
Срце модерног софтвера је аутоматизовани цевовод кроз који код напушта рачунар програмера док безбедно не стигне до корисника. Ова цев се зове ЦИ/ЦД. ЦИ (Цонтинуоус Интегратион) је аутоматска компилација и тестирање сваке промене кода; Његова сврха је да ухвати грешку пре него што програмер уопште напусти тастатуру. ЦД (Цонтинуоус Деливери/Деплоимент) је аутоматска припрема или чак пуштање тестираног кода. ЦИ/ЦД цевовод је конфигурациони фајл који дефинише ове кораке по редоследу — обично написан у ИАМЛ-у (формат конфигурационог текста читљив за људе).
Писање ових ИАМЛ датотека ручно је заморно, опширно и подложно грешкама; Ако удубљење склизне за један размак, цео цевовод се ломи. Овде долази АИ: са правим контекстом, производи радни нацрт за секунде. Али ваш је посао да разумете и верификујете шта ради сваки генерисани корак — јер је ово цев која преноси ваш код за производњу.
Анатомија ЦИ/ЦД цевовода
Сваки цевовод се састоји од неколико основних концепата. Не можете контролисати АИ излаз без познавања ових:
- Триггер: Шта покреће цевовод? Обично гурање на грану, захтев за повлачење (захтев за спајање) или распоред.
- Посао: Логичка јединица која извршава низ корака; на пример "тестирај", "изгради", "размести".
- Корак: Једна команда или радња у оквиру посла.
- Руннер: Виртуелна машина или контејнер на којем се покрећу послови.
- Артефакт: Излаз који производи један посао и користи се у наредним пословима (на пример, компајлирана датотека).
- Тајна: Поверљиве информације које Пипелине користи, али не би требало да остану у обичном тексту у спремишту.
ГитХуб Ацтионс чува ову дефиницију у .гитхуб/воркфловс/*.имл датотекама; Јединица је радни ток → посао → хијерархија корака. ГитЛаб ЦИ, с друге стране, користи фазу → структуру посла у датотеци .гитлаб-ци.имл. АИ познаје обе синтаксе, али морате експлицитно рећи коју желите.
Савет: Када питате АИ за цевоводе, увек наведите: платформу (ГитХуб Ацтионс или ГитЛаб ЦИ), језик/оквир (Чвор, .НЕТ, Питхон…), окидач и да ли ће бити примењен. Ове четири информације удвостручују корисност резултата.
Корак по корак: Дизајнирање цевовода са АИ
- Разјасните циљ. На пример, „покрени тестове на пусх то маин, направи слику, али примени само када је ознака бачена“.
- Нека се произведе костур. Питајте АИ за основни ток посла.
- Прочитајте и разумејте кораке. Проверите шта свака линија за покретање и коришћење ради.
- Проверите тајне референце. Да ли се тајне позивају са ${{ сецретс.НАМЕ }} или су уграђене у код?
- Пробајте локално/ЦИ. Покрените га на малом тестном спремишту, погледајте црвено-зелено (фаил-пасс) понашање.
- Проширите постепено. Прво само додајте ЦИ (тестирање), затим направите, а последње додајте имплементирајте.
Сигурност: тајна и дозвола у припреми
ЦИ/ЦД је једно од места где тајне највише цуре. Три златна правила:
- Никада немојте писати тајне у обичном тексту у ИАМЛ-у. Користите тајно спремиште платформе (ГитХуб Сецретс, ГитЛаб ЦИ/ЦД Вариаблес) и позовите га са ${{ сецретс.Кс }}.
- Најмања привилегија. Токен који дате Пипелине-у имаће само онолико овлашћења колико је потребно. Сузите ово са дозволама: блокирајте у ГитХуб акцијама.
- Не притискајте тајну на дневнику. Линије попут ехо $ТОКЕН откривају тајну у дневнику. Платформе маске, али будите такође опрезни.
Опрез: Ради практичности, АИ понекад поставља уграђене вредности као што је лозинка: 123456 или прешироке дозволе: уписи све у узорке цевовода. Увек поправи ово: промени тајну у референцу, скупи дозволу.
упоредни графикон
концепт
ГитХуб Ацтионс
ГитЛаб ЦИ
Конфигурациони фајл
.гитхуб/воркфловс/*.имл
.гитлаб-ци.имл
грађевинска јединица
радни ток → посао → корак
фаза → посао
окидач
десет:
правила: / само:
Призвати тајну
${{ сецретс.НАМЕ }}
$НАМЕ (ЦИ/ЦД променљиве)
Спремна компонента
користи: ацтион@в4
укључују: /темплате
тркач
ради на:
ознаке:
три мини кофера
Случај 1 — Смањено на 6 сати и 40 минута. Тим је желео да аутоматизује свој ручни процес тестирања, изградње и постављања, али нико није био упознат са ИАМЛ-ом. Они су описали ИЗ као „Ноде.јс пројекат, ГитХуб Ацтионс, нпм тест и нпм буилд у пусх то маин, имплементирати само у в* таг-у“. АИ је произвео радни скелет од 40 линија; Тим је верификовао сваки корак и кренуо уживо за 40 минута. Да су га написали руком, то би био радни дан.
Случај 2 — Аутентификација је открила безбедносни пропуст. Инжењер је замолио АИ да примени ток посла. Излаз је укључивао дозволе: врите-алл — што значи да токен може писати у спремиште, пакете, све. Инжењер је то приметио и сузио је са дозволама: { садржај: читање, пакети: писање }. Ово је елиминисало ризик да отета зависност замени цело спремиште.
Случај 3 — Халуцинаторна акција. Један тим је покренуо коришћење које је предложила вештачка интелигенција: ацтионс/деплои-то-авс@в3 линију; Није било такве званичне акције, АИ је измислио име. Цевовод је експлодирао са "акција није пронађена". Лекција: Проверите на Маркетплаце-у да свака компонента позвана са користи: заиста постоји.
Четири шаблона за копирање
1) Основни ЦИ ток рада:
Напишите ЦИ ток рада за ГитХуб акције. Пројекат: [ЛАНГУАГЕ/ФРАМЕВОРК].Триггер: пусх анд пулл захтев до главне гране. Кораци: инсталирајте зависности, покрените тестове, покрените линт. НЕ Деплои.Руннер убунту-латест. Није потребна тајна. Анотирајте ИАМЛ.
2) Примењени ток рада ЦД-а (безбедно):
Напишите ток рада постављања за [ПЛАТФОРМУ]. Требало би да ради само на ознаци 'в*'. Циљ: [МЕДИЈИ/ОБЛАК]. Правила: - НИКАДА не пишите тајне у обичном тексту, позовите их са ${{ сецретс.
3) Опишите постојећи цевовод:
Опишите следећи [ПЛАТФОРМ] цевовод ред по ред: шта ради сваки посао, којим редоследом се покреће, коју тајну користи и које су његове две најризичније тачке? На крају, предложите 3 побољшања.Пипелине: [ИАМЛ ЦОНТЕНТ]
4) Убрзајте цевовод:
Следећи ЦИ цевовод ради споро (трајање: [Кс мин]). Испитајте коришћење кеша, паралелне послове и непотребне кораке. Дајте 5 конкретних, делотворних предлога за убрзање и запишите процењени утицај сваког од њих. Цевовод: [ИАМЛ]
Слаби промпт / Јаки промпт
Слабо: „Пишите радни ток ГитХуб Ацтионс.“
Резултат: нејасно је који језик, који окидач, да ли постоји распоређивање; АИ даје генеричку инстанцу чвора, вероватно неће одговарати вашем пројекту и може чврсто кодирати тајну.
Јака: „Пишите радни ток ГитХуб Ацтионс. Питхон 3.12 пројекат, покрените питест + руфф у захтеву за повлачење и главном гурању; БЕЗ размештања; убрзајте зависности помоћу кеш меморије; нису потребне тајне. Извезите ИАМЛ са коментарима.“
Разлика: други упит даје језик, покретач, опсег (без имплементације), очекиване перформансе и безбедносно ограничење. Излаз ради директно.
Уобичајене грешке
- Уграђивање тајне у ИАМЛ. Лозинка/токен отвореног текста је најчешћа рањивост ЦИ.
- Превише широка дозвола. Дајте минималну потребну дозволу уместо писања свих.
- Ослањајући се на непостојећу акцију/шаблон. Проверите да ли је АИ направио: линије на Маркетплаце-у.
- Збуњујуће Деплои са ЦИ. Тест се може изводити при сваком гурању, али постављање мора бити контролисано и одобрено.
- Не користите кеш меморију. Инсталирање зависности од нуле при сваком покретању успорава цевовод за неколико минута.
- Пробајте први ток посла директно у главном спремишту. Прво га покрените у тестном спремишту.
Укратко
ЦИ/ЦД цевоводи су аутоматизоване цеви које безбедно померају код у прод и дефинисане су помоћу ИАМЛ-а. АИ брзо производи радне нацрте за ГитХуб Ацтионс и ГитЛаб ЦИ — али морате бити јасни у вези платформе, језика, покретача и обима примене. Постоје три правила у безбедности: позовите тајне према референци, доделите минималне привилегије, не штампајте тајне у дневнику. Ваша је одговорност да проверите да ли свака компонента користи:/инцлуде: заиста постоји и шта сваки корак ради.
Задатак апликације
Изаберите једноставан пример пројекта (чак и „здраво свет“ на вашем језику ће бити довољно). Нека АИ произведе ток посла са горе наведеним шаблоном „Основни ЦИ радни ток“. Затим: (1) напишите својим речима шта сваки корак чини; (2) проверите да ли су тајне уграђене и да су дозволе уске; (3) Ако је могуће, пустите га у тест резервоар и посматрајте црвено-зелено понашање.
контролна листа
- [ ] Додао сам платформу, језик/оквир, окидач и опсег примене у свој упит.
- [ ] Разумем шта сваки посао и корак ради у генерисаном ИАМЛ-у.
- [ ] Ниједна тајна није отворени текст; све ${{ сецретс.Кс }} / ЦИ променљива.
- [ ] Сузио сам дозволе на минимално овлашћење.
- [ ] Проверио сам да све позване радње/шаблони заиста постоје.
- [ ] Учинио сам корак имплементације контролисан уз одобрење/заштиту.