Ein deployment-jobb koplar til, kopierer artefakten sin og rapporterer suksess. Tunnelen han opna, kan framleis vera oppe når neste jobb startar, og ruta han endra, høyrer til heile verten. Eit byggjeresultat skildrar kommandoen, ikkje tilstanden han etterlet. Handsama VPN-en som ein ressurs med levetid, ikkje som éi linje i starten av eit steg.

Kva anna som køyrer på denne verten

Ein Jenkins-node kan køyre fleire utførarar samtidig, og ein jobb som endrar ruter på verten, resolver-innstillingar eller ei systemomfattande tilkopling, endrar dei for alle. Om ein annan jobb merkar det, kjem an på rute- og filtreringspolitikken, ikkje på ein generell regel om VPN-ar. Tilgang til repository, tilgang til artefaktar og kontrollkanalen er separate krav som runneren framleis treng. Legg dei til i lista over deployment-mål før du vel ein full tunnel.

Viss kontrollkanalen skulle krysse tunnelen, må designet seie det med vilje. Å oppdage det under ein tilbakerulling er ikkje ein plan. Skriv ned dei to listene: kva jobben må nå privat, og kva runneren må nå uansett.

Treng denne jobben i det heile privat tilgang?

Spør før du legg til tunnelen om byggjesteget treng han. Ein privat deployment-agent kan hente ein godkjend artefakt og utføre deploymenten, noko som held det generelle byggjesteget utanfor det private nettet. Den delinga er vanlegvis billegare enn å lære kvart byggjesteg å rute gjennom ein tunnel.

Vel grensa ut frå arbeidsflyten, ikkje av vane. Viss svaret er nei, er resten av denne sida unødvendig, og det er det beste resultatet som finst.

Tilstanden neste jobb arvar

Skildr kva som skal vere sant før jobben, medan han har privat tilgang og etter at han er ferdig, inkludert avbrot. Sluttilstanden er den som oftast blir ståande implisitt, og det er den neste jobb arvar. Skriv han ved sida av pipeline i staden for å late han liggje i nokon sitt minne.

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

Ein dedikert eller eingongs agent gjer desse grensene lettare å handheve. Ein container eller eit namespace hjelper berre viss nettverks- og privilegieoppsettet faktisk isolerer endringa.

Stopp tilkoplinga, ikkje programmet

Bruk avslutningsstien til pipeline for å lukke tilkoplinga denne jobben starta og fjerne dei mellombelse påloggingsdetaljane hans. Ikkje match prosessar etter programnamn på ein vert som andre jobbar brukar; stopp den konkrete tilkoplinga i staden. Dei to kommandoane nedanfor er heile oppryddinga, og ingen av dei er avhengige av å finne ein prosess.

vpn-cli disconnect --profile "$PROFILE"
rm -f "$RUNNER_TEMP/client.key"

Avslutning er ikkje isolasjon: ein runner som døyr, held på tunnelen han opna, og ein prosess som blir stoppa med makt, hoppar heilt over blokka. Derfor kan oppryddingskommandoen åleine ikkje vere heile designet. Slik sviktar det i praksis: ein deployment-jobb blir avbroten ved kopieringsteget, avslutningsblokka køyrer aldri, og neste jobb på same vert startar med ein levande tunnel og ei rute som peikar mot eit nettverk han ikkje når. Feilen ser ut som eit 'DNS'-problem i neste bygg, timar etter at jobben som skapte han, var ferdig.

Registrer profilnamnet og stien til påloggingsdetaljane i utdata frå jobben. Ein bar fråkoplingskommando utan identifikator er vanskeleg å revidere etterpå. Logglinja er òg det som provar at blokka køyrde når ei seinare undersøking spør.

Gje jobben ein vert som ingen andre brukar

Eingongsinfrastruktur fjernar arveproblemet i staden for å administrere det. Ein fersk agent per jobb startar utan rute, utan profil og utan andre sine påloggingsdetaljar, og øydelegginga ryddar opp i det jobben etterlet. Det kostar meir per bygg, og det er den ærlege prisen for ei grense som ikkje kjem an på oppryddingskode. For jobbar som rører produksjonsnettverk, er det vanlegvis det billegare alternativet når hendingar blir rekna med.

Der ein delt runner må bli, test feil og avbrot like nøye som den vellukka kopien. Testen bør vise kva neste jobb ville sjå viss denne vart avbroten halvvegs. Ein jobb er ferdig når tilgangen og den mellombelse tilstanden er over, ikkje når kopieringskommandoen returnerer null.

Relaterte artiklar