Cách Set-up một hệ thống CI/CD sử dụng Github Action
Cách Set-up một hệ thống CI/CD sử dụng Github Action
CI/CD là gì? Cách thiết lập CI/CD với Github Actions (NodeJS + ReactJS)
CI/CD là gì? (loading…)
CI/CD là tập hợp các hành động nhằm tự động hóa vòng đời phát triển phần mềm, trong đó:
- CI - Continuous Integration: khi push code, hệ thống tự cài dependencies -> build -> chạy lint/test. Mục tiêu để phát hiện lỗi sớm, giữ nhánh chính luôn xanh
- CD - Continuous Delivery: sau khi CI pass, hệ thống đóng gói artifact(ví dụ: như mục build của React) và sẵn sàng deploy
Github Actions - Các khái niệm cốt lõi
Workflow
: 1 kịch bản tự động hóa (file .yml) chạy theo trigger (push, PR, cron, manual,…)Job
: 1 nhóm bước chạy trên 1 máy ảo (runner). Nhiều job có thể chạy song song hoawjca theo needsStep
: 1 lệnh đơn hoặc 1 ActionAction
: khối tái sử dụng (ví dụ actions/checkout, action/setup-node)Runner
: máy thực thi (Ubuntu, Windows, macOS). Thường dùng ubuntu-latestSecrets/Variables
: cấu hình nhạy cảm (token) & biến không nhạy cảmArtifacts & Cache
: Lưu output (artiface) và cache dependencies để chạy nhanh hơn
Case Study
Hiện tại đã có:
- VPS (OS: Ubuntu)
- Dùng NVM để quản lý version NodeJS
- Dùng pm2 để chạy và quản lys tiến trình NodeJS Backend
- CI (trên Github Actions)
1
Code
- CD (Deploy lên VPS qua SSH)
Ở job này, Github Action sẽ SSH vào VPS -> Kéo Code mới về -> cài deps -> build lại -> restart bằng pm2
Bước chuẩn bị trên VPS
- Cài NodeJS qua nvm
- Cài pm2 global:
npm i -g pm2
- Tạo key SSH để Github có thể truy cập VPS (không dùng mật khẩu)
- Trên máy local:
ssh-keygen -t ed25519
- Copy public key (
.pub
) vào~/.ssh/authorized_keys
trên VPS - Thêm private key Github
- Trên máy local:
1
Code
Như vậy flow sẽ là:
- Push code lên
main
-> CI chạy build/test - Nếu pass -> deploy job SSH vào VPS, kéo Code, build lại, restart bằng PM2
This post is licensed under CC BY 4.0 by the author.