Байршуулалтын ажил холбогдож, өөрийн артефактыг хуулж, амжилтыг мэдээлдэг. Түүний нээсэн туннель дараагийн ажил эхлэхэд ч ажиллаж байж болно, өөрчилсөн маршрут нь бүхэл хостод хамаарна. Build-ийн үр дүн командыг дүрсэлдэг, үлдээсэн төлвийг биш. VPN-ийг наслалт бүхий нөөц гэж үз, шатны эхэнд байх нэг мөр гэж биш.

Энэ хост дээр өөр юу ажиллаж байна

Jenkins зангилаа нэгэн зэрэг хэд хэдэн гүйцэтгэгч ажиллуулж чаддаг бөгөөд хост-ийн маршрут, resolver-ийн тохиргоо эсвэл системийн холболтыг өөрчилдөг ажил тэднийг бүгдийн хувьд өөрчилдөг. Өөр ажил үүнийг анзаарах эсэх нь маршрут, шүүлтүүрийн бодлогоос хамаарна, VPN-ийн тухай ерөнхий дүрмээс биш. Репозиторид хандах, артефактад хандах, удирдлагын суваг нь runner-т одоо ч хэрэгтэй тусдаа шаардлага юм. Бүрэн туннель сонгохын өмнө тэдгээрийг байршуулалтын зорилтын жагсаалтад нэм.

Хэрэв удирдлагын суваг туннелийг гатлах бол дизайн үүнийг санаатайгаар хэлэх ёстой. Буцаах үед үүнийг илрүүлэх нь төлөвлөгөө биш. Хоёр жагсаалтыг бич: ажил ямар зүйлд хувийн байдлаар хүрэх ёстой, runner ямар ч тохиолдолд юунд хүрэх ёстой.

Энэ ажилд хувийн хандалт ер нь хэрэгтэй юу?

Туннель нэмэхийн өмнө build-ийн шатанд хэрэгтэй эсэхийг асуу. Хувийн байршуулалтын агент зөвшөөрөгдсөн артефактыг авчирч байршуулалтыг хийж чадна, энэ нь ерөнхий build-ийн шатыг хувийн сүлжээнээс гадуур байлгана. Ийм хуваалт нь build-ийн алхам бүрд туннелээр маршрутлахыг заахаас ихэвчлэн хямд.

Хил хязгаарыг дадал биш, ажлын урсгалаас сонго. Хариулт нь үгүй бол энэ хуудасны үлдсэн хэсэг шаардлагагүй бөгөөд энэ нь боломжтой хамгийн сайн үр дүн юм.

Дараагийн ажил өвлөж авах төлөв

Ажлын өмнө, хувийн хандалттай байх үед болон дууссаны дараа, цуцлалтыг оролцуулан юу үнэн байх ёстойг тодорхойл. Эцсийн төлөв нь хамгийн ихээр хэлэгдэлгүй үлддэг бөгөөд үүнийг дараагийн ажил өвлөж авдаг. Үүнийг хэн нэгний ой санамжид үлдээхийн оронд pipeline-ийн хажууд бич.

MomentWhat proves itWhat leaks if it is skipped
Job start: pre-flight route checkThe route table shows no tunnel from an earlier job, and the profile list is emptyA stale route sends deployment traffic into a dead tunnel
Job end: disconnect and shredThe profile is down and the temporary key file is goneThe next job inherits an open tunnel and a usable credential
Cancelled job: reboot or disposalThe host is replaced or rebooted before the next job startsA 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 үлдэх ёстой газарт бүтэлгүйтэл, цуцлалтыг амжилттай хуулсантай адил болгоомжтой туршаарай. Туршилт нь энэ ажил хагас замд цуцлагдсан бол дараагийн ажил юу харахыг харуулах ёстой. Ажил нь түүний хандалт болон түр төлөв дууссанаар дуусдаг, хуулах команд тэг буцааснаар биш.

Холбоотой нийтлэлүүд