🔥 Khi anh em DevOps/Automation nói về GitLab CI/CD, gần như mọi thứ đều xoay quanh script và stages – đây là “trái tim” của pipeline. Nếu nắm chắc 3 khái niệm này: script, stages, before_script/after_script, thì anh em đã đi được nửa chặng đường làm chủ GitLab CI.
1️⃣ Script – linh hồn của job
Ví dụ:
job1: stage: build script: "python run.py" job2: stage: test script: - uname -a - python --version - python verify_script.py
👉 Runner sẽ chạy tuần tự từng lệnh, giống như anh em gõ trực tiếp trong terminal.
2️⃣ Stages – pipeline chạy theo nhịp
Ví dụ:
stages: - build - test - deploy
Ngoài ra GitLab CI có 2 stage đặc biệt:
3️⃣ Before và After Script – setup & cleanup tự động
Ví dụ:
default: before_script: - echo "Global setup" job: stage: test before_script: - echo "Custom setup" script: - echo "Running test" after_script: - echo "Cleanup..."
📌 Chốt lại cho anh em DevOps:
1️⃣ Script – linh hồn của job
- Trong GitLab CI, script là keyword bắt buộc duy nhất trong mỗi job.
- Đây chính là tập lệnh mà runner sẽ thực thi.
- Có thể viết trên một dòng hoặc một mảng nhiều dòng.
- Nếu lệnh nào exit code ≠ 0, job sẽ fail ngay lập tức và dừng.
Ví dụ:
job1: stage: build script: "python run.py" job2: stage: test script: - uname -a - python --version - python verify_script.py
👉 Runner sẽ chạy tuần tự từng lệnh, giống như anh em gõ trực tiếp trong terminal.
2️⃣ Stages – pipeline chạy theo nhịp
- Jobs được gom nhóm bằng keyword stage.
- Các stage chạy theo thứ tự định nghĩa trong stages: (ví dụ: build → test → deploy).
- Trong cùng một stage, nhiều job có thể chạy song song.
- Nếu một job trong stage fail → pipeline dừng tại stage đó.
Ví dụ:
stages: - build - test - deploy
Ngoài ra GitLab CI có 2 stage đặc biệt:
- .pre: luôn chạy đầu tiên.
- .post: luôn chạy cuối cùng.
3️⃣ Before và After Script – setup & cleanup tự động
- Dùng để khai báo lệnh trước và sau script.
- before_script: giúp chuẩn bị môi trường (setup package, export biến, login container registry…).
- after_script: chạy cleanup, luôn được thực thi kể cả khi job fail.
- Có thể khai báo toàn cục bằng default: hoặc override riêng trong từng job.
Ví dụ:
default: before_script: - echo "Global setup" job: stage: test before_script: - echo "Custom setup" script: - echo "Running test" after_script: - echo "Cleanup..."
📌 Chốt lại cho anh em DevOps:
- script là bắt buộc → chính là lệnh mà runner chạy.
- stages quyết định thứ tự pipeline và song song trong stage.
- before_script & after_script giúp tự động hóa setup & cleanup, giảm thao tác thủ công.