Câu Hỏi Phỏng Vấn CI/CD Pipeline: GitHub Actions, GitLab CI và Jenkins Năm 2026
Chuẩn bị câu hỏi phỏng vấn CI/CD pipeline bao gồm GitHub Actions, GitLab CI và Jenkins. Bao gồm ví dụ code thực tế, mẫu cấu hình pipeline và thực hành bảo mật tốt nhất cho năm 2026.

Câu hỏi phỏng vấn về CI/CD pipeline là một trong những chủ đề xuất hiện thường xuyên nhất trong các vòng tuyển dụng DevOps năm 2026. Với GitHub Actions hiện xử lý hơn 71 triệu job mỗi ngày và ra mắt thực thi step song song vào tháng 6 năm 2026, GitLab CI đạt phiên bản 19 với Secrets Manager native, và Jenkins vẫn duy trì tỷ lệ sử dụng 28%, nhà tuyển dụng mong đợi ứng viên thể hiện được khả năng thực hành trên cả ba nền tảng.
Phần lớn câu hỏi phỏng vấn CI/CD thuộc ba nhóm chính: thiết kế pipeline (cách tổ chức stage và job), bảo mật (quản lý secret và bảo vệ supply chain), và xử lý sự cố (debug build thất bại, tối ưu pipeline chậm). Ứng viên nên chuẩn bị sẵn ít nhất một cấu hình pipeline thực tế.
Cấu Trúc Workflow và Trigger Trong GitHub Actions
GitHub Actions tổ chức tự động hóa xoay quanh workflow, job và step. Một workflow là file YAML được lưu trong thư mục .github/workflows/, định nghĩa thời điểm và cách thức tự động hóa được chạy. Mỗi workflow chứa một hoặc nhiều job, và mỗi job chạy trên một runner riêng biệt.
Câu hỏi phỏng vấn phổ biến yêu cầu ứng viên giải thích mối quan hệ giữa trigger on, sự phụ thuộc giữa các job và keyword needs.
# .github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run lint
test:
needs: lint # waits for lint to pass
runs-on: ubuntu-latest
strategy:
matrix:
node: [20, 22] # runs tests on both versions
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: npm
- run: npm ci
- run: npm test
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
environment: production # requires approval
steps:
- uses: actions/checkout@v4
- run: ./deploy.shWorkflow trên minh họa ba khái niệm quan trọng: keyword needs tạo ra dependency graph giữa các job, chiến lược matrix cho phép kiểm thử song song trên nhiều phiên bản Node.js, và keyword environment đặt deployment sau cổng phê duyệt thủ công.
Parallel Steps Trong GitHub Actions
GitHub Actions ra mắt thực thi step song song vào ngày 25 tháng 6 năm 2026, đáp ứng một trong những tính năng được yêu cầu nhiều nhất. Trước đây, tất cả step trong một job chạy tuần tự. Tính năng mới này giới thiệu bốn keyword cho phép thực thi đồng thời trong một job duy nhất.
Parallel jobs sử dụng runner riêng biệt với filesystem cách ly. Parallel steps chia sẻ chung một runner, checkout, environment và workspace. Nhà tuyển dụng kiểm tra xem ứng viên có hiểu sự khác biệt này không, vì nó ảnh hưởng đến caching, artifact sharing và việc sử dụng tài nguyên.
# .github/workflows/parallel-steps.yml
name: Build with Parallel Steps
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
# Run lint and typecheck in parallel
- name: lint
run: npm run lint
background: true
- name: typecheck
run: npm run typecheck
background: true
- wait-all: # wait for both to complete
# Or use the parallel shorthand
- parallel:
- name: build-frontend
run: npm run build:frontend
- name: build-backend
run: npm run build:backend
- run: npm run deployKeyword background: true khởi động step bất đồng bộ và tiếp tục ngay sang step tiếp theo. Keyword wait-all tạm dừng thực thi cho đến khi tất cả background step hoàn thành. Keyword parallel cung cấp shorthand chạy nhiều step đồng thời và đợi tất cả hoàn thành trước khi tiếp tục.
Hai keyword bổ sung cũng có sẵn: wait nhắm đến background step cụ thể theo tên, và cancel dừng background step một cách graceful khi không còn cần thiết (hữu ích để dừng long-running service).
Cấu Hình Pipeline GitLab CI Với Stages
GitLab CI sử dụng file .gitlab-ci.yml tại thư mục gốc của repository. Khác với GitHub Actions nơi các job chạy độc lập theo mặc định, GitLab CI tổ chức job thành các stage thực thi tuần tự, trong khi các job trong cùng stage chạy song song.
Nhà tuyển dụng thường yêu cầu ứng viên chuyển đổi workflow GitHub Actions sang pipeline GitLab CI, hoặc ngược lại.
# .gitlab-ci.yml
stages:
- validate
- test
- deploy
variables:
NODE_VERSION: "22"
lint:
stage: validate
image: node:${NODE_VERSION}
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
script:
- npm ci
- npm run lint
unit-tests:
stage: test
image: node:${NODE_VERSION}
parallel:
matrix:
- NODE_VERSION: ["20", "22"]
script:
- npm ci
- npm test
artifacts:
reports:
junit: coverage/junit.xml
expire_in: 7 days
deploy-production:
stage: deploy
image: alpine:latest
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual # manual gate
environment:
name: production
url: https://app.example.com
script:
- ./deploy.shNhững điểm khác biệt chính so với GitHub Actions: stages quy định thứ tự thực thi toàn cục, keyword parallel:matrix xử lý matrix build, và artifacts:reports:junit tích hợp kết quả kiểm thử trực tiếp vào giao diện merge request.
GitLab 19.0 (tháng 5 năm 2026) giới thiệu Secrets Manager trong open beta, cung cấp lưu trữ secret native mà không cần dịch vụ bên ngoài như HashiCorp Vault. GitLab 19.2 (tháng 7 năm 2026) đưa chính sách thực thi pipeline theo lịch trình vào trạng thái generally available, cho phép các team áp dụng compliance scan hoặc dependency check theo lịch cố định trên nhiều dự án từ một định nghĩa chính sách duy nhất.
Sẵn sàng chinh phục phỏng vấn DevOps?
Luyện tập với mô phỏng tương tác, flashcards và bài kiểm tra kỹ thuật.
Cú Pháp Jenkins Declarative Pipeline
Jenkins sử dụng Jenkinsfile được lưu tại thư mục gốc của repository. Cú pháp declarative pipeline, được khuyến nghị làm mặc định trong năm 2026, cung cấp xử lý lỗi có cấu trúc và bố cục dựa trên stage rõ ràng.
Câu hỏi phỏng vấn thường gặp: giải thích sự khác biệt giữa declarative và scripted pipeline, và khi nào sử dụng từng loại.
// Jenkinsfile
pipeline {
agent any
tools {
nodejs 'node-22' // configured in Jenkins Global Tool
}
environment {
CI = 'true'
DEPLOY_ENV = credentials('deploy-env-secret')
}
stages {
stage('Install') {
steps {
sh 'npm ci'
}
}
stage('Lint & Test') {
parallel { // parallel execution
stage('Lint') {
steps {
sh 'npm run lint'
}
}
stage('Test') {
steps {
sh 'npm test'
}
post {
always {
junit 'coverage/junit.xml'
}
}
}
}
}
stage('Deploy') {
when {
branch 'main'
}
input {
message 'Deploy to production?'
}
steps {
sh './deploy.sh'
}
}
}
post {
failure {
mail to: 'team@example.com',
subject: "Build failed: ${env.JOB_NAME}",
body: "Check ${env.BUILD_URL}"
}
}
}Declarative pipeline áp dụng cấu trúc thông qua các khối bắt buộc pipeline, agent và stages. Chỉ thị parallel bên trong stage chạy lint và test đồng thời. Chỉ thị input tạm dừng thực thi để chờ phê duyệt thủ công, tương tự environment của GitHub Actions và manual gate của GitLab. Jenkins yêu cầu Java 21 kể từ tháng 1 năm 2026, do đó môi trường pipeline cần tính đến phụ thuộc runtime này.
Jenkins 2.574 (tháng 7 năm 2026) và 2.577 (tháng 8 năm 2026) loại bỏ một số plugin khỏi file WAR mặc định, bao gồm JUnit, Mailer, Matrix Authorization, Bouncycastle API và JavaMail API. Các instance không có quyền truy cập update center phải cài đặt các plugin này thủ công trước khi nâng cấp. Việc loại bỏ plugin JUnit đặc biệt ảnh hưởng đến pipeline sử dụng step junit như được hiển thị ở trên.
Quản Lý Secret Trên Các Nền Tảng CI/CD
Mọi buổi phỏng vấn CI/CD đều bao gồm câu hỏi về quản lý secret. Mỗi nền tảng xử lý thông tin xác thực theo cách khác nhau, và việc hiểu rõ các hàm ý bảo mật là rất quan trọng.
GitHub Actions lưu trữ secret ở cấp repository, environment hoặc organization. Secret được tự động ẩn khỏi log, nhưng mô hình scoping hiện tại có những hạn chế. Lộ trình bảo mật 2026 giới thiệu scoped secret ràng buộc thông tin xác thực vào ngữ cảnh thực thi cụ thể, giải quyết rủi ro truy cập quá rộng.
GitLab CI cung cấp CI/CD variable với quy tắc bảo vệ. Biến được bảo vệ chỉ được inject vào pipeline chạy trên branch hoặc tag được bảo vệ. GitLab 19.0 giới thiệu Secrets Manager, cho phép các team lưu trữ và tham chiếu secret native mà không cần vault bên ngoài. Secret được scope theo dự án hoặc group và chỉ có thể truy cập bởi job yêu cầu chúng một cách rõ ràng.
Jenkins sử dụng plugin Credentials với nhiều loại thông tin xác thực (username/password, SSH key, secret text, chứng chỉ). Helper credentials() trong declarative pipeline gắn secret vào biến môi trường, và credential cấp Folder giới hạn quyền truy cập theo dự án cụ thể.
Câu trả lời phỏng vấn then chốt: không bao giờ hardcode secret trong file pipeline, luôn sử dụng hệ thống quản lý secret nguyên bản của nền tảng, xoay vòng credential thường xuyên, và ưu tiên token ngắn hạn thay vì API key dài hạn.
Tối Ưu Pipeline và Chiến Lược Caching
Pipeline chậm ảnh hưởng trực tiếp đến năng suất của lập trình viên. Nhà tuyển dụng kiểm tra xem ứng viên có khả năng chẩn đoán và khắc phục điểm nghẽn cổ chai hiệu năng trong hệ thống CI/CD hay không.
Ba kỹ thuật tối ưu phổ quát áp dụng trên cả ba nền tảng:
Dependency caching tránh tải lại package mỗi lần chạy. GitHub Actions sử dụng actions/cache hoặc hỗ trợ cache tích hợp trong setup action. GitLab CI sử dụng cache với chiến lược key. Jenkins dựa vào tính bền vững của workspace hoặc lệnh stash/unstash.
Thực thi song song chia công việc cho nhiều runner. GitHub Actions hiện hỗ trợ cả parallel jobs (chiến lược matrix) và parallel steps (keyword background/parallel). GitLab CI sử dụng parallel:matrix, và Jenkins sử dụng chỉ thị parallel. Mức độ chia phù hợp phụ thuộc vào dự án: quá nhiều job song song gây lãng phí thời gian khởi động runner, quá ít thì bỏ phí tài nguyên.
Thực thi có điều kiện bỏ qua các stage không cần thiết. Cả ba nền tảng đều hỗ trợ: GitHub Actions với biểu thức if, GitLab CI với rules, và Jenkins với chỉ thị when. Pipeline được thiết kế tốt sẽ bỏ qua stage deployment trên feature branch và bỏ qua thay đổi chỉ liên quan đến lint để không kích hoạt toàn bộ test suite.
Bảo Mật Pipeline CI/CD và Bảo Vệ Supply Chain
Các cuộc tấn công supply chain nhắm vào hệ thống CI/CD gia tăng đáng kể trong năm 2025, với các sự cố ảnh hưởng đến tj-actions/changed-files và các GitHub Actions phổ biến khác. Câu hỏi phỏng vấn hiện nay thường xuyên kiểm tra ứng viên về chiến lược củng cố bảo mật.
Ghim phiên bản action theo commit SHA cụ thể thay vì tag để ngăn chặn tấn công tag-hijacking:
# .github/workflows/secure.yml
steps:
# Vulnerable: tag can be moved to malicious commit
- uses: actions/checkout@v4
# Secure: pinned to exact commit SHA
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683GitLab CI giải quyết vấn đề supply chain thông qua CI/CD components với chứng nhận SLSA Level 1 (có sẵn từ GitLab 18.1), cung cấp nguồn gốc rõ ràng hơn khi lắp ráp pipeline từ các component tái sử dụng. Tag container bất biến (GitLab 18.2) ngăn chặn việc thay thế image sau khi đã xuất bản.
Với Jenkins, cơ chế Shared Library nên sử dụng repository chuyên dụng với branch protection, yêu cầu code review và signed commit. Ủy ban Châu Âu khởi động Chương trình Bug Bounty cho Jenkins thông qua YesWeHack, phản ánh vai trò quan trọng của nền tảng này trong supply chain doanh nghiệp.
So Sánh Đa Nền Tảng Để Chuẩn Bị Phỏng Vấn
| Tính năng | GitHub Actions | GitLab CI | Jenkins |
|---|---|---|---|
| File cấu hình | .github/workflows/*.yml | .gitlab-ci.yml | Jenkinsfile |
| Mô hình thực thi | Dựa trên job với parallel steps | Dựa trên stage (stage tuần tự) | Dựa trên stage (linh hoạt) |
| Runner hosting | GitHub-hosted + self-hosted | GitLab.com shared + self-hosted | Chỉ self-hosted |
| Lưu trữ secret | Secret repository/org/environment | Secrets Manager + CI/CD variable | Plugin Credentials |
| Matrix build | strategy.matrix | parallel:matrix | matrix (plugin) |
| Cổng thủ công | environment + required reviewers | when: manual | Chỉ thị input |
| Marketplace | 20.000+ Actions trên Marketplace | CI/CD Components Catalog | 1.800+ plugin |
| Tính năng AI | Copilot for Actions | Duo CI Expert Agent | Plugin cộng đồng |
| Giá | Miễn phí cho repo công khai, tính theo phút cho riêng tư | 400 phút CI/CD miễn phí, sau đó theo bậc | Miễn phí (mã nguồn mở), tự quản lý |
Bảng so sánh này bao gồm những điểm khác biệt thường được kiểm tra nhất trong phỏng vấn. Câu hỏi tiếp theo thường là: "Nền tảng nào sẽ được chọn cho dự án mới, và tại sao?" Câu trả lời phụ thuộc vào công cụ hiện có, quy mô đội ngũ, yêu cầu tuân thủ, và việc tổ chức ưu tiên hạ tầng quản lý (GitHub/GitLab) hay kiểm soát toàn diện (Jenkins).
Nguồn Tham Khảo
- Actions steps can now be run in parallel (GitHub Changelog, tháng 6 năm 2026)
- GitLab 19.0 release notes (GitLab Docs, tháng 5 năm 2026)
- GitLab 19.2 release notes (GitLab Docs, tháng 7 năm 2026)
- Jenkins Changelog (Jenkins.io, tháng 8 năm 2026)
- GitHub Actions 2026 Security Roadmap (GitHub Blog)
Luyện tập các câu hỏi này thực tế với module phỏng vấn CI/CD fundamentals và GitHub Actions, hoặc tìm hiểu sâu hơn về câu hỏi cụ thể cho GitLab CI và Jenkins. Để chuẩn bị DevOps toàn diện hơn, hướng dẫn câu hỏi phỏng vấn DevOps thiết yếu bao gồm đầy đủ các chủ đề ngoài CI/CD.
Bắt đầu luyện tập!
Kiểm tra kiến thức với mô phỏng phỏng vấn và bài kiểm tra kỹ thuật.
Điểm Chính Cho Phỏng Vấn CI/CD Pipeline
- GitHub Actions parallel steps (
background,wait-all,parallel) ra mắt vào tháng 6 năm 2026, cho phép thực thi đồng thời trong một job duy nhất với việc chia sẻ runner, checkout và workspace - GitLab 19.x giới thiệu Secrets Manager native (open beta, tháng 5 năm 2026) và đưa chính sách thực thi pipeline theo lịch trình vào trạng thái generally available (tháng 7 năm 2026), giảm sự phụ thuộc vào công cụ bên ngoài
- Jenkins 2.574+ unbundle các plugin cốt lõi bao gồm JUnit và Mailer khỏi file WAR, yêu cầu cài đặt rõ ràng cho các instance không có quyền truy cập update center
- Quản lý secret là chủ đề bảo mật được kiểm tra nhiều nhất trên cả ba nền tảng: cần thể hiện kiến thức về scoped secret, protected variable và chiến lược xoay vòng credential
- Tối ưu pipeline thông qua caching, thực thi song song và thực thi có điều kiện áp dụng được trên mọi nền tảng và cho thấy kinh nghiệm sản xuất thực tế với nhà tuyển dụng
- Chuẩn bị ít nhất một cấu hình pipeline hoạt động cho mỗi nền tảng, tập trung vào các mẫu thực tế thay vì ví dụ đơn giản
Bắt đầu luyện tập!
Kiểm tra kiến thức với mô phỏng phỏng vấn và bài kiểm tra kỹ thuật.
Bạn có tìm ra lỗi trong DevOps không?
Một đoạn mã thật, một lỗi ẩn, mỗi ngày một lượt. Không cần tài khoản để thử.

Viết bởi
Anthony Fillion-MailletNgười sáng lập SharpSkill
Lập trình viên fullstack hơn 10 năm. Anh điều hành SharpSkill và chịu trách nhiệm về mọi nội dung đăng tại đây.
Cập nhật ngày 24 tháng 8, 2026
Thẻ
Chia sẻ
Bài viết liên quan

Bảo mật Pipeline DevOps 2026: Thực tiễn DevSecOps và Câu hỏi Phỏng vấn
Hướng dẫn toàn diện về bảo mật pipeline DevOps năm 2026, bao gồm các thực tiễn tốt nhất DevSecOps, triển khai CI/CD an toàn, và câu hỏi phỏng vấn kỹ thuật để chuẩn bị sự nghiệp.

Câu hỏi Phỏng vấn DevOps Thiết yếu: Hướng dẫn Đầy đủ 2026
Chuẩn bị phỏng vấn DevOps với những câu hỏi bắt buộc về CI/CD, Kubernetes, Docker, Terraform và các thực tiễn SRE. Có câu trả lời chi tiết.

ArgoCD và GitOps cho Kubernetes: Hướng dẫn triển khai liên tục và câu hỏi phỏng vấn 2026
Tìm hiểu cách sử dụng ArgoCD để triển khai GitOps trên Kubernetes. Bài viết bao gồm cấu hình Application, Sync Waves, ApplicationSet và các câu hỏi phỏng vấn thường gặp.