Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • GitLab Only/Except và When

    🔥 Anh em DevOps/Automation chắc chắn sẽ gặp tình huống cần kiểm soát job trong GitLab CI/CD: chỉ chạy ở nhánh main, hoặc ngược lại, chỉ chạy khi build fail để cleanup môi trường.

    GitLab CI cung cấp 2 “vũ khí” mạnh mẽ để điều khiển pipeline: only/exceptwhen.
    ✅ GitLab CI: Only và Except
    • only: job chỉ chạy trên những refs (nhánh, tag, pipeline type) được khai báo.
    • except: job chạy trên mọi nơi ngoại trừ refs được khai báo.
    • Hỗ trợ Regex để match tên nhánh hoặc tag.

    Ví dụ:
    deploy: only: refs: - main
    👉 Job deploy chỉ chạy khi merge vào nhánh main.
    Bạn có thể mở rộng ra nhiều refs khác như devel, schedules…
    ✅ GitLab CI: When


    Từ khóa when cho phép định nghĩa điều kiện thực thi job:
    • on_success → chạy khi job trước đó thành công (mặc định).
    • on_failure → chạy khi job trước đó fail.
    • always → chạy bất kể kết quả ra sao.
    • manual → job thủ công (thường dùng cho deploy production).
    • delayed → chạy sau một khoảng delay.

    Ví dụ cleanup khi build fail:
    cleanup_build_job: stage: cleanup_build script: - cleanup build on fail when: on_failure
    ✅ Kết hợp tất cả trong .gitlab-ci.yml

    stages: - build - cleanup_build - test - deploy - cleanup build_job: before_script: make setup stage: build script: - make build cleanup_build_job: stage: cleanup_build script: - cleanup build on fail when: on_failure test_job: before_script: make setup stage: test script: - make test after_script: make cleanup_test deploy_job: stage: deploy script: - make deploy only: - main cleanup_job: stage: cleanup script: - cleanup after jobs when: always
    Ở đây:
    • build_job chạy bình thường.
    • Nếu build_job fail → cleanup_build_job sẽ chạy.
    • deploy_job chỉ chạy khi branch là main.
    • cleanup_job luôn chạy cuối pipeline để dọn môi trường.


    🎯 Key takeaway:
    • Dùng only/except để kiểm soát phạm vi chạy job.
    • Dùng when để kiểm soát điều kiện chạy job.


    Câu hỏi ôn tập
    Tệp nào định nghĩa pipeline trong GitLab CI/CD?

    👉 Đáp án đúng: .gitlab-ci.yml
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X