bash set -e - set -e bash

set -e Bash kalboje: kodėl jūsų scenarijus nepavyksta be įspėjimo

Kaip veikia „set -e“ ir kur jis pažeidžia jūsų scenarijus

Naudojant rinkinys -e „Bash“ kalboje „set-e“ turėtų padaryti jūsų scenarijų saugesnį, uždarant jį įvykus bet kokiai klaidai. Tačiau realiose darbo eigose „set-e“ dažnai subtiliai ir tyliai nutraukia scenarijus. Kūrėjai pasikliauja „bash set -e“ gynybiniams scenarijams, tik tam, kad jų CI užduotys netikėtai uždaromos be klaidos pranešimo.

Štai ką iš tikrųjų daro „set-e bash“:

  • Išeina iš scenarijaus, jei kuri nors komanda grąžina ne nulinę būseną.
  • Bet ignoruoja klaidas, pipelines, sąlyginiai sakiniai, subshell'ai ir komandų grupės, nebent jie būtų suporuoti su set -o pipefail ar kitus raštus.

Pavyzdys: Tyli nesėkmė

⚠️Įspėjimas: Šis scenarijus tyliai neveikia.

„bash“ ignoruoja klaidą subshell'e ir kitas_žingsnis vis tiek vykdomas, galbūt dėl ​​blogos įvesties.

Dėl šių keistenybių „set-e“ yra pavojinga, jei iki galo nesuprantate, kada ji taikoma, o kada tyliai praleidžia klaidas.

nekilnojamasis CI/CD Pipeline Gedimai, kuriuos sukelia „set -e Bash“

„set -e bash“ dažnai sukelia daugiausia skausmo viduje CI/CD pipelines.

 Realus pasaulis pipeline nesėkmė:

⚠️Įspėjimas: Tai sukelia pipeline kad testas būtų sėkmingas nepaisant nepavykusių bandymų. Komanda yra loginės išraiškos dalis, todėl „set-e“ nesuveikia.

Dar vienas sugedęs modelis:

⚠️Šis modelis užmaskuoja tikrąją būsimų klaidų priežastį, todėl derinimą apsunkina.

Nesaugus „bash“ naudojimas leidžia svarbiems veiksmams tyliai nepavykti. Tai „DevOps“ anti-modelis.

Saugesnis „Bash“ scenarijų rašymas: „set -e“ valdymas naudojant spąstus ir patvirtinimą

Kad rinkinys būtų saugesnis, kontroliuokite, kada ir kaip jis nepavyksta įgyvendinti jūsų scenarijaus.

 Naudoti spąstai klaidų sekimui

Sujungti su set -o pipefail

Su vamzdžių gedimas, set -e bash pastebės gedimus bet kurioje a dalyje pipeline.

 Aiškiai patvirtinti po rizikingų komandų

Venkite manyti, kad „set-e“ užfiksuoja kiekvieną gedimą; kritinei logikai naudokite kontroliuojamus patikrinimus.

Gynybinių smūgių modelių integravimas į CI/CD Pipelines

Visiškai išvengti „set-e“ nepavyks. Tačiau galite jį padaryti saugesnį, įdiegdami gerąją „Bash“ praktiką. CI/CD darbo eigos.

CI/CD Patarimas:

  • Visada derinkite rinkinį su vamzdžių gedimas bei spąstai įvedimo scenarijuose.
  • Aiškiai patikrinkite aplinkos kintamuosius ir scenarijaus rezultatus.
  • Paskirtis tee arba užfiksuokite žurnalą, kad pamatytumėte, kas nutiko prieš išėjimą.
  • Izoliuokite veiksmus ir patvirtinkite kiekvieną iš jų.

 Saugesnis CI pipeline segmentas

tai apsaugo jūsų konstrukcijas nuo paslėptų trūkumų, kuriuos kitaip būtų galima ignoruoti.

Paslėptų „Bash“ gedimų sekimas naudojant „Xygeni“

Net ir esant spąstams, kai kurios klaidos slypi giliai scenarijuose ar priklausomybėse. Štai kur... Ksigeni padeda. „Xygeni“ pagerina matomumą:

  • Aptikus, kur „set -e bash“ slopina klaidas
  • Komandų vykdymo sekimas kūrimo užduotyse
  • Scenarijaus išvesčių, klaidų ir valdymo srauto koreliacija
  • Dėl komandų grupavimo arba loginių išraiškų nepastebėtos paviršiaus klaidos

Tai leidžia komandoms sekti ir ištaisyti bash set -e logikos problemas prieš joms tyliai nutraukiant jūsų pipeline.

Paslėptos išlaidos, susijusios su pasikliovimu „set -e bash“

Tai gali būti naudinga, bet pagal numatytuosius nustatymus nėra saugu. Jei tuo remiatės klaidų tvarkymui CI/CD, greičiausiai nepastebite tikrų nesėkmių.

Patikrinkite savo „set -e bash“ naudojimą:

  • Paskirtis vamzdžių gedimas, spąstaiir tiesioginiai patikrinimai
  • Stebėkite komandų rezultatus, o ne tik išėjimo kodus
  • Neleisk savo CI/CD darbai neleistų jiems sėkmingai veikti, kai jie turėtų žlugti

Naudokite „Xygeni“, kad aptiktumėte paslėptas logikos klaidas, kurias sukelia „bash set -e“, ir padarykite savo scenarijus atsparius, atsekamus ir saugius. Scenarijai nemeluoja, bet jie tyliai žlunga. Neleiskite, kad dėl to kaltas būtų „set-e“.

sca-tools-software-composition-analyses-tools
Prioritetizuoti, pašalinti ir apsaugoti savo programinės įrangos rizikas
Gaukite nemokamą paskyrą.
Nebūtina kreditinės kortelės.

Apsaugokite savo programinės įrangos kūrimą ir tiekimą

su „Xygeni“ produktų rinkiniu