Tích hợp Jenkins Git - Hữu ích cho mọi DevOps Professional



Blog này thảo luận về việc tích hợp Git với Jenkins. Nó cũng thảo luận về những lợi thế của việc tích hợp Git với Jenkins cùng với bản demo.

chắc chắn là không đầy đủ nếu không có Jenkins. Jenkins cùng với Git là một sự kết hợp tuyệt vời. Vì vậy, trong bài viết này, tôi sẽ nói về Tích hợp Jenkins Git và những ưu điểm của nó. Các gợi ý mà chúng tôi sẽ đề cập như sau:

Vì vậy, chúng ta hãy bắt đầu với chủ đề đầu tiên của chúng tôi.





Git là gì - Tại sao Git Thừa hưởng sự tồn tại?

Tất cả chúng ta đều biết “Sự cần thiết là mẹ của mọi phát minh”. Tương tự, Git xuất hiện để đáp ứng một số nhu cầu cần thiết mà các nhà phát triển phải đối mặt trước Git. Vì vậy, chúng ta hãy lùi lại một bước để tìm hiểu tất cả về Hệ thống kiểm soát phiên bản (VCS) và cách Git ra đời.

Kiểm soát phiên bản là việc quản lý các thay đổi đối với tài liệu, chương trình máy tính, các trang web lớn và các bộ sưu tập thông tin khác.



Có hai loại VCS:

VCS tập trung

Hệ thống kiểm soát phiên bản tập trung (CVCS) sử dụng máy chủ trung tâm để lưu trữ tất cả các tệp và cho phép cộng tác nhóm. Nó hoạt động trên một kho lưu trữ duy nhất mà người dùng có thể truy cập trực tiếp vào máy chủ trung tâm.

Hãy tham khảo sơ đồ dưới đây để hiểu rõ hơn về CVCS:

Kho lưu trữ trong sơ đồ trên chỉ ra một máy chủ trung tâm có thể là cục bộ hoặc từ xa được kết nối trực tiếp với từng máy trạm của lập trình viên.

Mọi lập trình viên đều có thể trích xuất hoặc cập nhật máy trạm của họ với dữ liệu có trong kho lưu trữ. Họ cũng có thể thực hiện các thay đổi đối với dữ liệu hoặc cam kết vào kho lưu trữ. Mọi thao tác được thực hiện trực tiếp trên kho lưu trữ.

Mặc dù có vẻ khá thuận tiện để duy trì một kho lưu trữ duy nhất, nhưng nó có một số nhược điểm lớn. Một số trong số đó là:

  • Nó không khả dụng cục bộ có nghĩa là bạn luôn cần được kết nối với mạng để thực hiện bất kỳ hành động nào.

  • Vì mọi thứ đều được tập trung hóa nên trong mọi trường hợp máy chủ trung tâm gặp sự cố hoặc bị hỏng sẽ dẫn đến mất toàn bộ dữ liệu của dự án.

Đây là nơi VCS phân phối giải quyết vấn đề.

VCS phân phối

Các hệ thống này không nhất thiết phải dựa vào máy chủ trung tâm để lưu trữ tất cả các phiên bản của tệp dự án.Trong VCS phân tán, mọi người đóng góp đều có một bản sao cục bộ hoặc 'bản sao' của kho lưu trữ chính. Ở đây mọi người đều duy trì một kho lưu trữ cục bộ của riêng họ, chứa tất cả các tệp và siêu dữ liệu có trong kho lưu trữ chính.

Bạn sẽ hiểu rõ hơn khi tham khảo sơ đồ dưới đây:

Như bạn có thể thấy trong sơ đồ trên, mọi lập trình viên đều duy trì một kho lưu trữ cục bộ của riêng mình, đây thực sự là bản sao hoặc bản sao của kho lưu trữ trung tâm trên ổ cứng của họ. Họ có thể cam kết và cập nhật kho lưu trữ cục bộ của họ mà không có bất kỳ sự can thiệp nào.

Họ có thể cập nhật kho lưu trữ cục bộ của mình với dữ liệu mới từ máy chủ trung tâm bằng một thao tác gọi là “ kéo ”Và ảnh hưởng đến các thay đổi đối với kho lưu trữ chính bằng một thao tác có tên là“ đẩy ”Từ kho lưu trữ cục bộ của họ.

