0

Series Làm chủ Bitbucket | Bài 3: Bitbucket Pipelines - "Trọng tài" tự động hóa quy trình CI

Tại sao phải đợi đồng nghiệp nhắc "Bạn quên chạy Test kìa" rồi mới chạy? Bitbucket Pipelines sẽ đóng vai trò là một "trọng tài" không bao giờ ngủ. Ngay khi bạn tạo Pull Request, nó sẽ tự động kích hoạt một môi trường ảo, cài đặt dependencies, chạy Unit Test và báo cáo kết quả ngay trong trang Pull Request của bạn. Nếu Test không qua (fail), nút Merge sẽ bị khóa chặt.

1. File cấu hình bitbucket-pipelines.yml

Tất cả sự kỳ diệu của Pipelines nằm ở một file duy nhất đặt tại thư mục gốc của dự án: bitbucket-pipelines.yml.

Ví dụ, đối với một dự án Laravel/PHP, đây là cách bạn cấu hình để tự động chạy test:

image: php:8.2

pipelines:
  branches:
    develop: # Chạy trên nhánh develop
      - step:
          name: "Chạy Test cho hệ thống AFC"
          caches:
            - composer
          script:
            - apt-get update && apt-get install -y unzip libzip-dev # Cài đặt cần thiết
            - docker-php-ext-install zip
            - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
            - composer install --no-interaction --prefer-dist
            - php artisan test # Lệnh thần thánh chạy toàn bộ Unit/Feature Test

2. Quy trình "tự động" trong Pull Request

Khi bạn push code lên branch feature/xxx, Pipelines sẽ:

  1. Trigger: Tự động phát hiện thay đổi và kích hoạt Pipeline.
  2. Setup: Tự tạo một Docker Container với môi trường PHP 8.2 (như khai báo).
  3. Execution: Cài đặt thư viện và chạy php artisan test.
  4. Report:
  • Nếu xanh (Pass): Bitbucket hiện dấu tích xanh trên PR.
  • Nếu đỏ (Fail): Bitbucket hiện dấu X đỏ, ngăn không cho merge.

3. Tại sao Kỹ sư Hệ thống cần Pipelines?

  • "Code sạch" trước khi đến tay người review: Người review code chỉ cần tập trung vào logic, không cần tốn thời gian chạy test xem code có bị crash không.
  • Đảm bảo tính nhất quán: Bạn không bao giờ gặp trường hợp "Máy tôi chạy được mà sao trên máy ông thì lỗi". Môi trường của Pipelines là cố định (Container), nên kết quả test là duy nhất.
  • Tiết kiệm thời gian: Với hệ thống phức tạp như AFC/Metro, mỗi lần merge code mà không có Pipeline, rủi ro làm chết các module khác là cực lớn. Pipeline giúp bạn phát hiện sớm (Fail Fast).

4. Mẹo nhỏ: Giảm thời gian chờ đợi

Việc cài lại composer mỗi lần chạy pipeline rất tốn thời gian. Hãy dùng tính năng Caches của Bitbucket:

caches:
  - composer

Dòng này giúp Bitbucket lưu lại các thư viện đã tải, giúp Pipeline của bạn từ 5 phút xuống còn 30 giây!

Bài tập cho bạn: Hãy thử tạo file bitbucket-pipelines.yml tại root dự án, sau đó đẩy lên Bitbucket. Bạn sẽ thấy ngay một tab "Pipelines" hiện ra trong menu bên trái – đó là nơi bạn theo dõi toàn bộ "sức khỏe" của source code.v


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí