PlusMagi's Blog By Pitt Phunsanit เทคโนโลยี Shell Script: ดูการตั้งค่า GitHub Actions สำหรับรัน ShellCheck บน CI

Shell Script: ดูการตั้งค่า GitHub Actions สำหรับรัน ShellCheck บน CI

ในโลกของการพัฒนาซอฟต์แวร์สมัยใหม่ การรักษาคุณภาพโค้ด (Code Quality) และการตรวจจับข้อผิดพลาดตั้งแต่เนิ่นๆ เป็นสิ่งสำคัญอย่างยิ่ง เครื่องมือวิเคราะห์แบบคงที่ (Static Analysis Tools) เช่น ShellCheck ได้กลายเป็นมาตรฐานในการตรวจสอบสคริปต์ Bash เพื่อให้มั่นใจว่าทุกคำสั่งทำงานได้อย่างถูกต้องและปลอดภัย บทความนี้จะเจาะลึกวิธีการบูรณาการกระบวนการ Linting ของ ShellScript เข้ากับ GitHub Actions CI Pipeline อย่างเป็นระบบ ทำให้คุณสามารถรันการตรวจสอบเหล่านี้ได้โดยอัตโนมัติเมื่อมีการ Push หรือ Pull Request ใด ๆ

ทำไมต้องใช้ ShellCheck ใน CI/CD

Shell scripts คือหัวใจหลักของงาน Automation บน Linux แต่เนื่องจากภาษานี้มีไวยากรณ์ที่ไม่เข้มงวดเท่าภาษาโปรแกรมระดับสูงอื่น ๆ ข้อบกพร่องเล็กน้อยเพียงจุดเดียวก็อาจทำให้ Job ล่มหรือเกิดช่องโหว่ด้านความปลอดภัยตามมา
ShellCheck จะเข้ามาช่วยจำลองบทบาทของผู้รีวิวโค้ดที่มีประสบการณ์ โดยมันไม่ได้แค่แจ้งเตือนเรื่อง Syntax Error เท่านั้น แต่มักชี้ถึง Best Practices, Potential Security Vulnerabilities รวมถึงรูปแบบโครงสร้างที่ไม่แนะนำ ซึ่งเป็นการยกระดับมาตรฐานโค้ดของเราก่อนที่จะเข้าสู่ Production Environment จริง นี่คือแนวคิดของการ Shift-Left Testing ที่เราต้องการนำไปปฏิบัติ.

ขั้นตอนที่ 1: การตั้งค่า Workflow YAML สำหรับ GitHub Actions

ในการเริ่มใช้งาน เราจำเป็นต้องกำหนดไฟล์ workflow ย่อยในตำแหน่ง `.github/workflows/.yml` เพื่อให้ Git รู้ว่าควรทำงานอะไร เมื่อใด และอย่างไร:

 name: Linting & Code Quality Check 
 on: [push] # หรือ pull_request หากคุณต้องการรันเฉพาะเมื่อมีการ PR เข้ามา 
 jobs:	 check_scripts:	 runs-on: ubuntu-latest	 steps:	 - uses: actions/checkout@v4  # ดึง Source code มายัง Runner ก่อนเสมอ	 - name: Install ShellCheck Script Dependencies (Optional) # ติดตั้งเครื่องมือถ้าไม่แน่ใจว่างานมีอยู่แล้ว t r u c k l i n g dependencies:: run: | package man a autoconf libtool shellcheck

การใช้ `uses: actions/checkout@v4` เป็นสิ่งสำคัญที่สุด เพราะมันรับประกันว่าโค้ดทั้งหมดที่เราจะตรวจสอบนั้นถูกส่งไปยังสภาพแวดล้อมของ CI Worker อย่างสมบูรณ์ จากนั้นเราจึงเข้าสู่ขั้นตอนของการเรียกใช้คำสั่งจริง.

ขั้นตอนที่ 2: การกำหนดสคริปต์เพื่อรัน ShellCheck

หลังจากติดตั้ง Dependency แล้ว เราต้องเขียนบล็อก Step เพื่อให้ระบบรู้ว่าจะนำ Tool นี้ไปประมวลผลกับไฟล์ใดบ้าง สมมติว่าโปรเจกต์ของเราประกอบด้วยโฟลเดอร์ scripts และภายในมีหลายฟังก์ชันย่อย:

	 - name: Run Shell Check on Scripts Directory 
   run: shellcheck ./scripts/**/*.sh > lint_report.txt && cat lint_report.txt || echo                             
               
        
Exit mobile version