Phần 2 — Workflow YAML đầu tiên và Triggers nâng cao
Ý kiến
0
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Pipeline production Next.js → Docker → K8s với cache image, manual approval. Tổng kết best practices và kỹ thuật debug (CI Lint, visualizer, CI_DEBUG_TRACE).
Khai báo environment để GitLab theo dõi deployments, có lịch sử và nút rollback. Review Apps — tính năng signature: mỗi MR tự deploy lên môi trường tạm.
Tái sử dụng pipeline giữa nhiều dự án với include (local, project, template, remote), kế thừa job với extends (hidden job), và YAML anchors.
Series GitHub Actions Toàn Tập — 8 phần:
Phần 1 — Tổng quan: CI/CD, GitHub Actions và các khái niệm cốt lõi
Phần 2 — Workflow YAML đầu tiên và Triggers nâng cao ← bạn đang đọc
Phần 5 — Self-hosted Runner: cài đặt, security, auto-scaling
Sau khi nắm các khái niệm Workflow / Event / Job / Step / Runner ở Phần 1, phần này ta thực sự viết file YAML đầu tiên và đẩy lên GitHub Actions chạy. Sau đó đi sâu vào ba kiểu trigger nâng cao sẽ dùng hàng ngày trên dự án thật: lọc theo path, schedule với cron, và workflow_dispatch với input.
Tạo file .github/workflows/ci.yml trong repo của bạn:
name: Hello CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run lint
run: npm run lint
- name: Run tests
run: npm test
- name: Build
run: npm run build
Push file này lên, mở tab Actions trong repo, bạn sẽ thấy workflow chạy ngay. Đó là pipeline CI cơ bản: clone → cài deps → lint → test → build.
name: — tên hiển thị trong UI.
on: — danh sách event kích hoạt.
jobs.build.runs-on: — chọn runner. ubuntu-latest là runner GitHub-hosted phổ biến nhất.
uses: actions/checkout@v4 — action chính thức của GitHub để clone code về runner. Luôn pin version (không dùng @main) để tránh breaking change.
cache: 'npm' — bật cache cho node_modules, giảm thời gian cài deps từ 60s xuống ~10s.
Trên dự án thực tế, bạn cần kiểm soát chính xác khi nào workflow chạy để tiết kiệm phút build và tránh build không cần thiết.
on:
push:
branches: [main]
paths:
- 'src/**'
- 'package.json'
- '.github/workflows/**'
paths-ignore:
- '**.md'
- 'docs/**'
Workflow này chỉ chạy khi code trong src/ hoặc package.json thay đổi. Sửa README sẽ không kích hoạt.
on:
schedule:
# Mỗi ngày lúc 2h sáng UTC (9h sáng giờ VN)
- cron: '0 2 * * *'
Hữu ích cho: quét bảo mật định kỳ, refresh cache, sync data.
on:
workflow_dispatch:
inputs:
environment:
description: 'Môi trường deploy'
required: true
default: 'staging'
type: choice
options:
- staging
- production
version:
description: 'Phiên bản'
required: false
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- run: echo "Deploy ${{ inputs.version }} to ${{ inputs.environment }}"
Sau khi push file này, vào tab Actions → chọn workflow → bấm Run workflow, GitHub sẽ hiện form để nhập input.
Trong phần này bạn đã nắm:
Cấu trúc cơ bản của file workflow: name / on / jobs / steps, đặt trong .github/workflows/.
Vì sao phải pin version action (@v4) thay vì @main: tránh supply chain attack.
Bật cache deps trực tiếp từ actions/setup-node để giảm thời gian cài deps từ ~60s xuống ~10s.
Ba kiểu trigger nâng cao: paths/paths-ignore (lọc theo path), schedule (cron UTC), workflow_dispatch với inputs.type=choice/string.
Trong Phần 3, ta sẽ tổ chức secrets, variables và environment — nền tảng bắt buộc để pipeline có thể login Docker registry, gọi cloud API, và deploy production với approval gate.