tva
← Insights

GitHub Actions สำหรับ Self-Hosted Deployment Pipeline

GitHub Actions มี documentation ดีสำหรับการ deploy ไปยัง cloud PaaS platform — Vercel, Railway, Fly.io แต่ documentation สำหรับการ deploy ไปยัง server ที่คุณดำเนินการเองผ่าน SSH นั้นกระจัดกระจายกว่า ส่วนประกอบมีอยู่ การวาง pattern ที่ทำงานได้ใน production ต้องการการรวมกันในลักษณะที่ส่วนใหญ่ไม่ได้ document ไว้อย่างดี

รูปแบบพื้นฐาน: SSH ไปยัง server, pull, restart

name: Deploy to Production

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy via SSH
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.DEPLOY_HOST }}
          username: ${{ secrets.DEPLOY_USER }}
          key: ${{ secrets.DEPLOY_SSH_KEY }}
          script: |
            cd /opt/myapp
            git pull origin main
            docker compose pull
            docker compose up -d --remove-orphans
            docker system prune -f

Self-hosted runner สำหรับ private network

ถ้า server ของคุณอยู่บน private network ที่ไม่มี public IP หรือถ้าคุณต้องการหลีกเลี่ยง SSH inbound บน production server โดยสิ้นเชิง self-hosted GitHub Actions runner คือ pattern ที่ถูกต้อง Runner ทำงานบนเซิร์ฟเวอร์ของคุณ ติดต่อ GitHub outbound เพื่อ pull job ซึ่งกลับ SSH requirements ได้อย่างสมบูรณ์

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

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