Cách cài đặt Jenkins trên CentOS và kết nối nó với GitHub

theanh

Administrator
Nhân viên
Jenkins cung cấp các công cụ CI/CD nguồn mở được sử dụng rộng rãi. Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt Jenkins và cấu hình nó với Github để gửi tệp đến máy chủ bằng SSH.

Cài đặt Jenkins:​

Jenkins là ứng dụng dựa trên JAVA nên trước hết, chúng ta cần cài đặt JAVA. Lệnh sau sẽ cài đặt JAVA trên centos 7.
Mã:
sudo yum install java-1.8.0-openjdk-devel
Kiểm tra phiên bản Java
Mã:
[root@centos ~]# java -version
openjdk version "1.8.0_212"
Môi trường chạy thời gian thực OpenJDK (bản dựng 1.8.0_212-b04)
Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 25.212-b04, chế độ hỗn hợp)
Bây giờ hãy cấu hình Jenkins Repository bằng các lệnh sau.
Mã:
curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo
Lệnh này sẽ hiển thị các đầu ra sau.
Mã:
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1
Sau đó chạy lệnh sau để thêm khóa Jenkins.
Mã:
sudo rpm --import [URL=https://jenkins-ci.org/redhat/jenkins-ci.org.key?utm_source=diendancongnghe.com]https://jenkins-ci.org/redhat/jenkins-ci.org.key[/URL]
Bây giờ chúng ta đã cấu hình Jenkins Repository và đã sẵn sàng cài đặt Jenkins bằng các lệnh đơn giản sau.
Mã:
sudo yum install jenkins
Sau khi cài đặt hoàn tất, hãy kiểm tra dịch vụ Jenkins và bật dịch vụ này khi khởi động lại hệ thống.
Mã:
sudo systemctl start Jenkins
sudo systemctl enable jenkins
Bây giờ hãy khởi động lại hệ thống và đảm bảo dịch vụ jenkins đang chạy bằng cách sử dụng lệnh sau.
Mã:
sudo systemctl enable jenkins
Bây giờ hãy cho phép Jenkins trong tường lửa.
Mã:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

Cấu hình cài đặt:​

Chúng ta không thể sử dụng Jenkins trực tiếp, chúng ta cần nhập tên miền hoặc địa chỉ IP vào trình duyệt web theo sau là số cổng mặc định của Jenkins là 8080.



Trong ảnh chụp màn hình ở trên, chúng ta cần nhập mật khẩu tự động tạo của Jenkins một lần. Chạy lệnh sau để lấy mật khẩu.
Mã:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Lệnh này sẽ đưa ra kết quả như sau 2179c452db3b45f98cf9e4c4961ab635

Sau mật khẩu, chúng ta cần cài đặt plugin vào hệ thống Jenkins. Để thực hiện, chỉ cần chọn plugin được đề xuất đã cài đặt để cài đặt tất cả các plugin mặc định.



Điền tất cả thông tin chi tiết và nhấp vào lưu và tiếp tục.

Bây giờ, nó sẽ yêu cầu Cấu hình phiên bản, tại đó chúng ta cũng có thể thay đổi số cổng mặc định.



Bây giờ Jenkins của chúng ta đã được lưu và sẵn sàng để sử dụng.



Xin chúc mừng, quá trình thiết lập Jenkins mới đã hoàn tất thành công và sẵn sàng để sử dụng.

Ảnh chụp màn hình sau đây hiển thị bảng điều khiển mặc định cho Jenkins.


Cấu hình Jenkins:​

Cài đặt Plugin:​

Trước khi thực hiện các bước tiếp theo, hãy đảm bảo cài đặt các plugin sau.

Vào Quản lý Jenkins -> Quản lý plugin -> Có sẵn -> bộ lọc -> tìm kiếm plugin sau đây cần thiết để tích hợp với GitHub.

Publish Over SSH
Git
Plugin GitHub
Plugin máy khách Git

Ở đây, plugin Publish Over SSH cần thiết để đẩy các tệp của chúng tôi lên máy chủ qua SSH.

Thêm thông tin xác thực:​

Chúng ta cần thêm thông tin xác thực máy chủ trong Jenkins.

Đi tới Bảng điều khiển Jenkins→thông tin xác thực → hệ thống → thông tin xác thực toàn cầu (không giới hạn) → Thêm thông tin xác thực



Chúng ta có thể chọn loại thông tin xác thực mà chúng ta muốn cài đặt. Tại đây chúng ta thêm tên người dùng và mật khẩu thông tin đăng nhập GitHub để sử dụng sau này.



ssh trên Máy chủ Jenkins.

Jenkins có thể kết nối với máy chủ từ xa bằng ssh và có thể chạy tập lệnh, lệnh hoặc sao chép tệp từ máy chủ này sang máy chủ khác.

Với mục đích này, chúng ta cần tạo kết nối ssh giữa máy chủ Jenkins và máy chủ từ xa.

Bước tiếp theo là thêm thông tin xác thực SSH trên Jenkins mà chúng ta muốn kết nối với máy chủ Jenkins.

Chúng ta muốn kết nối với máy chủ web từ Jenkins với người dùng root. Ví dụ: máy chủ web của chúng ta là 138.197.151.144 và người dùng root, vì vậy chúng ta cần đăng nhập vào máy chủ đó bằng ssh.
Mã:
ssh [emailprotected]
Bây giờ hãy đến thư mục gốc và cd đến thư mục .ssh.
Mã:
cd ~/.ssh
Bước tiếp theo sẽ là tạo khóa riêng và khóa công khai cho người dùng root trên máy chủ web của chúng tôi.
Mã:
ssh-keygen -t rsa -f private_key_for_jenkins
Sau khi chạy lệnh trên, nó sẽ yêu cầu "Nhập mật khẩu", chúng ta không cần nhập mật khẩu. Vì vậy, hãy nhấp vào enter hai lần và nó sẽ tạo hai khóa trên máy chủ web private_key_for_jenkins và private_key_for_jenkins.pub.

Ở đây private_key_for_jenkins là khóa riêng của 138.197.151.144 và chúng ta cần sử dụng nội dung của tệp này vào máy chủ Jenkins của mình.

Chúng ta có tệp thứ hai có tên là private_key_for_jenkins.pub là khóa công khai của máy chủ web. Chúng ta cần sao chép dữ liệu của nó vào một tệp khác có tên là authorized_keys nằm trong cùng thư mục.

Trong hầu hết các trường hợp, các tệp authorized_keys có trong thư mục ~/.ssh/ nhưng đôi khi nó bị thiếu và chúng ta cần tạo các tệp authorized_keys mới. Chỉ cần chạy lệnh sau để sao chép nó vào authorized_keys, lệnh này cũng tạo các authorized_keys mới nếu có sẵn.
Mã:
cat private_key_for_jenkins.pub > authorized_keys
Bây giờ hãy đăng nhập vào máy chủ Jenkins rồi vào Manage Jenkins -> Configure Systems

Một giải pháp thay thế là chúng ta có thể trực tiếp ghi http://ip_address:8080/configure vào trình duyệt web, thao tác này sẽ mở Configure Systems để cấu hình ssh.

Bây giờ, hãy tìm phần Server của máy chủ SSH trong "Configure Jenkins". Xin lưu ý rằng phần này chỉ khả dụng nếu chúng ta đã cài đặt ‘SSH Credential Plugin’ trên máy chủ Jenkins.

Đi đến phần Publish over SSH, đi đến khóa và dán nội dung của private_key_for_jenkins

Bây giờ trong tùy chọn SSH Servers, nhấp vào nút Add và nhập thông tin chi tiết về SSH Server. Chúng ta có thể thay đổi cổng ssh và các cài đặt khác từ tùy chọn Advanced.





Sau khi thực hiện các thay đổi, hãy nhấp vào ‘Test Configuration’ và chúng ta sẽ nhận được thông báo thành công như trong ảnh chụp màn hình ở trên nếu tất cả các cài đặt đều chính xác.

Xin lưu ý rằng chúng ta có thể thêm nhiều máy chủ theo yêu cầu của mình để xuất bản cùng một mã trên nhiều máy chủ bằng ssh.

Để làm được điều đó, chúng ta cần tạo khóa riêng cho từng máy chủ như đã đề cập trước đó và cần thêm khóa riêng của chúng vào máy chủ Jenkins.

Cuối cùng, nhấp vào nút ‘Save’ và lưu các thay đổi của chúng ta. Chúng ta đã tạo thành công kết nối ssh đến máy chủ từ xa. Bây giờ chúng ta có thể gửi tệp đến máy chủ từ xa và cũng có thể thực thi bất kỳ lệnh hoặc tập lệnh nào trên máy chủ đó.

Cấu hình Jenkins với Github​

Để tự động hóa các bản dựng được kích hoạt bởi yêu cầu PUSH và PULL, cần thêm Jenkins WebHook vào mỗi kho lưu trữ GitHub hoặc webhook của tổ chức.

Các bước cấu hình webhook từ kho lưu trữ Github.

1. Đăng nhập vào tài khoản GitHub của bạn

2. Nhấp vào kho lưu trữ mà chúng ta cần đặt webhook

3. đi tới tùy chọn cài đặt cho kho lưu trữ đó

4. Nhấp vào Webhooks và thêm URL Payload, trông giống như http://jenkins_ip:8080/github-webhook/

5. Chọn "application/json" làm loại mã hóa từ Loại nội dung

6. Để trống "Bí mật" (trừ khi đã tạo và định cấu hình bí mật trong phần "Cấu hình hệ thống -> plugin GitHub" của Jenkins)

7. Chọn "Cho phép tôi chọn các sự kiện riêng lẻ"

8. Bật sự kiện PUSH và Pull Request

9. Đảm bảo "Hoạt động" được chọn

10. Cuối cùng, hãy nhấp vào nút "Thêm Webhook".

Kiểm tra ảnh chụp màn hình bên dưới để biết chi tiết.





Jenkins hiện sẽ nhận được thông báo yêu cầu đẩy và kéo cho kho lưu trữ đó và các bản dựng liên quan sẽ tự động được kích hoạt.

Tạo công việc đầu tiên trên Jenkins​

Bây giờ, hãy vào bảng điều khiển Jenkins của chúng tôi, chọn Mục mới, sau đó Nhập tên mục, chọn Dự án Freestyle.



Sau khi nhấp vào ok, bạn sẽ được chuyển hướng đến phần cấu hình.

Chúng ta đang ở tab chung ngay bây giờ như được hiển thị trong ảnh chụp màn hình bên dưới. Nhìn chung, tab cung cấp mô tả về dự án và nhấp vào dự án Github, Tại đây, hãy nhập URL GitHub của chúng tôi cho dự án.



Bây giờ, hãy đến Quản lý mã nguồn, sau đó nhấp vào Git và nhập URL Kho lưu trữ của chúng tôi từ nơi chúng tôi muốn lấy mã.

Chúng tôi đã thêm thông tin xác thực GitHub, hãy nhấp vào menu thả xuống và chọn tên người dùng và mật khẩu GitHub.

Tiếp theo, hãy đến Nhánh để xây dựng và chọn nhánh */master, chúng tôi có thể thêm bất kỳ nhánh nào theo yêu cầu của dự án.



Bây giờ, hãy đến tab Kích hoạt xây dựng và chọn Kích hoạt móc Github cho tùy chọn thăm dò GITScm, Tùy chọn này sẽ tự động xây dựng bất cứ khi nào chúng tôi thực hiện bất kỳ thay đổi nào đối với kho lưu trữ GitHub.



Bây giờ, hãy đến Môi trường xây dựng và chọn Gửi tệp hoặc thực thi lệnh qua SSH sau khi quá trình xây dựng chạy.

Điều này sẽ gửi các tệp đến máy chủ từ xa sau khi chạy bản dựng.

Đi đến SSH Publishers --> SSH Server --> chọn tên máy chủ từ menu thả xuống

Tại đây, chúng ta cũng có thể đặt tham số Nâng cao nhưng hiện tại, chúng ta sử dụng các thiết lập cơ bản.

Bây giờ, chúng ta cần thêm loại tệp mà chúng ta muốn sao chép qua ssh, Tại đây, chúng ta chọn tất cả các thư mục và tệp trong kho lưu trữ GitHub của mình. Để thêm tệp và chọn thư mục, chỉ cần thêm **/* vào các tệp nguồn.

Theo cách tương tự, chúng ta có thể đưa ra bất kỳ lệnh nào trong hộp văn bản lệnh Exec, lệnh này sẽ được thực thi trên máy chủ từ xa của chúng ta.

Sau đó, chỉ định thư mục Từ xa mà chúng ta cần sao chép các tệp của mình. Đây là tùy chọn tùy chọn.

SSH Publishers --> Chuyển --> Chuyển Đặt --> Tệp nguồn --> thêm **/*

SSH Publishers --> Chuyển Đặt --> Thư mục từ xa --> /jenkins-test

SSH Publishers --> Transfers --> Transfers Set --> Exec command --> command



Theo mặc định, Jenkins sẽ loại trừ một số tệp nhất định như .git .svn .gitignore, v.v. Ở đây chúng ta muốn sao chép tất cả các tệp vào máy chủ từ xa. Để thực hiện, hãy nhấp vào nút Advanced ngay bên dưới lệnh Exec và chọn tùy chọn "No default excluded".



Vậy là xong, chúng ta có nhiều tùy chọn trong Post-build Actions mà chúng ta có thể sử dụng tùy theo nhu cầu của dự án.

Build Test​

Đã đến lúc kiểm tra cấu hình của chúng ta.

Truy cập bảng điều khiển Jenkins rồi nhấp vào dự án Jenkins-test của chúng ta.



Sau đó, nhấp vào tùy chọn Build Now để dựng, nếu quá trình dựng không thành công, nó sẽ hiển thị số phiên bản dựng có biểu tượng màu vàng.

Hãy xác minh quy trình dựng của chúng ta, chỉ cần nhấp vào số bản dựng như trong ảnh chụp màn hình.



Bây giờ, hãy nhấp vào Console Output. Tại đây, chúng ta có thể thấy mọi quy trình ở chế độ chi tiết.

Cuối cùng, chúng ta sẽ thấy dòng "Finished: SUCCESS" ở cuối đầu ra của bảng điều khiển.

Xin chúc mừng! Jenkins của chúng tôi hiện đã tích hợp thành công với GitHub và sẵn sàng sử dụng.
 
Back
Bên trên