ตั้ง CI/CD ให้โปรเจกต์ Laravel ด้วย GitHub Actions ตั้งแต่รัน test ก่อน deploy เครื่อง runner ของเราเอง ลำดับขั้นตอน deploy การตรวจเฉพาะไฟล์ที่ PR แก้ จนถึงส่งผลเข้า Telegram
- 1

ตั้ง GitHub Actions ให้โปรเจกต์ Laravel รัน test ก่อน deploy แล้วแจ้งผลทุกรอบ
workflow เดียวแบ่งเป็นสาม job คือ test, deploy และ notify ให้ deploy รอจน test ผ่าน และให้ notify รายงานผลทุกครั้ง โพสต์นี้อธิบายลำดับขั้นใน job test การข้าม CI เมื่อแก้แค่เอกสารด้วย paths-ignore และการตั้ง concurrency ไม่ให้รอบเก่าค้างคิว
· อ่าน 4 นาที
- 2

Self-hosted runner ของ GitHub Actions คืออะไร และวิธีตั้งให้ปลอดภัย
self-hosted runner คือเครื่องของเราเองที่รับ job จาก GitHub Actions ไปรัน ไม่กินนาทีของแพ็กเกจและใช้ cache ที่ค้างอยู่ในเครื่องได้ แต่เครื่องไม่ได้ล้างใหม่ทุกรอบ และใครเปิด pull request ได้ก็สั่งโค้ดให้รันบนเครื่องนั้นได้ โพสต์นี้อธิบายว่าคุ้มเมื่อไร ติดตั้งยังไง ใช้ label เลือกเครื่อง และเรื่องที่ต้องตั้งก่อนใช้กับ repo สาธารณะ
· อ่าน 5 นาที
- 3

ลำดับขั้นตอน deploy Laravel จาก GitHub Actions ตั้งแต่โค้ด ฐานข้อมูล ไปจนถึงล้าง cache ของ Cloudflare
job deploy ของเราเรียงหกขั้นเสมอ คือโค้ด ฐานข้อมูล assets cache reload และ purge โพสต์นี้อธิบายเหตุผลของแต่ละขั้น ตั้งแต่ใช้ git reset --hard ไปที่ commit ที่ test ผ่านแทน git pull, snapshot ฐานข้อมูลเฉพาะตอนมี migration ค้าง ไปจนถึง reload ทั้ง PHP-FPM และ queue worker
· อ่าน 5 นาที
- 4

ให้ GitHub Actions ตรวจ Pint, Rector, ESLint และ Prettier เฉพาะไฟล์ที่ pull request แก้
โปรเจกต์เก่าที่ไม่เคยรัน Pint ถ้าตรวจทั้ง repo ใน CI จะแดงทุก PR ด้วยไฟล์ที่ไม่มีใครแตะ workflow นี้หาไฟล์ที่ PR แก้ด้วย git diff แล้วส่งเฉพาะไฟล์เหล่านั้นให้ Pint, Rector, ESLint และ Prettier ในโหมดตรวจ พร้อมวิธีส่งชื่อไฟล์เข้า shell ให้ปลอดภัย
· อ่าน 4 นาที
- 5

ส่งผล CI และการ deploy จาก GitHub Actions เข้า Telegram ทุกรอบ
job notify ส่งข้อความเข้า Telegram ทุกครั้งที่ CI จบ บอกว่า test ผ่านไหม deploy แล้วหรือยัง พร้อมลิงก์ไปหน้ารอบนั้น โพสต์นี้อธิบายการสร้าง bot การหา chat id ทำไมต้องใช้ if: always() การแปลงผลของแต่ละ job เป็นข้อความ และการให้ job notify แดงตามผลจริง
· อ่าน 4 นาที