Jenkins Pipeline hướng dẫn

Jenkins Pipeline với GitLab cho các dự án Java

Nguồn hình ảnh: //qautomation.blog/2019/05/28/jenkins-pipeline/

Bài đăng này sẽ chỉ cho bạn cách định cấu hình đường ống Jenkins sẽ tự động xây dựng dự án của bạn khi bạn đẩy mã vào kho lưu trữ GitLab. Chúng tôi sẽ sử dụng Jenkinsfile để xác định đường dẫn của chúng tôi, đó là phương pháp hay nhất.

Đây là quy trình làm việc:

Đẩy tới GitLab Đường ống Jenkins được kích hoạt Chạy bản dựng [Maven] Chạy các bài kiểm tra JUnit [Maven] Gửi email kết quả từ đường ống

Nếu bạn chưa cài đặt GitLab và Jenkins, bạn có thể làm theo hướng dẫn trong bài đăng này và sau đó quay lại đây.

Bài đăng này cũng giả định rằng bạn đã cài đặt Java, Git và Maven, cùng với một dự án Maven đơn giản với ít nhất một bài kiểm tra JUnit. Đảm bảo rằng bạn có thể chạy mvn clean installvà thực hiện thành công mvn testdự án của mình trước khi làm theo.

Bước 1: Tạo kho lưu trữ GitLab

Trong GitLab, tạo nhóm bằng cách nhấp vào danh sách Nhóm thả xuống rồi nhấp vào nút Nhóm mới . Đặt tên cho nhóm của bạn rồi nhấp vào Tạo nhóm .

Tạo một dự án mới bằng cách nhấp vào Dự án mới . Đặt tên cho nó và nhấp vào Tạo dự án .

Khởi tạo dự án Maven cục bộ của bạn và đẩy nó vào kho lưu trữ mới của bạn:

cd existing_folder git init git remote add origin //localhost/my-group/my-project.git git add . git commit -m "Initial commit" git push -u origin master

Bước 2: Tạo người dùng Jenkins trong GitLab

Chúng tôi cần tạo một người dùng Jenkins trong GitLab để Jenkins có thể giao tiếp với API của GitLab thông qua plugin mà chúng tôi sẽ cài đặt ở Bước 4.

Trong GitLab, đi tới Khu vực quản trị bằng cách nhấp vào biểu tượng cờ lê trong thanh công cụ trên cùng.

Trong menu bên trái, nhấp vào Người dùng và sau đó nhấp vào Người dùng mới ở góc trên cùng bên phải. Điền vào các trường bắt buộc một cách thích hợp và đảm bảo chọn nút radio Quản trị trong Cấp độ truy cập :

Quay lại trang Người dùng và chỉnh sửa người dùng Jenkins mà bạn vừa tạo. Cung cấp mật khẩu cho người dùng để bạn có thể đăng nhập với tư cách người dùng đó. Khi bạn đã thực hiện xong việc này, hãy đăng xuất khỏi phiên hiện tại của bạn và đăng nhập với tư cách người dùng Jenkins.

Sau khi đăng nhập với tư cách người dùng Jenkins, hãy chuyển đến cài đặt của bạn và nhấp vào Mã thông báo truy cập trong thanh menu bên trái. Đảm bảo đặt tên cho mã thông báo của bạn và chọn api trong Phạm vi .

Khi bạn đã tạo mã thông báo truy cập, hãy sao chép và dán mã thông báo vào một nơi nào đó tạm thời - bạn sẽ không thể truy cập lại từ đây. Chúng tôi sẽ sử dụng mã thông báo này sau.

Đăng xuất và đăng nhập lại với tư cách người dùng root .

Bước 3: Tạo người dùng GitLab trong Jenkins

Bây giờ, chúng ta cần tạo một người dùng GitLab trong Jenkins để GitLab có thể thông báo cho Jenkins về các bản cập nhật cho kho lưu trữ thông qua webhooks.

Từ trang chủ Jenkins, đi tới Quản lý Jenkins Quản lý Người dùng Tạo Người dùng và điền vào biểu mẫu.

Sau khi tạo người dùng, hãy đăng xuất và đăng nhập lại với tư cách người dùng gitlab.

Đi tới Quản lý Jenkins Quản lý Người dùng và nhấp vào biểu tượng bánh răng bên cạnh người dùng gitlab để định cấu hình. Trong Mã thông báo API , nhấp vào Thêm mã thông báo mới và đặt tên cho nó, sau đó nhấp vào Tạo .

Khi bạn đã tạo mã thông báo, hãy sao chép và dán mã thông báo vào đâu đó tạm thời - bạn sẽ không thể truy cập lại từ đây. Chúng tôi sẽ sử dụng mã thông báo này sau.

Đăng xuất và đăng nhập lại với tư cách người dùng quản trị .

Bước 4: Cài đặt và cấu hình Plugin GitLab cho Jenkins

Chúng tôi cần cài đặt plugin GitLab cho Jenkins để họ có thể giao tiếp với nhau.

Trên trang chủ Jenkins, nhấp vào Quản lý Jenkins Quản lý Plugin . Nhấp vào tab Có sẵn và tìm kiếm gitlab và cài đặt plugin GitLab.

Chọn hộp Khởi động lại Jenkins khi quá trình cài đặt hoàn tất Nếu bạn bỏ lỡ điều này, bạn cũng có thể khởi động lại Jenkins sudo systemctl restart jenkinssau khi quá trình tải xuống hoàn tất.

Sau khoảng một phút, hãy làm mới trang và đăng nhập lại với tư cách người dùng quản trị viên.

Trong Jenkins, đi tới Quản lý Jenkins Cấu hình Hệ thống và cuộn xuống phần Gitlab . Nhập tên cho kết nối, URL tới phiên bản GitLab của bạn, rồi bên cạnh Thông tin đăng nhập , nhấp vào Thêm Jenkins . Đây là nơi bạn sẽ thêm mã thông báo GitLab của mình từ Bước 2.

Bên cạnh Loại , chọn Mã thông báo API GitLab . Dán mã thông báo API GitLab của bạn và cung cấp cho nó một ID và mô tả, sau đó nhấp vào Thêm để thêm mã thông báo vào Jenkins:

Nhấp vào menu thả xuống bên cạnh Thông tin đăng nhập và chọn mã thông báo. Sau đó nhấp vào Kiểm tra kết nối - bạn sẽ thấy Thành công sau đó:

Nhấp vào Lưu ở cuối màn hình để lưu các thay đổi của bạn. Bạn có thể xem thông tin đăng nhập mới tạo của mình tại Quản lý Jenkins Thông tin đăng nhập .

Bây giờ Jenkins đã sẵn sàng giao tiếp với API GitLab.

Bước 5: Tạo đường ống Jenkins

Trên trang chủ Jenkins, nhấp vào Mục mới trong thanh menu bên trái. Nhập tên cho mục và chọn Đường ống . Nhấp vào OK để tạo nó:

Điều tiếp theo bạn sẽ thấy là trang cấu hình đường ống. Chọn hộp Bỏ các bản dựng cũ và đặt Số bản dựng tối đa để giữ ở một con số hợp lý [tôi đã chọn 3 cho hướng dẫn này]:

Đảm bảo rằng kết nối bạn đã tạo ở Bước 4 được chọn bên cạnh Kết nối GitLab :

Trong phần Trình kích hoạt xây dựng , hãy chọn hộp Xây dựng khi một thay đổi được đẩy lên GitLab và sao chép URL webhook GitLab bên cạnh nó để sử dụng sau. Giữ nguyên phần trình kích hoạt GitLab đã bật :

Trong phần Pipeline , chọn Pipeline script từ SCM từ menu thả xuống Định nghĩa [đây sẽ là tệp Jenkins được mô tả sau] và chọn Git từ menu thả xuống SCM . Nhập URL kho lưu trữ [giống như những gì bạn sử dụng git clone]. Bạn sẽ thấy lỗi xác thực vì chúng tôi chưa cung cấp tên người dùng / mật khẩu có thể truy cập vào kho lưu trữ GitLab của bạn:

Bên cạnh Thông tin xác thực , nhấp vào Thêm Jenkins và điền tên người dùng / mật khẩu GitLab của bạn và nhấp vào Thêm :

Chọn thông tin xác thực của bạn từ menu thả xuống Thông tin xác thực và lỗi xác thực sẽ biến mất. Nếu không, hãy đảm bảo bạn có tên người dùng / mật khẩu phù hợp và người dùng có quyền truy cập vào kho lưu trữ.

Nhấp vào Lưu ở cuối màn hình.

Bước 6: Định cấu hình Webhook trong GitLab

Chúng tôi cần một cách để GitLab thông báo cho Jenkins biết khi nào mã được đẩy vào kho lưu trữ - đây là mục đích của webhook.

LƯU Ý: Nếu phiên bản Jenkins của bạn đang chạy trên localhost, hãy làm theo các bước sau để cho phép GitLab gửi yêu cầu cục bộ:

  1. Đi tới Khu vực quản trị
  2. Di chuột qua Cài đặt và nhấp vào Mạng
  3. Mở rộng yêu cầu đi
  4. Chọn hộp cho Cho phép yêu cầu đến mạng cục bộ từ các móc web và dịch vụ
  5. Nhấp vào Lưu thay đổi

