Concourse là gì?

Concourse là mã nguồn mở về CI/CD.

Vì đây là mã nguồn mở nên người phát triển có thể custom về bộ core CI/CD theo ý muốn. Và Concourse được xây dựng trên cơ chế đơn giản về resourcestasks và jobs. Việc sử dụng Concourse là một cách tiếp cận về  CI/CD tuyệt vời.

Configuration như Code

Bạn có thể hiểu  pipeline như một Makefile phân tán, cấp cao hơn, chạy liên tục.

Mỗi mục trong resource là một phụ thuộc và mỗi mục trong các job mô tả một plan để chạy khi công việc được kích hoạt (bằng tay hoặc bằng một step có được).

Việc làm có thể phụ thuộc vào các nguồn lực đã passed các công việc trước đó. Chuỗi kết quả của công việc và tài nguyên là một biểu đồ phụ thuộc liên tục thúc đẩy dự án của bạn tiến lên, từ source code đến production.

HIển thị hoạt động

Cấu hình pipeline của bạn sau đó được hiển thị trong giao diện người dùng web, chỉ cần một cú nhấp chuột để nhận được từ hộp màu đỏ (thất bại) để xem tại sao nó thất bại.

Hiển thị hoạt động cũng cung cấp một vòng phản hồi “gut check” – nếu nó có vẻ sai, có lẽ nó đã sai.

Kiểm soát mã nguồn CI

Tất cả quản trị được thực hiện bằng cách sử dụng Fly CLI. Lệnh fly set-pipeline đẩy cấu hình lên tới Concourse. Khi nó trông ổn, bạn có thể kiểm tra file để kiểm soát nguồn. Điều này giúp dễ dàng khôi phục nếu máy chủ Concourse của bạn bị down.

Reproducible, Debuggable Builds

Tất cả mọi thứ chạy trong container, đảm bảo một môi trường sạch sẽ trên mỗi lần chạy. Mỗi task chỉ định image riêng của nó, cho nó toàn quyền kiểm soát các dependencies, thay vì quản lý chúng trên các workers.

fly intercept sẽ đưa bạn vào một trong các build của các containers, có thể hữu ích cho việc debugging.

Lặp lại cục bộ nhanh chóng

The fly execute command executes a task as a one-off build, with your local changes. This will run your code in exactly the same way it would run in your pipeline, without you having to repeatedly push broken commits until it works. Achieve the fabled green build #1!

When a job fails, you can also use fly execute with -jflag to run with the same inputs as the failed job. You can then replace an input with your local changes with -i to test if your fix is valid.

Lệnh fly execute thực thi một task như một bản dựng một lần, với các thay đổi cục bộ của bạn. Điều này sẽ chạy code của bạn theo cách chính xác giống như cách nó sẽ chạy trong pipeline của bạn, mà bạn không phải liên tục đẩy các commit bị hỏng cho đến khi nó hoạt động. Đạt được huyền thoại build màu xanh #1!

Khi một job thất bại, bạn cũng có thể sử dụng fly execute với cờ-j để chạy với cùng các inputs như failed job. Bạn có thể thay thế một input bằng các thay đổi local của bạn bằng -i để kiểm tra xem bản sửa lỗi của bạn có hợp lệ không.

Mang lại tích hợp của riêng bạn

Concourse không có một hệ thống plugin phức tạp. Thay vào đó, nó có một sự trừu tượng mạnh mẽ duy nhất.

Phần resources của một pipeline liệt kê các Resources , là các vị trí bên ngoài trừu tượng nơi pipeline của bạn sẽ theo dõi các thay đổi, tìm nạp từng chút từ và đẩy từng chút đến.

Ví dụ, một resource với kiểu git tham chiếu đến git repository, resource này sẽ được clone trong một get steppush đến trong put step. Đằng sau hậu trường, Concourse sẽ liên tục run git fetch để tìm kiếm các commit mới mà các jobs có thể muốn trigger.

Về cốt lõi, Concourse không biết gì về Git. Nó đi kèm với một loại resource git ra khỏi hộp, nhưng bạn có thể dễ dàng đưa chính bạn vào pipeline của bạn. Các loại resource được triển khai dưới dạng image chứa các scripts – sử dụng docker-image, chúng có thể được tìm nạp từ Docker registry.

Site Footer

Sliding Sidebar

About Me

About Me

Hello, my name is Dũng (Johnny). Welcome to my blog.

As I’m a developer, I write about topics related to the field of programming, mainly from a technical point of view. On this blog you’ll find posts which encourage discussion, information about development trends, case studies, reviews, tutorials, tips on how to improve your effectiveness, and anything else that might be fascinating to people from the IT industry.

  • http://lcdung.top/about/
  • Mail: ledung@8bitbase.com

Time line