Phần 3 — Secrets, Variables và Environment protection
Ý 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 3 — Secrets, Variables và Environment protection ← bạn đang đọc
Phần 5 — Self-hosted Runner: cài đặt, security, auto-scaling
Mọi pipeline production đều cần dữ liệu nhạy cảm: Docker registry password, cloud access key, API token… Hardcode vào YAML là tự bắn vào chân — repo public có thể leak ngay; repo private vẫn để lộ trong log. GitHub Actions tách rõ 3 lớp: repository secrets (chia sẻ toàn repo), environment secrets (chỉ inject khi job khai báo đúng environment), và variables (giá trị công khai, không nhạy cảm).
Pipeline thật chắc chắn cần token, mật khẩu, API key… Tuyệt đối không hardcode vào YAML.
Vào Settings → Secrets and variables → Actions → New repository secret. Đặt tên (vd: DOCKER_PASSWORD), dán giá trị. Trong workflow gọi:
steps:
- name: Login Docker Hub
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
GitHub tự động mask secret trong log — nếu lỡ echo ra cũng chỉ thấy ***.
Khi bạn có nhiều môi trường (staging/production), tạo Environment trong Settings → Environments. Mỗi env có secrets riêng và có thể yêu cầu approval trước khi deploy.
jobs:
deploy-prod:
runs-on: ubuntu-latest
environment: production # Bắt buộc reviewer approve
steps:
- run: deploy.sh
env:
API_KEY: ${{ secrets.PROD_API_KEY }}
Dùng cho config công khai (vd: tên image, region AWS). Tạo ở Settings → Variables, gọi bằng ${{ vars.MY_VAR }}.
Trong phần này bạn đã nắm:
Tạo và dùng repository secrets — GitHub tự mask trong log dưới dạng ***.
Environment secrets + environment: production cho phép yêu cầu reviewer approve trước khi job chạy.
Variables dùng cho giá trị công khai (tên image, region) — gọi qua ${{ vars.NAME }}.
Quy tắc bất di bất dịch: không bao giờ echo secret ra log, không pass secret qua workflow_dispatch input (input không được mask).
Trong Phần 4, ta đi vào tối ưu pipeline: matrix builds để test song song nhiều OS/version, cache để giảm thời gian cài deps, và artifacts để truyền data giữa job.