Nhập URL vào đường dẫn Jenkins của bạn [đường dẫn bạn đã sao chép từ bước cuối cùng] và sửa đổi nó để nó tuân theo sơ đồ này:

//:@/project/

Nhấp vào Thêm webhook và sau đó cuộn xuống dưới cùng để xem webhook của bạn. Kiểm tra nó bằng cách nhấp vào Kiểm tra Đẩy sự kiện . Bạn sẽ thấy mã trạng thái 200:

Nếu bạn quay lại Jenkins, bạn sẽ thấy một bản dựng không thành công - đây là một tin tốt vì điều đó có nghĩa là webhook đã hoạt động và Jenkins có thể lắng nghe các lần đẩy đến kho lưu trữ GitLab của bạn.

Nếu bạn kiểm tra đầu ra của bảng điều khiển xây dựng Jenkins, bạn sẽ thấy một cái gì đó tương tự như lỗi này:

Trong bước tiếp theo, chúng tôi sẽ thêm Jenkinsfile vào kho lưu trữ của chúng tôi để cho Jenkins biết cách xây dựng dự án của chúng tôi.

Bước 7: Thêm tệp Jenkins

Bên trong kho lưu trữ git của bạn, hãy tạo một tệp có tên Jenkinsfile ở cấp cơ sở.

Dán những thứ sau vào tệp Jenkins của bạn và đẩy nó vào kho lưu trữ của bạn:

pipeline { agent any stages { stage['Build'] { steps { sh 'mvn clean install -DskipTests' } } stage['Test'] { steps { sh 'mvn test' } } } }

Giả sử bạn đã cài đặt và định cấu hình Maven trên cùng một máy mà Jenkins đang chạy, bạn sẽ thấy một cái gì đó giống như sau khi bạn xem dự án đường ống của mình trong Jenkins:

Nếu bạn thấy hình chữ nhật màu đỏ thay vì màu xanh lá cây trong giai đoạn Xây dựng hoặc Thử nghiệm, điều đó có nghĩa là mã của bạn không thể tạo hoặc một trong các thử nghiệm đơn vị của bạn không thành công. Bạn có thể kiểm tra toàn bộ quá trình bằng cách nhấp vào bản dựng trong phần Lịch sử bản dựng và sau đó bấm vào Đầu ra của bảng điều khiển .

Bước 8: Thông báo qua email

Một thực tế phổ biến là yêu cầu đường ống gửi email đến người dùng đã đẩy mã của họ để cho họ biết liệu quá trình xây dựng của họ được thông qua hay thất bại.

Nếu bạn chưa cài đặt Plugin mở rộng email, hãy cài đặt plugin đó trước khi tiếp tục.

LƯU Ý: Đảm bảo tài khoản GitLab mà bạn đang đẩy có địa chỉ email hợp lệ - đây là địa chỉ mà đường dẫn của bạn sẽ gửi email đến.

Định cấu hình plugin bằng cách đi tới Quản lý Jenkins Định cấu hình Hệ thống và cuộn xuống Thông báo email mở rộng .

Điền vào máy chủ SMTP của bạn, nhấp vào Nâng cao và chọn hộp Sử dụng Xác thực SMTP . Điền tên người dùng [địa chỉ email] và mật khẩu của bạn, sau đó chọn hộp Sử dụng SSL . Nhập 465 cho cổng SMTP:

Cuộn trở lại đầu trang và trong Vị trí Jenkins , thay đổi địa chỉ e-mail của Quản trị viên Hệ thống thành Jenkins - địa chỉ này sẽ xuất hiện dưới dạng tên người gửi trong email bạn sẽ nhận được.

Nhấp vào Lưu ở dưới cùng.

Trong Jenkinsfile của bạn, thêm phần bài đăng sau phần giai đoạn và đẩy nó vào kho lưu trữ của bạn.

pipeline { agent any stages { stage['Build'] { steps { sh 'mvn clean install -DskipTests' } } stage['Test'] { steps { sh 'mvn test' } } } post { always { emailext subject: "Jenkins Build ${currentBuild.currentResult}: Job \"${env.JOB_NAME}\"", body: "${currentBuild.currentResult}: Job \"${env.JOB_NAME}\" build ${env.BUILD_NUMBER}.\nMore info at: ${env.BUILD_URL}", recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']] } } }

Quay lại đường dẫn Jenkins của bạn để xem nó đang chạy. Nếu mọi việc suôn sẻ, bạn sẽ thấy một cái gì đó tương tự như sau và lẽ ra cũng đã nhận được email.

Xin chúc mừng! Bạn đã thiết lập thành công đường dẫn Jenkins để tự động xây dựng các dự án Java từ GitLab.

Video liên quan

Chủ Đề