Tự động triển khai dự án Laravel lên server bằng GitHub Actions 🚀

Tự động triển khai dự án Laravel lên server bằng GitHub Actions 🚀

Bạn đã bao giờ mong muốn dự án Laravel của mình tự động triển khai (deploy) mỗi khi có thay đổi mới? Giờ đây, với GitHub Actions, quy trình này trở nên dễ dàng và nhanh chóng hơn bao giờ hết! Không cần thao tác thủ công, không sợ quên file, chỉ với vài dòng cấu hình, bạn có thể để GitHub tự động thực hiện tất cả.

👉 Tại sao nên chọn GitHub Actions?

GitHub Actions là công cụ tích hợp CI/CD mạnh mẽ ngay trên GitHub, giúp bạn tự động hóa các quy trình kiểm thử, build và deploy. Với GitHub Actions, bạn có thể:

  • Tiết kiệm thời gian: Đẩy code xong, GitHub sẽ tự động deploy.
  • Đảm bảo đồng bộ: Mỗi bản cập nhật đều nhất quán trên server.
  • Quy trình chuyên nghiệp: Tự động kiểm thử và thông báo lỗi ngay khi phát sinh.

🔧 Cài đặt GitHub Actions cho dự án Laravel của bạn

Bước 1: Tạo SSH Key 🔑 Để bảo mật kết nối, trước tiên, hãy tạo một SSH key. Chúng ta sẽ sử dụng key này để GitHub có thể truy cập vào server của bạn. Bạn chạy lệnh sau, cứ nhấn enter.

ssh-keygen -t ed25519 -C "youremail@gmail.com"
Bash

Lệnh trên sẽ tạo ra 2 tệp tin id_ed25519 và id_ed25519.pub

Bước 2: Tạo Secrets cần thiết: Vào phần repository trên github của bạn -> settings -> Actions secrets and variables -> Actions. Tại đây, bạn thêm

APP_DIR: Đường dẫn tới thư mục ứng dụng Laravel trên server.
SSH_HOST: FTP host.
SSH_USER: FTP account.
SSH_PRIVATE_KEY: Mở tệp tin id_ed25519 và copy nội dung tệp tin id_ed25519. Nhớ không phải tệp id_ed25519.pub nhé!

Bước 3: Cấu hình GitHub Actions Workflow ⚙️ Tạo file .github/workflows/main.yml trong dự án Laravel, sau đó cấu hình như sau:

name: Deploy to Server

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:

    - name: Checkout repository
      uses: actions/checkout@v4
      
    - name: Set up SSH
      run: |
        mkdir -p ~/.ssh
        echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan -H "${{ secrets.SSH_HOST }}" >> ~/.ssh/known_hosts

    - name: Deploy to Server
      env:
        HOST: ${{ secrets.SSH_HOST }}
        USER: ${{ secrets.SSH_USER }}
        APP_DIR: ${{ secrets.APP_DIR }}
      run: |
        ssh -v -o StrictHostKeyChecking=no -i private_key ${USER}@${HOST} "cd ${APP_DIR} && git pull origin main && php artisan cache:clear && php artisan config:cache && php artisan route:cache && composer.phar install --optimize-autoloader --no-dev"
YAML

Bước 4: Thêm SSH Key vào Secrets trên GitHub 🔐

  • Vào Settings > Secrets > New repository secret trong GitHub.
  • Thêm secret tên SSH_PRIVATE_KEY và dán private key vừa tạo. Chính là nội dung tệp tin id_ed25519.
  • Thêm nội dung tệp tin id_ed25519.pub lên server của bạn ở phần SSH key, và trên github bạn vào Account -> settings -> SSH and GPG keys -> New SSh Key. Phần Title bạn đặt tuỳ ý của bạn, phần key bạn mở tệp tin id_ed25519.pub và copy nội dung điền vào.

Bước 5: Kiểm tra và tận hưởng thành quả 🎉 Từ giờ, mỗi lần có thay đổi trên nhánh main, GitHub sẽ tự động deploy code mới lên server của bạn. Cụ thể như sau:

Bạn tạo thay đổi trong mã nguồn của bạn, sau đó thực hiện commit lên nhánh main trên github, sau đó vào phần Action của repository và thấy kết quả.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *