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"
BashLệ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"
YAMLBướ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ả.