Trước hết, tính đến hôm nay, GitLab Community Edition có thể tương thích hoàn toàn với Jenkins. Không có câu hỏi.
Trong phần tiếp theo, tôi đưa ra một số phản hồi về trải nghiệm thành công khi kết hợp cả Jenkins và GitLab CI. Tôi cũng sẽ thảo luận về việc bạn nên sử dụng cả hai hoặc chỉ một trong số họ, và vì lý do gì.
Tôi hy vọng điều này sẽ cung cấp cho bạn thông tin chất lượng về các dự án của riêng bạn.
Điểm mạnh của GitLab CI và Jenkins
GitLab CI
GitLab CI được tích hợp tự nhiên trong GitLab SCM. Bạn có thể tạo đường ống bằng gitlab-ci.yml
các tệp và thao tác chúng thông qua giao diện đồ họa.
Các đường ống dưới dạng mã rõ ràng có thể được lưu trữ trong cơ sở mã, thực thi thực hành "mọi thứ như mã" (truy cập, phiên bản, độ tái lập, khả năng sử dụng lại, v.v.).
GitLab CI là một công cụ quản lý hình ảnh tuyệt vời:
- tất cả các thành viên của các nhóm (bao gồm cả những người không có kỹ thuật) có quyền truy cập nhanh chóng và dễ dàng vào trạng thái vòng đời của ứng dụng.
- do đó, nó có thể được sử dụng như một bảng điều khiển tương tác và vận hành để quản lý phát hành.
Jenkins
Jenkins là một công cụ xây dựng tuyệt vời. Sức mạnh của nó nằm ở nhiều plugin. Đặc biệt, tôi đã rất may mắn khi sử dụng các plugin giao diện giữa Jenkins và các công cụ CI hoặc CD khác. Đây luôn là một lựa chọn tốt hơn là phát triển lại (có thể là xấu) giao diện hộp thoại giữa hai thành phần.
Đường ống dưới dạng mã cũng có sẵn bằng cách sử dụng groovy
các tập lệnh.
Sử dụng GitLab CI và Jenkins cùng nhau
Thoạt nghe có vẻ hơi dư thừa, nhưng kết hợp GitLab CI và Jenkins khá mạnh mẽ.
- Các đường ống GitLab CI (chuỗi, chạy, giám sát ...) và người ta có thể hưởng lợi giao diện đồ họa của nó được tích hợp với GitLab
- Jenkins điều hành công việc và tạo điều kiện cho hộp thoại với các công cụ của bên thứ ba.
Một lợi ích khác của thiết kế này là có khớp nối lỏng lẻo giữa các công cụ:
- chúng tôi có thể thay thế bất kỳ thành phần nào của nhà máy xây dựng mà không phải làm lại toàn bộ quy trình CI / CD
- chúng ta có thể có một môi trường xây dựng không đồng nhất, kết hợp (có thể một vài) Jenkins, TeamCity, bạn đặt tên cho nó và vẫn có một công cụ giám sát duy nhất.
Sự đánh đổi
Tất nhiên, có một cái giá phải trả cho thiết kế này: thiết lập ban đầu rất cồng kềnh và bạn cần có mức độ hiểu biết tối thiểu về nhiều công cụ.
Vì lý do này, tôi không khuyên bạn nên thiết lập như vậy trừ khi
- bạn có nhiều công cụ của bên thứ ba để giải quyết. Đó là khi Jenkins trở nên siêu tiện dụng với nhiều plugin.
- bạn phải đối phó với các ứng dụng phức tạp với các công nghệ không đồng nhất, có mỗi môi trường xây dựng khác nhau và vẫn cần phải có giao diện người dùng quản lý vòng đời ứng dụng thống nhất.
Nếu bạn không ở trong cả hai tình huống này, có lẽ bạn tốt hơn chỉ với một trong hai, nhưng không phải cả hai.
Nếu tôi phải chọn một
Cả GitLab CI và Jenkins đều có ưu và nhược điểm. Cả hai đều là công cụ mạnh mẽ. Vậy nên chọn cái nào?
trả lời 1
Chọn một nhóm mà nhóm của bạn (hoặc ai đó thân thiết) đã có trình độ chuyên môn nhất định.
Trả lời 2
Nếu bạn hoàn toàn là sinh viên năm nhất về công nghệ CI, chỉ cần chọn một và bắt đầu.
- Nếu bạn đang sử dụng GitLab và có sở trường về mọi thứ dưới dạng mã, sẽ hoàn toàn hợp lý khi chọn GitLab CI.
- Nếu bạn phải đối thoại với nhiều công cụ CI / CD khác hoặc hoàn toàn cần GUI đó để xây dựng công việc của bạn, hãy tìm Jenkins.
Những người bạn đang sử dụng GitLab và không chắc họ sẽ tiếp tục làm như vậy vẫn phải ghi nhớ rằng, việc chọn GitLab CI sẽ ám chỉ rác tất cả các đường ống CI / CD của bạn.
Lời cuối cùng là: cán cân nghiêng một chút chút về phía Jenkins vì nhiều plugin của nó, nhưng rất có thể là GitLab CI sẽ nhanh chóng lấp đầy khoảng trống.