Pipeline trước đây được dùng để chỉ một tập hợp các đối tượng xử lí dữ liệu được sắp xếp thành một chuỗi xử lí. Mỗi đối tượng xử lí sẽ nhận dữ liệu input từ các đối tượng trước và output sẽ được gửi đến đối tượng xử lí kế tiếp. Do có tính chất nối tiếp nhau – output của đối tượng trước là input của đối tượng sau – nên tập hợp những đối tượng này thường được gọi là một pipeline.

Các đối tượng có thể là CPU (với các Instruction pipeline), GPU (với các Graphics pipeline), hay chỉ đơn giản là các dòng lệnh (với các Software pipeline).

Thêm vào đó, với việc triển khai CI/CD đang được sử dụng ngày một nhiều, khái niệm CI/CD pipeline ra đời và trở thành một trong những phần quan trọng nhất trong CI/CD.

  • CI – Viết tắt của Continous Integration – là một cách triển khai project, trong đó các developer sẽ triển khai liên tục các công việc lên một hệ thống quản lí quy trình phát triển của project.
  • CD – Viết tắt của Continuous Delivery – là cách mà hệ thống quản lí đó triển khai và vận hành.
  • CI/CD pipeline là một tiến trình cho phép một team phát triển có thể triển khai project một cách tự động và hiệu quả. Tiến trình xây dựng code, test và triển khai phiên bản mới sẽ đảm bảo việc xảy ra lỗi ít hơn, phản hồi nhanh cho các developer và tăng tốc độ triển khai product.

GitHub hosts lưu trữ hơn 200 triệu kho lưu trữ (repositories) và trong 11 năm kể từ khi thành lập, các nhà phát triển chỉ có thể tạo CI / CD pipelines bằng cách sử dụng các công cụ của bên thứ ba, chẳng hạn như Travis CICircleCI. Quy trình bên ngoài này đã thay đổi vào tháng 11 năm 2019, khi GitHub thông báo ra mắt GitHub Actions. GitHub Actions là một công cụ CI / CD được tích hợp trực tiếp vào mọi kho lưu trữ GitHub, sử dụng các tệp cấu hình dựa trên văn bản nằm trực tiếp trong kho lưu trữ.

Khái niệm gốc trong GitHub Actions là một workflow (quy trình làm việc) hoặc một loạt các thủ tục tự động. Trên thực tế, một workflow tương tự như một pipeline và cho phép các nhà phát triển định cấu hình một loạt các giai đoạn có thể được thực thi mỗi khi một sự kiện cụ thể được kích hoạt. Mỗi kho lưu trữ có thể có bất kỳ số lượng workflow nào và mỗi workflow bao gồm các thành phần (components) sau:

ComponentMô tả
JobMột tập hợp các bước được thực hiện trên cùng một runner. Theo mặc định, nếu một workflow có nhiều hơn một công việc, các công việc sẽ được thực thi song song, nhưng các công việc có thể được cấu hình để chạy theo chuỗi bằng cách khai báo rằng một công việc phụ thuộc vào một công việc khác. Nếu công việc B phụ thuộc vào công việc A, thì công việc B sẽ chỉ thực hiện nếu công việc A hoàn thành thành công.
StepMột tác vụ (task) bao gồm một hoặc nhiều lệnh hoặc hành động. Tất cả các bước của một công việc được thực hiện trên cùng một runner và do đó, có thể chia sẻ dữ liệu với nhau.
ActionMột tập hợp các thủ tục (procedures) được đóng gói sẵn (A prepackaged set) có thể được thực hiện trong một bước. Có rất nhiều hành động đã có sẵn thông qua cộng đồng GitHub để thực hiện các tác vụ phổ biến, chẳng hạn như kiểm tra mã hoặc tải lên các artifacts (Artifact – Tạo tác là bất kỳ thứ gì được tạo ra để có thể phát triển một phần mềm như mô hình dữ liệu, sơ đồ, tập lệnh thiết lập…).
EventMột sự kiện kích hoạt việc thực hiện một workflow.   Một trong những sự kiện phổ biến nhất là người dùng đăng ký mã vào kho lưu trữ.
RunnerMáy chủ (server) thực thi công việc trên một Hệ điều hành (OS) hoặc nền tảng (platform) cụ thể. Runner có thể được lưu trữ bởi GitHub hoặc trên các máy chủ độc lập.

Mối quan hệ giữa các thành phần này được minh họa dưới đây:

Trên thực tế, workflow được khái quát hơn so với CD pipline, nhưng chúng có liên quan chặt chẽ với nhau:

  • Workflows = pipelines
  • Jobs = stages (giai đoạn)
  • Steps = các bước hay thủ tục tạo nên một stage

Tham khảo