GitHub Actions สำหรับฟรอนต์เอนด์: ตรวจรูปแบบ ทดสอบ และบิลด์
เขียนเวิร์กโฟลว์ YAML ที่ติดตั้งการพึ่งพา เรียกใช้ ESLint รันเทสต์ Jest และบิลด์แอปเมื่อมีคำขอผสานทุกครั้ง
GitHub Actions สำหรับฟรอนต์เอนด์: ตรวจรูปแบบ ทดสอบ และบิลด์ เป็นบทเรียน Frontend Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Frontend Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Frontend Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องมี CI สำหรับส่วนหน้า
การผสานรวมอย่างต่อเนื่องจะเรียกใช้การทดสอบ เครื่องมือตรวจรูปแบบโค้ด และการสร้างของคุณทุกครั้งที่ส่งโค้ดและสร้างคำขอดึงโค้ด วิธีนี้ตรวจพบการถดถอยก่อนที่จะไปถึงสาขา main และเป็นสิ่งจำเป็นสำหรับทุกทีมที่มีนักพัฒนามากกว่าหนึ่งคน
พื้นฐาน GitHub Actions
กระบวนการทำงานคือไฟล์ YAML ใน .github/workflows/ แต่ละกระบวนการทำงานมีงานต่าง ๆ ที่ทำงานตามตัวกระตุ้น (push, pull_request, schedule)
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci
- run: npm testการแคชส่วนพึ่งพา
แคช node_modules (หรือแคชของ pnpm/yarn) เพื่อหลีกเลี่ยงการติดตั้งใหม่ทุกครั้งที่ทำงาน setup-node มีการรองรับแคชในตัว
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm' # or 'yarn' or 'pnpm'งานตรวจรูปแบบโค้ด
เรียกใช้การตรวจสอบของ ESLint และ Prettier ให้การสร้างล้มเหลวเมื่อพบข้อผิดพลาด
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npm run lint
- run: npm run format:checkงานทดสอบ
เรียกใช้ Vitest หรือ Jest และสร้างรายงานความครอบคลุมเพื่อให้ตรวจสอบได้
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npm test -- --coverage
- uses: codecov/codecov-action@v4
with:
files: ./coverage/lcov.infoงานสร้าง
สร้างชุดไฟล์สำหรับใช้งานจริง อัปโหลดเป็นไฟล์ผลลัพธ์สำหรับงานการนำไปใช้งานในขั้นถัดไป
build:
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 7งานแบบขนาน
การตรวจรูปแบบโค้ด การทดสอบ และการตรวจสอบชนิดข้อมูลสามารถทำงานแบบขนานกันได้ เพราะ Actions จะเรียกใช้ตัวรันงานแยกกันสำหรับแต่ละงาน ใช้ needs: เพื่อบังคับลำดับ (สร้างหลังจากตรวจรูปแบบโค้ดและทดสอบเสร็จ)
การตรวจสอบชนิดข้อมูล
เพิ่มงานตรวจสอบชนิดข้อมูลโดยเฉพาะ: tsc --noEmit วิธีนี้ตรวจพบข้อผิดพลาดของ TypeScript ก่อนทำงานจริง
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'npm' }
- run: npm ci
- run: npx tsc --noEmitการทดสอบแบบเมทริกซ์
เรียกใช้งานทดสอบกับ Node หลายเวอร์ชันหรือหลายระบบปฏิบัติการพร้อมกัน
test:
strategy:
fail-fast: false
matrix:
node: [18, 20, 22]
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: ${{ matrix.node }} }
- run: npm ci && npm testขั้นตอนแบบมีเงื่อนไข
ใช้ if: เพื่อให้ขั้นตอนทำงานเฉพาะเมื่อเป็นไปตามเงื่อนไข เช่น ทำงานเฉพาะบนสาขา main
- name: Deploy to staging
if: github.ref == 'refs/heads/main'
run: npm run deploy:stagingความลับและตัวแปร
จัดเก็บคีย์ API และโทเค็นไว้ในความลับของที่เก็บโค้ด (การตั้งค่า → ความลับ) เข้าถึงผ่าน secrets.NAME อย่าคอมมิตความลับลงในที่เก็บโค้ดโดยเด็ดขาด
- run: npm run deploy
env:
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}กฎการป้องกันสาขา
ใน การตั้งค่า → สาขา ให้กำหนดให้เวิร์กโฟลว์ CI ทำงานสำเร็จก่อนอนุญาตให้รวมโค้ดเข้ากับ main เมื่อใช้ร่วมกับการตรวจทานที่กำหนด นี่คือมาตรการป้องกันมาตรฐานของทีม
ตรวจสอบอย่างรวดเร็ว
จุดประสงค์ของ cancel-in-progress: true ในบล็อก concurrency ของเวิร์กโฟลว์ GitHub Actions คืออะไร
สรุป: GitHub Actions สำหรับฟรอนต์เอนด์
ไฟล์ YAML ของเวิร์กโฟลว์อยู่ใน .github/workflows/ งานจะทำงานเมื่อมีการ push หรือ PR แคช node_modules ผ่าน setup-node งานมาตรฐาน ได้แก่ lint, ตรวจสอบชนิด, test และ build ทำงานแบบขนานโดยใช้ needs เพื่อกำหนดลำดับ ใช้เมทริกซ์สำหรับการทดสอบหลายเวอร์ชัน จัดการความลับผ่านการตั้งค่าที่เก็บโค้ด การป้องกันสาขาจะกำหนดให้ CI ผ่านก่อนรวมโค้ด ใช้ cancel-in-progress เพื่อป้องกันการทำงานซ้ำ
คำถามที่พบบ่อย
บทเรียน “GitHub Actions สำหรับฟรอนต์เอนด์: ตรวจรูปแบบ ทดสอบ และบิลด์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “GitHub Actions สำหรับฟรอนต์เอนด์: ตรวจรูปแบบ ทดสอบ และบิลด์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Frontend Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Frontend Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “GitHub Actions สำหรับฟรอนต์เอนด์: ตรวจรูปแบบ ทดสอบ และบิลด์”
เขียนเวิร์กโฟลว์ YAML ที่ติดตั้งการพึ่งพา เรียกใช้ ESLint รันเทสต์ Jest และบิลด์แอปเมื่อมีคำขอผสานทุกครั้ง คุณปฏิบัติ Frontend Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Frontend Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Frontend Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “GitHub Actions สำหรับฟรอนต์เอนด์: ตรวจรูปแบบ ทดสอบ และบิลด์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Frontend Academy นี้ได้ไหม
ได้ บทเรียน Frontend Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- GitHub Actions สำหรับฟรอนต์เอนด์: ตรวจรูปแบบ ทดสอบ และบิลด์
- การนำไปใช้งานบน Vercel, Netlify และ Cloudflare Pages
- ตัวแปรสภาพแวดล้อมใน CI
- การตรวจสอบ Lighthouse อัตโนมัติ