Bây giờ chúng ta hãy thử tìm hiểu về định nghĩa của Git.

  • Git là một công cụ kiểm soát phiên bản phân tán hỗ trợ các quy trình làm việc phi tuyến tính phân tán bằng cách cung cấp đảm bảo dữ liệu để phát triển phần mềm chất lượng. Các công cụ như Git cho phép giao tiếp giữa nhóm phát triển và nhóm vận hành.

  • Thông thường, khi bạn đang phát triển một dự án lớn, bạn có một số lượng lớn cộng tác viên. Vì vậy, việc giao tiếp giữa các cộng tác viên trong khi thực hiện các thay đổi trong dự án là rất quan trọng.

  • Các thông điệp cam kết trong Git đóng một vai trò rất quan trọng trong việc giao tiếp giữa các nhóm. Ngoài giao tiếp, lý do quan trọng nhất để sử dụng Git là bạn luôn có một phiên bản mã ổn định bên mình.

  • Do đó, Git đóng một vai trò quan trọng trong việc thành công tại DevOps.

Jenkins là gì?

Jenkins là một công cụ tự động hóa mã nguồn mở được viết bằng Java với các plugin được xây dựng cho mục đích Tích hợp liên tục. Jenkins được sử dụng để xây dựng và kiểm tra các dự án phần mềm của bạn liên tục, giúp các nhà phát triển tích hợp các thay đổi vào dự án dễ dàng hơn và giúp người dùng có được bản dựng mới dễ dàng hơn. Nó cũng cho phép bạn liên tục cung cấp phần mềm của mình bằng cách tích hợp với một số lượng lớn các công nghệ thử nghiệm và triển khai.

Với Jenkins, các tổ chức có thể đẩy nhanh quá trình phát triển phần mềm thông qua tự động hóa. Jenkins tích hợp các quy trình vòng đời phát triển của tất cả các loại, bao gồm xây dựng, tài liệu, thử nghiệm, gói, giai đoạn, triển khai, phân tích tĩnh và hơn thế nữa.

Jenkins đạt được Tích hợp liên tục với sự trợ giúp của các plugin. Các plugin cho phép tích hợp các giai đoạn DevOps khác nhau. Nếu bạn muốn tích hợp một công cụ cụ thể, bạn cần phải cài đặt các plugin cho công cụ đó. Ví dụ: Git, dự án Maven 2, Amazon EC2, nhà xuất bản HTML, v.v.

đi đến chức năng trong python

Ưu điểm của Jenkins bao gồm:

  • Nó là một công cụ mã nguồn mở với sự hỗ trợ cộng đồng tuyệt vời.

  • Quá dễ dàng để cài đặt.

  • Nó có hơn 1000 plugin để bạn dễ dàng làm việc. Nếu một plugin không tồn tại, bạn có thể viết mã nó và chia sẻ nó với cộng đồng.

  • Nó là miễn phí.

  • Nó được xây dựng bằng Java và do đó, nó có thể di động đến tất cả các nền tảng chính.

Bây giờ bạn biết cách Jenkins khắc phục những thiếu sót của SDLC truyền thống. Bảng dưới đây cho thấy sự so sánh giữa 'Trước và Sau Jenkins'.

Trước JenkinsSau Jenkins
Toàn bộ mã nguồn được xây dựng và sau đó được thử nghiệm. Việc tìm và sửa lỗi trong trường hợp bản dựng và thử nghiệm bị lỗi rất khó và tốn thời gian, do đó làm chậm quá trình phân phối phần mềm.Mọi cam kết được thực hiện trong mã nguồn đều được xây dựng và thử nghiệm. Vì vậy, thay vì kiểm tra toàn bộ mã nguồn, các nhà phát triển chỉ cần tập trung vào một cam kết cụ thể. Điều này dẫn đến việc phát hành phần mềm mới thường xuyên.
Các nhà phát triển phải đợi kết quả kiểm traCác nhà phát triển biết kết quả kiểm tra của mọi cam kết được thực hiện trong mã nguồn khi chạy.
Toàn bộ quá trình là thủ côngBạn chỉ cầncam kết các thay đổi đối với mã nguồn và Jenkins sẽ tự động hóa phần còn lại của quy trình cho bạn.

