Buildkite

chính thức

Quản lý các pipeline và bản build của Buildkite.

Bạn có thể làm gì với Buildkite MCP?

  • So sánh các bản build để tìm ra sự hồi quy — Hỏi "Điều gì đã thay đổi kể từ khi bản build này hoạt động tốt trên nhánh main?" bằng cách sử dụng compare_builds với org_slug, pipeline_slugbuild_number.
  • Điều tra các công việc thất bại bằng nhật ký — Sử dụng get_build_failure_summary hoặc tail_logs để kiểm tra các mục nhật ký cho các bước mới thất bại hoặc vẫn đang thất bại sau khi so sánh.
  • Ghim một mốc cơ sở cụ thể để so sánh — Cung cấp baseline_build_number để so sánh với một bản build cụ thể, bao gồm cả những bản thất bại hoặc các bản build trên nhánh khác.
  • Hiểu cách khớp công việc và thời gian — Nhận chi tiết về cách các công việc được khớp (qua khóa bước hoặc dự phòng theo tên) và xem chênh lệch thời gian thực thi từ scheduled_at đến started_at.

Tài liệu

buildkite-mcp-server

Build status

Giao thức Ngữ cảnh Mô hình (MCP) máy chủ cung cấp dữ liệu Buildkite (pipelines, builds, jobs, tests) cho các công cụ và trình soạn thảo AI.

Tài liệu đầy đủ có tại buildkite.com/docs/apis/mcp-server.


So sánh các bản build

Công cụ compare_builds chỉ đọc trong bộ công cụ investigations trả lời các câu hỏi như "Điều gì đã thay đổi kể từ khi bản build này hoạt động thành công lần cuối trên main?" Cung cấp org_slug, pipeline_slugbuild_number mục tiêu. Công cụ này chọn bản build trước đó được tạo gần nhất hiện đang vượt qua trên cùng pipeline và chính xác nhánh. Nó không yêu cầu rằng đường cơ sở đã vượt qua khi mục tiêu bắt đầu. Cung cấp baseline_build_number để so sánh với một bản build cụ thể trong pipeline đó, bao gồm cả bản build thất bại hoặc bản build trên nhánh khác.

Phản hồi xác định đường cơ sở và quy tắc lựa chọn, đếm kết quả trên tất cả các job và trả về tối đa 100 so sánh job, ưu tiên các bước mới thất bại, đã phục hồi và vẫn đang thất bại. Việc khớp sử dụng khóa bước, loại job, giá trị ma trận và chỉ mục/tổng song song. Khi cả hai job thiếu khóa, nó dự phòng sang tên không trống chính xác cộng với loại, khóa nhóm, giá trị ma trận và chỉ mục/tổng song song, chỉ khi tổ hợp đó là duy nhất trong mỗi bản build. Các cặp khớp hiển thị match_method: "step_key" hoặc "name_fallback"; các khớp dự phòng mang cảnh báo rằng chúng mang tính heuristic. Các job không tên, không khóa và danh tính trùng lặp vẫn không khớp. Các khóa rõ ràng không bao giờ dự phòng sang tên, ngay cả khi khóa được thêm, xóa hoặc thay đổi giữa các bản build. Được thêm/xóa nghĩa là danh tính job chỉ xuất hiện trong một bản build, vì vậy việc đổi tên các job không khóa hoặc thay đổi giá trị ma trận hoặc mức song song cũng có thể tạo ra các mục được thêm/xóa. Các lần thử lại bị loại trừ; trạng thái lần thử cuối và số lần thử lại vẫn hiển thị.

Thời gian thực thi và chênh lệch chỉ bao gồm các lần thử cuối. Thời gian lập lịch là scheduled_at đến started_at, không phải thời gian chờ phụ thuộc hoặc chờ thủ công. Đây không phải là so sánh thời gian tường của bản build hoặc tổng chi phí thử lại. Dấu thời gian thiếu hoặc không nhất quán sẽ bỏ qua thời gian tương ứng. Các bản build chưa hoàn thành được xác định rõ ràng là các ảnh chụp đang thay đổi.

