bash កំណត់ -e - កំណត់ -e bash

កំណត់ -e នៅក្នុង Bash៖ ហេតុអ្វីបានជាស្គ្រីបរបស់អ្នកបរាជ័យដោយគ្មានការព្រមាន

របៀបដែល set -e មានឥរិយាបទ និងកន្លែងដែលវាបំបែកស្គ្រីបរបស់អ្នក

ការប្រើ កំណត់ -e នៅក្នុង Bash ត្រូវបានគេសន្មត់ថាធ្វើឱ្យស្គ្រីបរបស់អ្នកមានសុវត្ថិភាពជាងមុនដោយការចាកចេញនៅពេលមានកំហុសណាមួយ។ ប៉ុន្តែនៅក្នុងលំហូរការងារពិតប្រាកដ set-e ជារឿយៗបំបែកស្គ្រីបតាមរបៀបដែលមិនច្បាស់លាស់។ អ្នកអភិវឌ្ឍន៍ពឹងផ្អែកលើ bash set -e សម្រាប់ការសរសេរស្គ្រីបការពារ ប៉ុន្តែបែរជាឃើញការងារ CI របស់ពួកគេចាកចេញដោយមិននឹកស្មានដល់ដោយគ្មានសារកំហុស។

នេះជាអ្វីដែល set-e bash ពិតជាធ្វើ៖

  • ចេញពីស្គ្រីប ប្រសិនបើពាក្យបញ្ជាណាមួយត្រឡប់ស្ថានភាពមិនសូន្យ។
  • ប៉ុន្តែ​មិន​អើពើ​នឹង​កំហុស​ក្នុង pipelines, លក្ខខណ្ឌ, សែលរង និងក្រុមពាក្យបញ្ជា លុះត្រាតែត្រូវបានផ្គូផ្គងជាមួយ សំណុំ -o បំពង់បង្ហូរទឹក ឬលំនាំផ្សេងទៀត។

ឧទាហរណ៍៖ ការបរាជ័យដោយស្ងៀមស្ងាត់

⚠️ព្រមាន: ស្គ្រីបនេះបរាជ័យដោយស្ងៀមស្ងាត់។

				
					set -e
output=$(false) # fails, but script continues because it's in a subshell
next_step
				
			

កំហុសនៅក្នុង subshell ត្រូវបានមិនអើពើដោយ bash ហើយ ជំហានបន្ទាប់ ដំណើរការ​ដោយ​របៀប​ណា​ក៏​ដោយ អាច​នៅ​ពេល​បញ្ចូល​មិន​ល្អ។

ភាពចម្លែកទាំងនេះធ្វើឱ្យ set-e មានគ្រោះថ្នាក់ ប្រសិនបើអ្នកមិនយល់ច្បាស់ពីពេលណាដែលវាអនុវត្ត និងពេលណាដែលវារំលងការបរាជ័យដោយស្ងៀមស្ងាត់។

ពិតប្រាកដ CI/CD Pipeline ការបរាជ័យដែលបណ្តាលមកពី set -e Bash

set -e bash ជារឿយៗបណ្តាលឱ្យមានការឈឺចាប់ច្រើនបំផុតនៅខាងក្នុង CI/CD pipelines.

 ពិភព​ពិត pipeline ការបរាជ័យ៖

				
					#!/bin/bash
set -e
npm install # works locally
npm run test || echo "Tests failed" # CI sees success even though tests failed

				
			

⚠️ព្រមាន: នេះបណ្តាលឱ្យ pipeline ដើម្បី​ឆ្លងកាត់​ទោះបីជា​ការធ្វើតេស្ត​បរាជ័យ​ក៏ដោយ។ ពាក្យបញ្ជា​នេះ​គឺជាផ្នែកមួយនៃ​កន្សោម​ឡូជីខល ដូច្នេះ set-e មិន​ដំណើរការ​ទេ។

គំរូខូចមួយទៀត៖

				
					#!/bin/bash
set -e
mkdir output
cd output || true # suppresses error if dir is missing, breaking future steps silently

				
			

⚠️លំនាំនេះបិទបាំងមូលហេតុពិតនៃកំហុសនាពេលអនាគត ដែលធ្វើឱ្យការបំបាត់កំហុសកាន់តែពិបាក។

ការប្រើប្រាស់ bash ដែលមិនមានសុវត្ថិភាពអនុញ្ញាតឱ្យជំហានសំខាន់ៗបរាជ័យដោយស្ងាត់ៗ។ វាជាគំរូប្រឆាំងនឹង DevOps។

ស្គ្រីប Bash កាន់តែមានសុវត្ថិភាព៖ ការគ្រប់គ្រងសំណុំ -e ជាមួយ Traps និងការផ្ទៀងផ្ទាត់

ដើម្បីធ្វើឱ្យឈុតនេះមានសុវត្ថិភាព សូមគ្រប់គ្រងពេលវេលា និងរបៀបដែលវាធ្វើឱ្យស្គ្រីបរបស់អ្នកបរាជ័យ។

 ប្រើមួយ អន្ទាក់ សម្រាប់ការតាមដានកំហុស

				
					trap 'echo "Error on line $LINENO"' ERR
set -e
some_command

				
			

ផ្សំជាមួយ សំណុំ -o បំពង់បង្ហូរទឹក

				
					set -euo pipefail
some_command | grep something

				
			

ជាមួយ បំពង់​បរាជ័យ, សំណុំ -e bash នឹងចាប់កំហុសនៅផ្នែកណាមួយនៃ pipeline.

 ផ្ទៀងផ្ទាត់​យ៉ាង​ច្បាស់លាស់​បន្ទាប់​ពី​បញ្ជា​ដែល​មាន​ហានិភ័យ

				
					result=$(risky_call)
if [[ $? -ne 0 ]]; then
echo "Call failed"
exit 1
fi

				
			

ជៀសវាងការសន្មតថា set-e ចាប់បានរាល់ការបរាជ័យ។ ប្រើការត្រួតពិនិត្យដែលបានគ្រប់គ្រងសម្រាប់តក្កវិជ្ជាសំខាន់ៗ។

ការរួមបញ្ចូលលំនាំវាយប្រហារការពារនៅក្នុង CI/CD Pipelines

អ្នកមិនអាចជៀសវាង set-e ទាំងស្រុងបានទេ។ ប៉ុន្តែអ្នកអាចធ្វើឱ្យវាមានសុវត្ថិភាពជាងមុនដោយការបង្កប់ការអនុវត្ត Bash ល្អៗទៅក្នុង CI/CD លំហូរការងារ។

CI/CD គន្លឹះ:

  • តែងតែផ្សំឈុតជាមួយ បំពង់​បរាជ័យ និង អន្ទាក់ នៅក្នុងស្គ្រីបបញ្ចូល។
  • ពិនិត្យមើលលទ្ធផលនៃ vars បរិស្ថាន និងស្គ្រីបឱ្យបានច្បាស់លាស់។
  • ការប្រើ អាវ ឬចាប់យកកំណត់ហេតុ ដើម្បីមើលថាមានអ្វីកើតឡើងមុនពេលចេញ។
  • ញែកជំហាននីមួយៗ ហើយផ្ទៀងផ្ទាត់ជំហាននីមួយៗ។

 CI មានសុវត្ថិភាពជាង pipeline ចម្រៀក

				
					- name: Setup
run: |
set -euo pipefail
trap 'echo "Failure on line $LINENO"' ERR
./setup.sh

				
			

នេះ ការពារការសាងសង់របស់អ្នក ពីការបរាជ័យដែលលាក់កំបាំង ដែលវាអាចនឹងមិនអើពើ។

តាមដានការបរាជ័យ Bash ដែលលាក់ជាមួយ Xygeni

សូម្បីតែមានអន្ទាក់ក៏ដោយ ការបរាជ័យមួយចំនួនត្រូវបានកប់យ៉ាងជ្រៅនៅក្នុងស្គ្រីប ឬការពឹងផ្អែក។ នោះហើយជាកន្លែងដែល ស៊ីហ្គេនី ជួយ។ Xygeni បង្កើនភាពមើលឃើញដោយ៖

  • ការរកឃើញកន្លែងដែល set -e bash ទប់ស្កាត់ការបរាជ័យ
  • តាមដានការប្រតិបត្តិពាក្យបញ្ជានៅទូទាំងការងារសាងសង់
  • ការភ្ជាប់​លទ្ធផល​ស្គ្រីប កំហុស និង​លំហូរ​ត្រួតពិនិត្យ
  • ការរកឃើញការបរាជ័យដែលខកខានដោយសារតែការដាក់ជាក្រុមពាក្យបញ្ជា ឬកន្សោមឡូជីខល

នេះអនុញ្ញាតឱ្យក្រុមតាមដាន និងជួសជុលបញ្ហាតក្កវិជ្ជា bash set -e មុនពេលពួកគេបំបែកវាដោយស្ងាត់ៗ pipeline.

តម្លៃលាក់កំបាំងនៃការពឹងផ្អែកលើការប្រគុំតន្ត្រី Set-e Bash

វាអាចមានប្រយោជន៍ ប៉ុន្តែវាមិនមានសុវត្ថិភាពតាមលំនាំដើមទេ។ ប្រសិនបើអ្នកពឹងផ្អែកលើវាសម្រាប់ការគ្រប់គ្រងកំហុស CI/CDអ្នកទំនងជាខកខានការបរាជ័យពិតប្រាកដ។

ត្រួតពិនិត្យការប្រើប្រាស់ bash របស់អ្នក៖

  • ការប្រើ បំពង់​បរាជ័យ, អន្ទាក់និងការត្រួតពិនិត្យច្បាស់លាស់
  • តាមដានលទ្ធផលពាក្យបញ្ជា មិនមែនគ្រាន់តែលេខកូដចេញនោះទេ
  • រារាំងរបស់អ្នក CI/CD ការងារពីភាពជោគជ័យនៅពេលដែលពួកគេគួរតែបរាជ័យ

ប្រើ Xygeni ដើម្បីរកឃើញកំហុសតក្កវិជ្ជាដែលលាក់ដែលបណ្តាលមកពី bash set -e និងធ្វើឱ្យការសរសេរស្គ្រីបរបស់អ្នកមានភាពធន់ អាចតាមដានបាន និងមានសុវត្ថិភាព។ ស្គ្រីបមិនកុហកទេ ប៉ុន្តែវាពិតជាបរាជ័យដោយស្ងៀមស្ងាត់។ កុំឲ្យបញ្ហាក្លាយជាមូលហេតុ។

ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

ធានាសុវត្ថិភាពនៃការអភិវឌ្ឍន៍ និងការដឹកជញ្ជូនកម្មវិធីរបស់អ្នក

ជាមួយឈុតផលិតផល Xygeni