วิธีตั้งค่าและใช้ GitHub Actions เพื่อทำ CI/CD อัตโนมัติสำหรับโครงการของคุณ

ที่มาภาพ: Unknown Source

วิธีตั้งค่าและใช้ GitHub Actions เพื่อทำ CI/CD อัตโนมัติสำหรับโครงการของคุณ

⚡ สรุป 30 วิ

GitHub Actions เป็นระบบอัตโนมัติที่ฝังอยู่ใน GitHub ทำให้คุณสามารถสร้าง pipeline CI/CD ได้โดยไม่ต้องออกจากหน้า repository การตั้งค่าที่ถูกต้องจะช่วยให้โค้ดของคุณถูกทดสอบและ deploy อย่างต่อเนื่อง ลดควา…

Overview

GitHub Actions เป็นระบบอัตโนมัติที่ฝังอยู่ใน GitHub ทำให้คุณสามารถสร้าง pipeline CI/CD ได้โดยไม่ต้องออกจากหน้า repository การตั้งค่าที่ถูกต้องจะช่วยให้โค้ดของคุณถูกทดสอบและ deploy อย่างต่อเนื่อง ลดความเสี่ยงจากข้อผิดพลาดที่อาจเกิดขึ้นในขั้นตอน manual

  • CI (Continuous Integration) ทำการ build และ test ทุกครั้งที่มีการ push หรือ pull request
  • CD (Continuous Delivery/Deployment) นำโค้ดที่ผ่านการทดสอบไป deploy ไปยังสภาพแวดล้อมที่กำหนดโดยอัตโนมัติ
  • การตั้งค่า GitHub Actions ใช้ไฟล์ YAML ที่อยู่ในโฟลเดอร์ `.github/workflows`

Prerequisites

ก่อนเริ่มใช้งานควรตรวจสอบว่ามีเครื่องมือและการตั้งค่าพื้นฐานดังต่อไปนี้

  • Repository อยู่บน GitHub และคุณมีสิทธิ์เขียน (write) หรือดูแล (admin)
  • แพลตฟอร์มหรือบริการที่ต้องการ deploy (เช่น Docker Hub, AWS, Azure, Netlify) มี account และ API token พร้อมใช้
  • โค้ดของคุณมีสคริปต์ build/test ที่ทำงานได้ในเครื่อง local (เช่น `npm run build` หรือ `go test`)

Repository Setup

การจัดโครงสร้าง repository อย่างเป็นระบบจะทำให้ workflow อ่านง่ายและบำรุงรักษาได้ง่าย

  • สร้างโฟลเดอร์ `.github/workflows` หากยังไม่มี
  • ตั้งชื่อไฟล์ workflow อย่างสื่อความหมาย เช่น `ci-cd.yml` หรือ `deploy.yml`
  • ตรวจสอบว่าไฟล์ `.gitignore` ไม่บล็อกไฟล์ YAML หรือโฟลเดอร์ที่เกี่ยวข้อง

Create Workflow File

ไฟล์ YAML เป็นหัวใจของ GitHub Actions การเขียนให้เป็นมิตรต่อการอ่านช่วยลดความสับสน

```yaml name: CI/CD Pipeline

on: push: branches: [ main ] pull_request: branches: [ main ]

jobs: build-test: runs-on: ubuntu-latest steps:

  • uses: actions/checkout@v3
  • name: Set up Node

uses: actions/setup-node@v3 with: node-version: '20'

  • name: Install dependencies

run: npm ci

  • name: Run tests

run: npm test ```

  • `name` กำหนดชื่อ workflow ที่แสดงบน UI ของ GitHub
  • `on` ระบุเหตุการณ์ที่ทำให้ workflow เริ่มทำงาน (push, pull_request ฯลฯ)
  • `jobs` แบ่งงานย่อยตามขั้นตอนที่ต้องการทำ

Workflow Steps

Build

ขั้นตอนนี้จะคอมไพล์หรือสร้าง artifact ที่จะนำไป deploy

  • ใช้ `actions/setup-<language>` เพื่อติดตั้ง runtime ที่ต้องการ
  • รันคำสั่ง build เช่น `npm run build` หรือ `go build -o app`

Test

การทดสอบอัตโนมัติช่วยให้มั่นใจว่าโค้ดทำงานตามที่คาดหวัง

  • รัน unit test, integration test หรือ linting ตามที่โครงการกำหนด
  • ใช้ `continue-on-error: false` เพื่อให้ workflow หยุดเมื่อพบข้อผิดพลาด

Deploy

ขั้นตอนสุดท้ายคือการส่ง artifact ไปยังสภาพแวดล้อม production หรือ staging

```yaml deploy: needs: build-test runs-on: ubuntu-latest steps:

  • uses: actions/checkout@v3
  • name: Deploy to AWS Elastic Beanstalk

uses: einaregilsson/beanstalk-deploy@v20 with: aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} application_name: my-app environment_name: my-env version_label: ${{ github.sha }} ```

  • `needs` ระบุว่าขั้นตอน deploy ต้องรอให้ job `build-test` เสร็จสมบูรณ์ก่อน
  • ใช้ action ที่พัฒนาโดยชุมชนหรือเขียนสคริปต์เองเพื่อทำ deploy

Secrets Management

ข้อมูลสำคัญเช่น API token หรือคีย์ส่วนตัวต้องเก็บใน GitHub Secrets ไม่ให้เปิดเผยในโค้ด

ประเภทวิธีเก็บการเข้าถึงใน Workflow
Access TokenSettings Secrets Actions`${{ secrets.MY_TOKEN }}`
SSH KeySettings Secrets Actions (แบบ multiline)`${{ secrets.SSH_PRIVATE_KEY }}`
Environment Variableใช้ `env:` ในขั้นตอน`${{ env.VAR_NAME }}`
**Tip: อย่าใช้ค่า secrets ในขั้นตอน `run:` ที่แสดงผลลัพธ์โดยตรง เพราะอาจทำให้ค่าเหล่านั้นหลุดออกมาทาง logs

Tips & Best Practices

  • แยก workflow ตามสภาพแวดล้อม สร้างไฟล์ `ci.yml` สำหรับการทดสอบและ `cd.yml` สำหรับ deploy production
  • Cache dependencies ใช้ `actions/cache@v3` เพื่อลดเวลาการติดตั้งแพคเกจในแต่ละ run
  • กำหนด timeout ให้แต่ละ job ไม่ทำงานนานเกินไป (`timeout-minutes: 15`)
  • ตรวจสอบผลลัพธ์ ตั้งค่า notifications หรือ Slack integration เพื่อรับแจ้งเตือนเมื่อ workflow ล้มเหลว
**ข้อควรระวัง: อย่าให้ workflow มีขั้นตอนที่ใช้ `sudo` หรือทำการแก้ไขไฟล์ระบบโดยไม่จำเป็น เพราะอาจทำให้ runner ถูกโจมตีได้

Summary

การตั้งค่า GitHub Actions ให้ทำ CI/CD อัตโนมัติมีขั้นตอนหลัก ๆ ดังนี้

  • เตรียม repository และสร้างโฟลเดอร์ `.github/workflows`
  • เขียนไฟล์ YAML ที่ระบุเหตุการณ์ `on`, งาน `jobs` และขั้นตอน `steps`
  • แบ่ง workflow เป็นขั้นตอน Build Test Deploy อย่างชัดเจน
  • เก็บข้อมูลสำคัญใน GitHub Secrets และเข้าถึงด้วย `${{ secrets.NAME }}`
  • ปรับใช้ cache, timeout, และการแจ้งเตือนเพื่อเพิ่มประสิทธิภาพและความปลอดภัย

ทำตามแนวทางเหล่านี้ คุณจะได้ pipeline CI/CD ที่เสถียร รองรับการพัฒนาอย่างต่อเนื่องและลดความเสี่ยงจากการ deploy ด้วยมือ.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีตั้งค่าและใช้ GitHub Actions เพื่อทำ CI/CD อัตโนมัติสำหรับโครงการของคุณ
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
24 มิถุนายน 2569 เวลา 17:51

Related

บทความที่เกี่ยวข้อง

วิธียก OPA (Open Policy Agent) ไปทำ policy‑as‑code กับ GitHub Actions เพื่อตรวจสอบความสอดคล้องของ Terraform Plan อย่างอัตโนมัติและปลอดภัยGrowth
8 สิงหาคม 2569 เวลา 20:30

วิธียก OPA (Open Policy Agent) ไปทำ policy‑as‑code กับ GitHub Actions เพื่อตรวจสอบความสอดคล้องของ Terraform Plan อย่างอัตโนมัติและปลอดภัย

การทำ *policy‑as‑code* ด้วย OPA (Open Policy Agent) ช่วยให้ทีม DevOps ตรวจสอบความสอดคล้องของโครงสร้างพื้นฐานได้โดยอัตโนมัติในขั้นตอน CI/CD ของ GitHub Actions. บทความนี้จะอธิบายวิธีตั้งค่า OPA ให้ตรวจส…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่าและใช้งาน Temporal.io เพื่อสร้าง Workflow แบบ Server‑less บน Kubernetes อย่างปลอดภัยGrowth
8 สิงหาคม 2569 เวลา 19:00

วิธีตั้งค่าและใช้งาน Temporal.io เพื่อสร้าง Workflow แบบ Server‑less บน Kubernetes อย่างปลอดภัย

Temporal.io เป็นแพลตฟอร์มจัดการ workflow ที่ให้ความสามารถด้าน **reliability**, **scalability** และ **visibility** โดยไม่ต้องเขียนโค้ดสำหรับ retry หรือ timeout เอง บน Kubernetes เราสามารถใช้ Temporal ใ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ10 นาที
วิธีกำหนดค่าและใช้งาน AWS Lambda ในกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัยGrowth
8 สิงหาคม 2569 เวลา 11:30

วิธีกำหนดค่าและใช้งาน AWS Lambda ในกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย

บทความนี้จะอธิบายวิธีตั้งค่า AWS Lambda ให้ทำงานร่วมกับกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย เราจะครอบคลุมตั้งแต่การเตรียมสิ่งจำเป็น การสร้าง IAM Role ไปจนถึงขั้นตอนการเขียน workflow ในไฟล์…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ9 นาที
วิธีตั้งค่า Docker Desktop ให้รองรับ Multi‑arch บน Apple Silicon อย่างปลอดภัยGrowth
7 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่า Docker Desktop ให้รองรับ Multi‑arch บน Apple Silicon อย่างปลอดภัย

Docker Desktop บน Apple Silicon (M1/M2) ทำงานได้เร็วและประหยัดพลังงาน แต่โดยค่าเริ่มต้นรองรับสถาปัตยกรรม **arm64** เท่านั้น หากต้องการรันคอนเทนเนอร์ที่สร้างสำหรับ **amd64/x86_64** จำเป็นต้องเปิดใช้งาน…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
คัดลอกลิงก์แล้ว!