Các chuyển đổi giữa lỗi mềm và lỗi cứng được báo cáo là state_changed, ngay cả khi cả hai job có trạng thái failed. Một bản build đường cơ sở đã vượt qua có thể chứa các job lỗi mềm.

Theo mặc định, tối đa ba job mới thất bại bao gồm 20 mục nhật ký cuối cùng của chúng, giới hạn ở 8 KiB nội dung nhật ký mỗi job. Đặt include_logs: false để bỏ qua nhật ký. Lỗi nhật ký không loại bỏ so sánh, ngoại trừ lỗi xác thực HTTP 401, lỗi này lan truyền qua đường dẫn xác thực lại của máy chủ. Công cụ yêu cầu phạm vi read_buildsread_build_logs. Sử dụng get_build_failure_summary hoặc tail_logs để điều tra thêm; một bước thất bại dùng chung không thiết lập nguyên nhân gốc dùng chung hoặc làm cho việc thử lại an toàn.

Việc khám phá đường cơ sở tìm kiếm tối đa 500 ứng viên. Nếu không tìm thấy, phản hồi cho biết không có so sánh nào được thực hiện và yêu cầu một đường cơ sở rõ ràng. Kiểm kê job được giới hạn ở 1.000 job mỗi bản build; kiểm kê lớn hơn trả về lỗi thay vì kết quả thêm/xóa một phần gây hiểu lầm. Các thiếu sót đầu ra được báo cáo riêng biệt với số lượng kết quả hoàn chỉnh.


Sử dụng Thư viện

API Go được xuất khẩu của mô-đun này nên được coi là không ổn định và có thể thay đổi phá vỡ khi chúng tôi phát triển dự án này.


Bảo mật

Để đảm bảo máy chủ MCP được chạy trong môi trường an toàn, chúng tôi khuyên bạn nên chạy nó trong một container.

Hình ảnh này được xây dựng từ cgr.dev/chainguard/static và chạy như một người dùng không có đặc quyền.

Chuyển tiếp tiêu đề danh tính qua chế độ HTTP

Các triển khai HTTP tự lưu trữ có thể chuyển tiếp các tiêu đề đã chọn từ mỗi yêu cầu MCP đến API Buildkite:

BUILDKITE_API_TOKEN=bkua_xxx \
  buildkite-mcp-server http \
  --passthrough-http-header X-User-Identity

Lặp lại --passthrough-http-header để cho phép nhiều hơn một tiêu đề hoặc đặt giá trị BUILDKITE_PASSTHROUGH_HTTP_HEADERS phân tách bằng dấu phẩy. Chỉ các tiêu đề được cho phép rõ ràng mới được chuyển tiếp và chỉ đến nguồn gốc được cấu hình bởi BUILDKITE_BASE_URL. Chúng bị xóa khỏi các yêu cầu được chuyển hướng đến nơi khác.

Để xác thực mỗi yêu cầu MCP bằng mã thông báo API Buildkite riêng của nó, cho phép Authorization và bỏ qua mã thông báo toàn quy trình:

BUILDKITE_PASSTHROUGH_HTTP_HEADERS=Authorization \
  buildkite-mcp-server http

Trong chế độ này, mỗi yêu cầu /mcp phải chứa chính xác một tiêu đề Authorization không trống. Thiếu thông tin xác thực trả về HTTP 401; máy chủ không bao giờ dự phòng sang mã thông báo API dùng chung. Proxy ngược phía trước máy chủ MCP chịu trách nhiệm xác thực người gọi và đặt hoặc xác minh bất kỳ tiêu đề danh tính được chuyển tiếp nào.

Chuyển tiếp tiêu đề không khả dụng trong chế độ stdio. Trước khi phục vụ nhật ký job, máy chủ xác minh rằng người gọi hiện tại có thể truy cập nhật ký job. Kiểm tra này được thực hiện cho mọi yêu cầu công cụ nhật ký, bao gồm cả khi dữ liệu nhật ký đã được lưu trong bộ nhớ đệm.


Đóng góp

Hướng dẫn phát triển có trong DEVELOPMENT.md.


Giấy phép

MIT © Buildkite

SPDX-License-Identifier: MIT