CI runner үчүн VPN: туннель build'ден көп жашайбы?
Жалпы CI runner жумуштардын ортосунда маршруттарды жана процесстерди сактайт. VPN'дин жумушка чейинки, учурундагы жана кийинки абалдарын пландап, жумушка таандык байланышты гана тазалаңыз.
Деплой жумушу туташат, өз артефактын көчүрөт жана ийгилик тууралуу билдирет. Ал ачкан туннель кийинки жумуш башталганда дагы ачык болушу мүмкүн, ал эми ал өзгөрткөн маршрут бүт хостко таандык. Build'дин жыйынтыгы буйрукту сүрөттөйт, ал артында калтырган абалды эмес. VPN'ге өмүрү бар ресурс катары мамиле кылыңыз, этаптын башындагы бир сап катары эмес.
Бул хостто дагы эмне иштейт
Jenkins түйүнү бир убакта бир нече аткаруучуну иштете алат, ал эми хосттун маршруттарын, resolver жөндөөлөрүн же системалык байланышты өзгөрткөн жумуш аларды баары үчүн өзгөртөт. Башка жумуш муну байкайбы, бул маршрут жана чыпкалоо саясатына көз каранды, VPN жөнүндө жалпы эрежеге эмес. Репозиторийге жетүү, артефактыларга жетүү жана башкаруу каналы — runner'ге дагы эле керек болгон өзүнчө талаптар. Толук туннелди тандоодон мурун аларды деплой буталарынын тизмесине кошуңуз.
Эгер башкаруу каналы туннелден өтө турган болсо, долбоор муну атайын айтышы керек. Аны артка кайтаруу учурунда ачуу — план эмес. Эки тизмени жазыңыз: жумуш жеке түрдө эмнеге жетиши керек жана runner кандай гана болбосун эмнеге жетиши керек.
Бул жумушка жеке жетүү керекпи?
Туннелди коштон мурун build этабына ал керекпи деп сураңыз. Жеке деплой агенти бекитилген артефактыны алып, деплойду аткара алат, бул жалпы build этабын жеке тармактан тышкары кармайт. Мындай бөлүү адатта ар бир build кадамын туннел аркылуу маршруттоого үйрөтүүдөн арзан.
Чекти адаттан эмес, жумуш агымынан тандаңыз. Эгер жооп жок болсо, бул барактын калганы керек эмес, жана бул жеткиликтүү эң жакшы натыйжа.
Кийинки жумуш мураска ала турган абал
Жумушка чейин, жеке жетүү бар кезде жана ал бүткөндөн кийин, анын ичинде жокко чыгарууну да кошуп, эмне туура болушу керектигин сүрөттөңүз. Акыркы абал — эң көп айтылбай калган абал, жана аны кийинки жумуш мураска алат. Аны бирөөнүн эсинде калтыруунун ордуна pipeline'дын жанына жазыңыз.
| Moment | What proves it | What leaks if it is skipped |
|---|---|---|
| Job start: pre-flight route check | The route table shows no tunnel from an earlier job, and the profile list is empty | A stale route sends deployment traffic into a dead tunnel |
| Job end: disconnect and shred | The profile is down and the temporary key file is gone | The next job inherits an open tunnel and a usable credential |
| Cancelled job: reboot or disposal | The host is replaced or rebooted before the next job starts | A killed process leaves the tunnel up with no owner |
Атайын же бир жолу колдонулуучу агент бул чектерди аткарууну жеңилдетет. Контейнер же аттар мейкиндиги анын тармактык жана укуктук түзүлүшү өзгөртүүнү чындап обочолонткондо гана жардам берет.
Байланышты токтотуңуз, программаны эмес
Ушул жумуш ачкан байланышты жабуу жана анын убактылуу эсептик дайындарын жок кылуу үчүн pipeline'дын аяктоо жолун колдонуңуз. Башка жумуштар колдонгон хостто процесстерди программанын аты менен дал келтирбеңиз; анын ордуна так байланышты токтотуңуз. Төмөнкү эки буйрук — бүт тазалоо, жана экөө тең процессти табууга көз каранды эмес.
vpn-cli disconnect --profile "$PROFILE"
rm -f "$RUNNER_TEMP/client.key"
Аяктоо — обочолонуу эмес: өлгөн runner ачкан туннелин сактайт, ал эми күч менен токтотулган процесс блокту толугу менен өткөрүп жиберет. Ошондуктан тазалоо буйругу өзү бүт долбоор боло албайт. Иш жүзүндө бул мындайча ийгиликсиз болот: деплой жумушу көчүрүү кадамында жокко чыгарылат, аяктоо блогу эч качан иштебейт, ал эми ошол эле хосттогу кийинки жумуш тирүү туннел жана жете албаган тармакка көрсөткөн маршрут менен башталат. Бузулуу кийинки build'де 'DNS' көйгөйүнө окшош көрүнөт, ага себеп болгон жумуш бүткөндөн бир нече саат өткөндөн кийин.
Профилдин атын жана эсептик дайындардын жолун жумуштун чыгышына жазыңыз. Идентификаторсуз жөнөкөй ажыратуу буйругун кийин аудиттөө кыйын. Журнал сабы да блоктун иштегенин далилдейт, кийинки иликтөө сураганда.
Жумушка башка эч ким колдонбогон хост бериңиз
Бир жолу колдонулуучу инфраструктура мурас маселесин башкаруунун ордуна жояды. Ар бир жумуш үчүн жаңы агент маршрутсуз, профилсиз жана башкалардын эсептик дайындарысыз башталат, ал эми анын жок кылынышы жумуш калтыргандын баарын тазалайт. Бул ар бир build үчүн кымбат, жана бул тазалоо коддоруна көз каранды эмес чектин адал баасы. Өндүрүш тармактарына тийген жумуштар үчүн окуяларды эсептегенде бул адатта арзан вариант.
Жалпы runner кала турган жерде ийгиликсиздикти жана жокко чыгарууну ийгиликтүү көчүрүүдөй кылдат текшериңиз. Тест бул жумуш жарым жолдо жокко чыгарылса, кийинки жумуш эмнени көрөрүн көрсөтүшү керек. Жумуш анын жетүүсү жана убактылуу абалы бүткөндө бүтөт, көчүрүү буйругу нөл кайтарганда эмес.