Tại sao Jenkins và Git được sử dụng cùng nhau?

Như đã thảo luận trước đó, Đi là một người quản lý kiểm soát nguồn. Đó là nơi bạn lưu giữ mã nguồn của mình để theo dõi tất cả các thay đổi mã xảy ra theo thời gian và làm cơ sở cho các phiên bản khi chúng sẵn sàng phát hành.

Jenkins , mặt khác, là một giải pháp tích hợp liên tục. Nó được thiết kế để tự động hóa hầu hết các tác vụ mà nhà phát triển phải thực hiện trong khi phát triển ứng dụng mới (kiểm tra chất lượng mã, xây dựng, lưu trữ các tạo tác bản dựng, kiểm tra tích hợp, triển khai đến các môi trường khác nhau, v.v.) mà không cần giải pháp CI, nhà phát triển phải dành nhiều thời gian để làm những công việc lặp đi lặp lại không hiệu quả này.

Ưu điểm:

  • Git và Jenkins đều rất mạnh mẽ, nhưng sức mạnh to lớn đi kèm với trách nhiệm lớn. Khá phổ biến khi biện minh cho một lượng không cần thiết phức tạp trong một đường ống xây dựng đơn giản vì bạn có thể.
  • Trong khi Jenkins có rất nhiều thủ thuật gọn gàng, có thể dễ dàng tận dụng các tính năng của Git, vì nó giúp quản lý phát hành và theo dõi lỗi dễ dàng hơn đáng kể tăng ca.
  • Chúng tôi có thể làm điều này bằng cách cẩn thận về các phiên bản mã mà chúng tôi xây dựng và gắn thẻ chúng một cách thích hợp. Điều này giữ thông tin liên quan đến phát hành gần với mã , trái ngược với việc dựa vào số lượng xây dựng của Jenkins hoặc các biệt danh khác.
  • Bảo vệ các nhánh Git giảm nguy cơ mắc lỗi của con người và việc tự động hóa càng nhiều tác vụ càng tốt giúp giảm tần suất chúng ta phải quấy rầy (hoặc chờ đợi) những con người đó.

Thí dụ:

Hãy để chúng tôi lấy ví dụ về một tính năng mới trong ứng dụng web. Một nhà phát triển sẽ được xác định và giao nhiệm vụ, anh ta lấy cơ sở mã hiện có từ kiểm soát Nguồn - giả sử Git, thực hiện các thay đổi của mình, thực hiện kiểm tra đơn vị, đảm bảo chất lượng mã theo cách thủ công và kiểm tra lại mã mới vào Git.

khác nhau giữa cuối cùng cuối cùng và cuối cùng

Sau đó, anh ta phải xây dựng mã, triển khai nó vào phiên bản tích hợp, chạy thử nghiệm tích hợp và một khi thay đổi có vẻ khả quan, hãy đưa ra yêu cầu triển khai sản xuất. Giờ đây, giá như chúng ta có một tay sai để đảm nhận các phần thử nghiệm, xây dựng, kiểm tra chất lượng và triển khai này thì nhà phát triển kém có thể đã tập trung tốt hơn vào thứ mà anh ta thực sự giỏi - triển khai và cải thiện logic của tính năng.

Tay sai này là Jenkins. Nó hoạt động như một người điều khiển để chạy tất cả các hoạt động này sau khi thay đổi được kiểm tra trong kiểm soát nguồn (Git) và do đó đưa ra phản hồi nhanh chóng cho nhà phát triển xem những thay đổi mà anh ta đã thực hiện có đủ tốt để triển khai sản xuất hay không.Nó là một mã nguồn mở cực kỳ linh hoạt và có rất nhiều plugin có thể làm hầu hết mọi thứ bạn muốn.

Bản giới thiệu

Ở đây chúng ta sẽ xem cách tích hợp Git với Jenkins. Có 5 bước mà bạn phải làm theo:

1. Tạo một chương trình mẫu:

Bạn có thể tạo bất kỳ chương trình mẫu nào mà bạn muốn như Java hoặc Python hoặc bất kỳ chương trình nào khác. Ở đây chúng tôi sẽ viết một đơn giản Chương trình Python in Hello, World!

2. Tạo một công việc Jenkins:

  • Ở đây trước tiên bạn cần bắt đầu Jenkins bằng cách sử dụng dấu nhắc lệnh.

  • Đối với điều đó, trước tiên bạn cần điều hướng đến vị trí Jenkins trên hệ thống của mình và sử dụng lệnh java -jar jenkins.war

  • Sau khi chạy lệnh này, hãy mở trình duyệt web và truy cập trang chủ của Jenkins bằng liên kết localhost: 8080 . Đây là số cổng mặc định.

  • Mở trang chủ Jenkins bằng nhập tên người dùng và mật khẩu.

  • Để tạo một dự án, hãy nhấp vào Vật phẩm mới và nhập Tên dự án và chọn Dự án tự do . Nhấp vào OK.

3. Thêm chương trình này vào Github:

  • Mở git bash trên hệ thống của bạn. Điều hướng đến vị trí của chương trình của bạn. Khởi tạo một kho lưu trữ trống bằng lệnh git init .

  • Sử dụng lệnh git thêm. để thêm tệp vào vùng dàn từ thư mục làm việc.

  • Bây giờ hãy thêm tệp vào kho lưu trữ cục bộ bằng lệnh git commit -m “demo.py tệp được thêm vào” .

  • Bây giờ bạn phải đẩy tệp này vào kho lưu trữ từ xa. Để làm điều đó, hãy truy cập tài khoản GitHub của bạn và tạo một kho lưu trữ công khai mới. Bây giờ sao chép vị trí của kho lưu trữ này và đi đến git bash terminal. Tại đây gõ lệnh git từ xa thêm nguồn gốc . Vì bây giờ bạn đã kết nối với kho lưu trữ từ xa, bây giờ bạn có thể đẩy mã của mình vào đó bằng lệnh git push -u origin master. Để xác minh điều này, hãy truy cập tài khoản GitHub và làm mới trang. Bạn sẽ thấy tệp được thêm vào đó.

4. Thêm Git Plugin trong Jenkins:

  • Trên trang chủ của Jenkins, truy cập Quản lý Jenkins .

  • Tiếp theo bấm vào Quản lý các plugin . Tại đây, hãy kiểm tra xem đã có plugin Git trong phần đã cài đặt. Nếu nó không có sẵn ở đây, hãy tìm kiếm nó trong phần có sẵn và tải xuống.

5. Định cấu hình công việc Jenkins để kích hoạt bản dựng:

  • Chuyển đến dự án trong Jenkins mà chúng ta đã tạo ở bước 2. Tại đây trong phần Quản lý mã nguồn, chọn git và nhập liên kết của kho lưu trữ công cộng mà bạn đã tạo ở bước 3. Tiếp theo trong Xây dựng phần Trình kích hoạt , bấm vào Thăm dò ý kiến ​​SCM tùy chọn . Ở đây trong phần Lịch trình, bạn phải nhập năm dấu hoa thị cách nhau bởi dấu cách. Đây không phải là gì ngoài cú pháp cron cho công việc của bạn. Điều này có nghĩa là Jenkins sẽ kiểm tra bất kỳ thay đổi nào trong mã nguồn mỗi phút và nếu có bất kỳ thay đổi nào, nó sẽ kích hoạt bản dựng Jenkins.

  • Bấm vào Ứng dụng và sau đó Tiết kiệm . Tiếp theo trên trang chủ dự án của bạn nhấp vào Xây dựng ngay . Điều này sẽ chạy dự án và trong đầu ra của bảng điều khiển, bạn có thể thấy chương trình của mình xuất trạng thái công việc Jenkins của bạn. Nếu mọi thứ đều ổn thì nó sẽ hiển thị là Sự thành công .

Đây là cách Jenkins Git Integration được thực hiện. Với điều này, chúng ta đã đến phần cuối của bài viết này về Tích hợp Jenkins Git. Tôi hy vọng bạn đã thích bài viết này.

Bây giờ bạn đã hiểu những gì Tích hợp Jenkins Git là, kiểm tra cái này của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo Chứng chỉ Edureka DevOps giúp người học hiểu DevOps là gì và có được kiến ​​thức chuyên môn về các quy trình và công cụ DevOps khác nhau như Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack và GIT để tự động hóa nhiều bước trong SDLC.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn