Thuta Learning
ရှာဖွေရန်

GitHub Actions ဖြင့် CI စတင်တည်ဆောက်နည်း

Pull request တိုင်း install၊ lint၊ typecheck နှင့် test အလိုအလျောက်ပြေးပြီး မကောင်းသော code main branch ထဲမဝင်စေမည့် CI workflow တည်ဆောက်ပါမယ်။

GitHub Actions ဖြင့် CI စတင်တည်ဆောက်နည်း cover illustration

ဖြေရှင်းမည့်ပြဿနာ

Developer တစ်ယောက်ချင်းစီက စမ်းသပ်ပုံမတူလျှင် main branch ပေါ်မှာမှ build ပျက်တာကိုတွေ့ရပြီး ပြန်ပြင်ချိန်ကုန်ပါတယ်။

လိုအပ်ချက်များ

  • GitHub repository
  • package.json scripts
  • Project ကို local မှာ test လုပ်နိုင်မှု

Local scripts ကိုတိကျအောင်လုပ်ပါ

CI က magic မဟုတ်ပါဘူး။ Local မှာ run နိုင်တဲ့ command တွေကို clean environment မှာပြန်ပြေးပေးတာပါ။ lint၊ typecheck၊ test နဲ့ build scripts အားလုံး exit code မှန်အောင်ထားပါ။

Terminal
$ pnpm lint
$ pnpm typecheck
$ pnpm test
$ pnpm build

Workflow file ဖန်တီးပါ

Pull request နဲ့ main push အချိန်မှာပြေးမည့် workflow တစ်ခုရေးပါ။ Lockfile ရှိတာကိုသုံးပြီး frozen install လုပ်ရင် dependency version မတော်တဆပြောင်းမသွားပါဘူး။

.github/workflows/ci.yml
name: CI
on:
  pull_request:
  push:
    branches: [main]
jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v4
        with:
          version: 10
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: pnpm
      - run: pnpm install --frozen-lockfile
      - run: pnpm lint
      - run: pnpm typecheck
      - run: pnpm test
      - run: pnpm build

Permissions နှင့် secrets ကိုလျှော့ပါ

Test job က repository ကိုဖတ်ရုံပဲလိုရင် write permission မပေးပါနဲ့။ Fork PR တွေမှာ secret မပေးသင့်သလို secret တန်ဖိုးကို log ထဲမထုတ်ပါနှင့်။ Third-party actions ကို trusted publisher နှင့် stable version ဖြင့်သာသုံးပါ။

.github/workflows/ci.yml
permissions:
  contents: read

Branch protection ချိတ်ပါ

Workflow ရှိရုံနဲ့မလုံလောက်ပါ။ Repository settings မှာ main branch အတွက် required status checks နဲ့ pull request review ကိုသတ်မှတ်ပါ။ CI မအောင်မြင်ဘဲ merge မလုပ်နိုင်အောင် gate လုပ်ပါ။

ရရှိမည့်ရလဒ်

Pull request တိုင်း quality checks အလိုအလျောက်ပြေးပြီး failure ရှိပါက main branch ထဲမဝင်နိုင်သော CI gate ရရှိပါမယ်။

အဆင်မပြေပါက စစ်ဆေးရန်

  • Local မှာအောင်မြင်ပြီး CI မှာပျက်လျှင် Node version၊ OS case sensitivity နဲ့ missing environment variables ကိုစစ်ပါ။
  • Cache error ဖြစ်လျှင် lockfile path နှင့် package manager setup order ကိုစစ်ပါ။
  • Test hanging ဖြစ်လျှင် open handles နဲ့ test timeout ကို logs မှာရှာပါ။

ဆက်လက်လေ့လာရန် Tutorials