Skip to content

ci: ตรวจ template ทุกไฟล์ก่อน merge เข้า main - #1

Merged
monthop-gmail merged 1 commit into
mainfrom
chore/add-ci
Aug 26, 2026
Merged

ci: ตรวจ template ทุกไฟล์ก่อน merge เข้า main#1
monthop-gmail merged 1 commit into
mainfrom
chore/add-ci

Conversation

@monthop-gmail

Copy link
Copy Markdown
Owner

ทำไมต้องเปลี่ยน

repo นี้แจก template ให้ทีมเอาไปใช้กับ repo จริง แต่ตอนนี้ไม่มีอะไรกันไม่ให้ template ที่พังหลุดออกไป
กรณีที่เจ็บที่สุดคือถ้า gate job ชื่อ ci ใน templates/github/workflows/ci-*.yml หายไปหรือไม่ได้รอ job ครบ
คนที่ก๊อปไปตั้ง branch protection จะเจอ PR ค้างที่ "Expected — Waiting for status" โดยไม่รู้สาเหตุ

เปลี่ยนอะไร

  • scripts/validate.sh — ตัวตรวจที่ CI และเครื่อง dev เรียกตัวเดียวกัน (กันอาการ "บนเครื่องเขียว บน CI แดง")
  • .github/workflows/ci.yml — 3 job + gate job ชื่อ ci ตามที่ handbook สอนไว้เอง
  • README — เพิ่มหัวข้อวิธีแก้ repo นี้

สิ่งที่ตรวจ:

ตรวจอะไร กันปัญหาอะไร
YAML/JSON ใน templates/ parse ได้ template พังหลุดไปถึงทีม
ทุก ci-*.yml มี job ci ที่รอครบทุก job + if: always() required check ค้าง / ถูก skip ตอน job อื่นแดง
scripts/*.sh ผ่าน shellcheck + มี executable bit คน clone ไปแล้วเจอ Permission denied
ลิงก์ภายใน markdown ไม่ตาย handbook อ่านต่อไม่ได้
ไม่มี token / อีเมลจริง repo นี้เป็น public

ทดสอบยังไง

./scripts/validate.sh          # ต้องเขียวทั้งหมด

ทดสอบด้าน negative แล้วด้วย — ใส่ ci-*.yml ที่ gate job ไม่ได้รอ job อื่น และ JSON ที่พังเข้าไป
validator จับได้ทั้งคู่และ exit 1 จากนั้นลบไฟล์ทดสอบออก

ผลกระทบ

  • เป็น breaking change
  • ต้องรัน migration
  • ต้องเพิ่ม/แก้ env var หรือ secret
  • กระทบ repo อื่น

ไม่กระทบใคร — เป็นการเพิ่ม CI ให้ repo ตัวเอง ยังไม่แตะ template ที่ทีมใช้อยู่

Checklist ก่อนขอรีวิว

  • อ่าน diff ของตัวเองแล้ว
  • CI เขียว (รอผลรอบแรก — workflow นี้เพิ่งถูกเพิ่ม)
  • ไม่มี debug log / โค้ดที่ comment ทิ้ง / TODO ค้าง
  • ไม่มี secret หรือค่า config ที่ hardcode
  • เปลี่ยนจริงไม่เกิน ~400 บรรทัด

repo นี้แจก template ให้ทีมเอาไปใช้ แต่ที่ผ่านมาไม่มีอะไรกันไม่ให้
template ที่พังหลุดออกไป — ถ้า ci-*.yml เสียหรือ gate job ชื่อ 'ci'
หายไป คนที่ก๊อปไปตั้ง branch protection จะเจอ PR ค้างโดยไม่รู้สาเหตุ

เพิ่ม scripts/validate.sh ที่ CI และเครื่อง dev เรียกตัวเดียวกัน ตรวจ:
- YAML/JSON ใน templates/ parse ได้
- ทุก ci-*.yml มี job ชื่อ 'ci' ที่รอครบทุก job และมี if: always()
- scripts/*.sh ผ่าน shellcheck และมี executable bit
- ลิงก์ภายในของ markdown ไม่ตาย
- ไม่มี token หรืออีเมลจริงหลุดเข้า repo สาธารณะ

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dru5ECsrJrqhTfUhUvDsqw
@monthop-gmail

Copy link
Copy Markdown
Owner Author

ปิดเพื่อ reopen ให้ Actions ยิง event ใหม่ (repo เพิ่งสร้าง ยังไม่เคยมี workflow run)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant