Trong thế giới phát triển phần mềm, CI/CD (Continuous Integration and Continuous Deployment) là hai quy trình quan trọng giúp tăng tốc độ phát triển, cải thiện chất lượng mã nguồn và giảm thiểu rủi ro lỗi. Nếu bạn muốn tích hợp CI/CD vào dự án của mình một cách dễ dàng, GitHub Actions là một công cụ tuyệt vời. Hãy cùng khám phá cách triển khai CI/CD đơn giản với GitHub Actions trong bài viết này!
GitHub Actions là gì?
GitHub Actions là một dịch vụ tích hợp CI/CD miễn phí được cung cấp bởi GitHub. Với GitHub Actions, bạn có thể tự động hóa các công việc như kiểm tra mã nguồn, xây dựng ứng dụng, triển khai ứng dụng và nhiều công việc khác một cách dễ dàng.
Ưu điểm của GitHub Actions
- Dễ dàng thiết lập và tích hợp: GitHub Actions có các mẫu workflows và các action được cộng đồng chia sẻ, giúp bạn triển khai CI/CD chỉ trong vài phút.
- Miễn phí: GitHub Actions cung cấp 2000 phút chạy miễn phí mỗi tháng cho các dự án công cộng.
- Tối ưu hoá cho GitHub: Không cần kết nối với các công cụ bên ngoài, vì GitHub Actions tích hợp trực tiếp với mã nguồn của bạn trên GitHub.
- Hỗ trợ đa nền tảng: Chạy được trên nhiều hệ điều hành như Linux, macOS, Windows.
Cách triển khai CI/CD với GitHub Actions
Bước 1: Tạo file workflow
Đầu tiên, bạn cần tạo một file workflow để định nghĩa các công việc cần thực thi. File workflow có định dạng YAML và được lưu trong thư mục .github/workflows
của dự án.
Ví dụ, bạn có thể tạo một file run.yml
để build dự án sử dụng nodejs với nội dung như sau:
# File: .github/workflows/run.yml
name: CI/CD Pipeline Run # Tên của workflow
on: # Sự kiện trigger workflow
push:
branches:
- master
pull_request:
branches:
- master
jobs: # Các công việc cần thực thi
build:
runs-on: ubuntu-latest # Hệ điều hành chạy workflow
steps: # Các bước thực thi
- name: Checkout code # Bước checkout mã nguồn
uses: actions/checkout@v2
- name: Setup Node.js # Bước cài đặt Node.js
uses: actions/setup-node@v2
with:
node-version: '20'
- name: Install dependencies # Bước cài đặt dependencies
run: npm install
- name: Build # Bước build
run: npm run build
- name: Test # Bước test
run: npm test
deploy: # Công việc triển khai ứng dụng
needs: build # Cần chạy công việc build trước
runs-on: ubuntu-latest
steps: # Các bước thực thi
- name: Deploy
run: echo "Deploying..."
Như ví dụ trên, workflow sẽ chạy khi có sự kiện push hoặc pull request vào nhánh master
. Các bước thực thi bao gồm: checkout mã nguồn, cài đặt Node.js, cài đặt dependencies, build, test và triển khai ứng dụng.
Ở phần run-on
, bạn có thể chọn hệ điều hành mà workflow sẽ chạy, ví dụ: ubuntu-latest
, macos-latest
, windows-latest
hoặc self-hosted
.
Self-hosted là một máy chủ bạn tự quản lý và cấu hình để chạy các workflow. Điều này giúp bạn có thể chạy các công việc cần tài nguyên phần cứng cao hoặc cần cài đặt các công cụ mà GitHub Actions không hỗ trợ.
Trong steps
, mỗi bước thực thi sẽ chạy một action cụ thể. GitHub Actions cung cấp nhiều action sẵn có mà bạn có thể sử dụng tại Marketplace, hoặc bạn có thể tạo các action riêng của mình sử dụng bằng uses: 'Tên action'
.
Bước 2: Push file workflow lên GitHub
Sau khi tạo file workflow, bạn cần push file này lên GitHub để GitHub Actions có thể chạy workflow. Bạn có thể kiểm tra trạng thái của workflow trên tab Actions
của dự án.
Bước 3: Kích hoạt CI/CD
Khi push mã nguồn hoặc tạo pull request vào nhánh master
, GitHub Actions sẽ tự động chạy workflow đã định nghĩa. Bạn có thể xem kết quả của workflow trên tab Actions
và theo dõi quá trình thực thi.
Mẹo tối ưu CI/CD với GitHub Actions
- Sử dụng cache: Để giảm thời gian chạy workflow, bạn có thể sử dụng cache để lưu trữ các dependencies đã cài đặt trước đó.
- Sử dụng matrix: Để chạy workflow trên nhiều phiên bản Node.js, hệ điều hành hoặc ngôn ngữ khác nhau.
- Tách workflow: Để chia nhỏ workflow thành các công việc nhỏ hơn, dễ quản lý và debug hơn.
- Sử dụng secrets: Để lưu trữ thông tin nhạy cảm như API key, token một cách an toàn.
- Kiểm soát trigger: Sử dụng trigger chính xác để tránh việc workflows kích hoạt không cần thiết, tối ưu hóa hiệu suất và tài nguyên.
Kết luận
GitHub Actions là một công cụ mạnh mẽ giúp bạn triển khai CI/CD một cách dễ dàng và hiệu quả. Với GitHub Actions, bạn có thể tự động hóa các công việc như kiểm tra mã nguồn, xây dựng ứng dụng, triển khai ứng dụng một cách nhanh chóng và linh hoạt. Hy vọng bài viết này giúp bạn hiểu rõ hơn về GitHub Actions và cách sử dụng nó trong dự án của mình. Mokadev chúc bạn thành công!