Thiết lập đường ống CI/CD đơn giản bằng Github và Jenkins trên phiên bản AWS EC2 Linux

theanh

Administrator
Nhân viên
Trong bài viết này, chúng ta sẽ xem các bước để triển khai một đường ống CI/CD đơn giản bằng Jenkins. Chúng ta sẽ sử dụng một mã Java mẫu và triển khai mã đó lên Máy chủ web Apache Tomcat dưới dạng tệp .war. Chúng ta sẽ sử dụng Maven làm công cụ xây dựng. Bạn có thể tìm thấy mã Java mẫu trên Kho lưu trữ Github (repo) của tôi. Trước khi tiếp tục, hãy cùng tìm hiểu những điều cơ bản về các công cụ và công nghệ mà chúng ta sẽ sử dụng để thiết lập đường ống CI/CD.
  1. EC2 Instance:EC2instance là Máy ảo (VM) trong AWS Cloud. Chúng ta sẽ triển khai Apache Tomcat và Jenkins lên một EC2instance.
  2. Apache Tomcat: Apache Tomcat là một Máy chủ web nguồn mở. Chúng tôi sẽ triển khai Ứng dụng Java mẫu của mình vào Apache Tomcat dưới dạng tệp .war.
  3. Github:Github là một nền tảng lưu trữ Mã. Về cơ bản, đây là Hệ thống quản lý kiểm soát phiên bản/nguồn. Chúng tôi sẽ đưa mã Java mẫu của mình lên Github.
  4. Webhook của Github: Webhook của Github được sử dụng để xây dựng và thiết lập tích hợp. Chúng tôi sẽ tạo một webhook sẽ kích hoạt Jenkins Job bất cứ khi nào có một cam kết mới diễn ra trên kho lưu trữ Github.
  5. Jenkins: Jenkins là một công cụ tự động hóa mã nguồn mở miễn phí. Chúng tôi sẽ viết một công việc trên Jenkins để xây dựng và triển khai tệp .war của mã ứng dụng Java mẫu lên máy chủ Apache Tomcat.
  6. Maven:Maven là một công cụ tự động hóa bản dựng chủ yếu được sử dụng để xây dựng các dự án Java.

Điều kiện tiên quyết​

  1. Tài khoản AWS (Tạo nếu bạn chưa có)
  2. Hiểu biết cơ bản về Github.
  3. Hiểu biết cơ bản về Jenkins.
  4. Hiểu biết cơ bản về Máy chủ Linux và các lệnh

Chúng ta sẽ làm gì?​

  1. Tạo một EC2 Instance
  2. Cài đặt Java
  3. Cài đặt Jenkins
  4. Thiết lập Apache Tomcat
  5. Fork Github Repo của tôi
  6. Truy cập và cấu hình Jenkins
  7. Thiết lập Jenkins Job để triển khai .war
  8. Thiết lập Webhook trên Github Repo
  9. Kiểm tra Auto Build trên mọi Commit

Tạo một VM hoặc một EC2 Instance​

Để tạo một EC2 instance, bạn có thể tham khảo tài liệu có sẵn tại đây.

Tại đây, tôi đã tạo một EC2 Instance mới trên tài khoản AWS của mình. Instance này có Ubuntu 18 OS.

Bạn có thể thấy rằnginstanceđã hoạt động. Tôi sẽ sử dụng instance này để cài đặt Java hoặc các dependency và Apache Tomcat và Jenkins.


Cài đặt Java​

Để cài đặt Java vào hệ thống Ubuntu 18 của bạn, bạn có thể sử dụng các lệnh sau. Lệnh sau sẽ cài đặt Java8. Sau khi cài đặt, bạn thậm chí có thể kiểm tra phiên bản của nó.

sudo apt-get update
sudo apt install openjdk-8-jdk
java -version

Cài đặt Jenkins​

Sử dụng các lệnh sau để cài đặt Jenkins vào phiên bản của bạn.

sudo apt-get update
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Sau khi cài đặt Jenkins, hãy sử dụng lệnh sau để khởi động và kiểm tra trạng thái của Jenkins.


sudo systemctl start jenkins #Khởi động Jenkins
service jenkins status#Kiểm tra trạng thái Jenkins

Trong ảnh chụp màn hình sau, bạn có thể thấy dịch vụ Jenkins đã được khởi động. Dịch vụ Jenkins này đã bắt đầu trên cổng 8080.


Cài đặt Apache Tomcat​

Cài đặt Apache Tomcat​

Trước khi tải xuống và cài đặt Apache Tomcat, hãy tạo một thư mục nơi chúng ta có thể tải xuống gói Apache Tomcat.

Sử dụng các lệnh sau để tạo một thư mục trong /opt

cd /opt/
sudo mkdir Innovecture

Thay đổi quyền sở hữu của thư mục bằng lệnh sau. Chúng tôi đang thay đổi quyền sở hữu thành người dùng Ubuntu và nhóm Ubuntu để người dùng Ubuntu có thể khởi động dịch vụ Apache Tomcat và chúng tôi không cần sử dụng quyền root hoặc người dùng hoặc sudo.


sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture/

Tải xuống và giải nén Apache Tomcat bằng các lệnh sau. Nếu bạn muốn sử dụng bất kỳ phiên bản nào khác của Apache Tomcat, bạn có thể tải xuống và giải nén.


wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
tar -zxvf apache-tomcat-9.0.31.tar.gz
cd apache-tomcat-9.0.31/

Thực hiện các cấu hình cần thiết trong Apache Tomcat bằng lệnh sau. Tham khảo các ảnh chụp màn hình sau để biết các cấu hình cần thực hiện. Trong các cấu hình sau, chúng tôi sẽ chỉ định một người dùng và một mật khẩu có thể được sử dụng để đăng nhập vào ứng dụng quản lý của Apache Tomcat. Ghi lại tên người dùng và mật khẩu này vì chúng ta sẽ cần những thông tin xác thực này sau.

Cấu hình Apache Tomcat​

vim conf/tomcat-users.xml



Tham khảo ảnh chụp màn hình sau và đảm bảo rằng context.xml của bạn có cùng cấu hình.

vim webapps/manager/META-INF/context.xml



Trong server.xml trong thư mục conf, hãy thay đổi cổng mà Apache Tomcat chạy, tức là đổi cổng 8080 thành 8090 vì dịch vụ Jenkins của chúng ta đã chạy trên cổng 8080.

vim conf/server.xml

Ngoài ra, hãy thay đổi cấu hình localhost trong tệp server.xml bằng IP của máy chủ để có thể truy cập máy chủ của bạn từ Internet.

Khởi động Apache Tomcat​

Sử dụng lệnh sau để khởi động dịch vụ Apache Tomcat.

bin/startup.sh

Trong ảnh chụp màn hình sau, bạn có thể thấy dịch vụ Apache Tomcat đang chạy trên cổng 8090 và dịch vụ Jenkins đang chạy trên cổng 8080. Để kiểm tra hệ thống của bạn, hãy sử dụng lệnh sau.

netstat -tulpn


Đăng nhập vào ứng dụng Tomcat Manager​

Để xem chúng ta có thể đăng nhập vào ứng dụng quản lý của Apache Tomcat bằng thông tin đăng nhập đã chỉ định trước đó hay không, hãy nhấp vào URL của Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager. Bạn sẽ được nhắc với màn hình thông tin đăng nhập, chỉ cần nhập tên người dùng 'tomcat-manager' và mật khẩu mà chúng tôi đã cấu hình trong conf/tomcat-users.xml.

Sau khi đăng nhập thành công, bạn sẽ thấy màn hình như sau


Fork Github Repo​

Bạn có thể fork hoặc sao chép repo của tôi được đề cập bên dưới. Repo này chứa mã Java mẫu, bạn có thể sử dụng mã này hoặc nếu bạn có kho lưu trữ riêng, bạn cũng có thể sử dụng.

URL của kho lưu trữ:https://github.com/shivalkarrahul/Innovecture.git

Truy cập và cấu hình Jenkins​

Để truy cập Jenkins, hãy nhấp vào URL
Làm theo các màn hình bạn sẽ thấy để Mở khóa Jenkin và Cài đặt các Plugin được đề xuất

Sau khi mở khóa Jenkin và cài đặt các plugin được đề xuất, bạn sẽ thấy màn hình sau.

Bạn cần nhập tên người dùng và mật khẩu cần cấu hình, sau đó nhấp vào lưu và tiếp tục để tiếp tục.


Cài đặt Github Authentication Plugin mà không cần khởi động lại

Sau khi đăng nhập thành công, hãy vào Manage Jenkins > Manage Plugins.Trong tab Available , hãy tìm kiếm git. Chọn plug-in "GithubAuthentication" và nhấp vào cài đặt mà không cần khởi động lại.


Cài đặt Plugin tích hợp Maven mà không cần khởi động lại

Tương tự như vậy, cài đặt plugin tích hợp maven và cài đặt mà không cần khởi động lại


Cài đặt Plugin triển khai vào container mà không cần khởi động lại

Để tự động triển khai tệp .war vào Apache Tomcat, chúng ta sẽ cần một plugin "Triển khai vào container". Cài đặt plug-in "Deploy tocontainer" theo cùng cách chúng ta đã cài đặt git và plug-in maven.




Thiết lập Jenkins Job để triển khai .war​

Bây giờ là lúc tạo freestyleJob. Truy cập bảng điều khiển chính và nhấp vào tạo job. Chọn freestylejob và tiếp tục.

Thêm Github Repo vào Tab General​

Trong tab general, hãy đánh dấu vào hộp kiểm "Githubproject" và thêm URL của source coderepo hoặc URL của repo mà bạn đã fork từ myrepo.


Thêm URL Github vào Source Code Management​

Trong tab source code management, hãy nhấp vào nút radio "Git" và thêm URL của repository như hiển thị bên dưới. Vì kho lưu trữ của tôi không phải là riêng tư và nó là công khai nên tôi không cần thêm thông tin xác thực.


Chọn Github hook trigger

Chọn “GitHub hook trigger for GitSCM polling” trong tab Build Triggers


Thêm các bước build​

Trong môi trường build, hãy nhấp vào thêm bước build và chọn "Invoke top-level Maven targets"



Forgoals chỉ định clean và package rồi lưu Job.


Kiểm tra build​

Để kiểm tra job xem nó có thể kéo và build code của chúng ta hay không, hãy nhấp vào Build Bây giờ.


Thêm Hành động Triển khai Sau khi Xây dựng

Bây giờ khi chúng ta chắc chắn rằng mã của mình đang được kéo và xây dựng, chúng ta đã sẵn sàng để thêm hành động sau khi xây dựng. Để thêm hành động sau khi xây dựng, hãy nhấp vào hành động sau khi xây dựng trong môi trường xây dựng và chọn "Triển khai war vào một container".



Sau đó, thêm URL của máy chủ tomcat cùng với thông tin xác thực. Để thêm thông tin xác thực, hãy nhấp vào "Thêm" và làm theo các bước bạn thấy và lưu Công việc.


Kiểm tra Bản dựng thủ công​

Bây giờ, hãy kiểm tra xem công việc của chúng ta có thể kéo, xây dựng và triển khai mã trên máy chủ Apache Tomcat hay không. Nhấp vào xây dựng ngay để kiểm tra công việc của chúng tôi.



Như bạn thấy trong ảnh chụp màn hình ở trên, bản dựng thủ công đã thành công và đã được triển khai trên Máy chủ Apache Tomcat.

Để kiểm tra xem cuộc chiến đã thực sự được triển khai hay chưa, hãy truy cập Apache Tomcat để truy cập ứng dụng quản lý.

Tại đây, bạn có thể thấy rằng tệp web_ex.war đã được triển khai thành công trên máy chủ Apache Tomcat.


Kiểm tra ứng dụng Java mẫu​

Để kiểm tra xem ứng dụng Java có đang chạy hay không, hãy truy cập URL .




Thiết lập Webhook trên Github Repo​

Tạo webhook​

Để tạo một cuốn sách babe trên tab, hãy truy cập trang web của cô ấy, đăng nhập vào tài khoản của bạn và làm theo các bước được đề cập bên dưới.
http://jenkins-url/github-webhook?utm_source=diendancongnghe.com

Vào phần cài đặt của kho lưu trữ của bạn, trong bảng điều khiển bên trái, nhấp vào web hooks rồi nhấp vào "AddWebhook"

Trong PayloadURL addhttp://Jenkins-URL:8080/github-webhook.



Bạn có thể chọn các sự kiện mà bạn muốn kích hoạt Webhook này hoặc bạn có thể chọn "Gửi cho tôi mọi thứ" nếu bạn muốn kích hoạt tác vụ Jenkins trên mọi sự kiện, hãy nhấp vào updateWebhook để lưu nó.


Kiểm tra bản dựng tự động khi xác nhận​

Bây giờ chúng ta đã sẵn sàng để kiểm tra tác vụ tự động dựng của mình.

Để kiểm tra xem tác vụ Jenkins của chúng ta có kéo mã từ kho lưu trữ github của chúng ta trên mọi lần xác nhận hay không, hãy sử dụng các lệnh sau.

Để sao chép kho lưu trữ cục bộ, tôi đã sử dụng lệnh sau. Nếu bạn có báo cáo riêng, hãy chuyển báo cáo đó đến hệ thống cục bộ của bạn.

git clone https://github.com/shivalkarrahul/Innovecture.git
cd Innovecture/

Thực hiện một số thay đổi đối với kho lưu trữ để chúng ta có thể đẩy chúng. Ở đây, tôi đã thêm một tệp mới cục bộ mà tôi sẽ đẩy vào remoterepo của mình

touch README.md

Để cấu hình tên người dùng và ID email cho git, hãy sử dụng các lệnh sau.

git config user.name "Rahul Shivalkar"
git config user.email "[emailprotected]"

Để cam kết và đẩy các thay đổi của bạn, hãy sử dụng các lệnh sau

git commit -m "Test Commit"
git push

Ngay sau khi chúng tôi đẩy các thay đổi của mình lên kho lưu trữ trên Github, nó sẽ kích hoạt công việc Jenkins mà chúng tôi đã thêm vào Github Webhook.

Bạn có thể thấy điều này trong "Nhật ký thăm dò" của công việc, hãy tham khảo ảnh chụp màn hình sau đây.





Nếu bạn vào đầu ra bảng điều khiển của công việc, bạn có thể thấy rằng công việc đã được thực hiện thành công và cuộc chiến đã được triển khai tới Apache Tomcat.


Kiểm tra lại​

Bây giờ hãy thay đổi mã để kiểm tra xem mã mới nhất có được triển khai hay không. Tôi sẽ thay đổi thông báo được hiển thị trên trình duyệt.

Nếu bạn đang sử dụng báo cáo của riêng mình thì hãy thực hiện các thay đổi cần thiết trong mã của bạn, ở đây tôi chỉ thay đổi một tệp index.jsp mẫu để in thông báo trên trình duyệt.

vim src/main/webapp/index.jsp

Bây giờ chúng ta hãy xem mã đã thay đổi có được phản ánh hay không.

Cam kết các thay đổi mà bạn đã thực hiện trong mã của mình bằng các lệnh sau.

git add src/main/webapp/index.jsp
git commit -m "Đã thay đổi mã thành Hello World New!"
git push

Nhấn Apache Tomcat URL để truy cập ứng dụng mẫu của chúng tôi.

Bạn có thể thấy rằng mã mới nhất đã được xây dựng và triển khai trên Apache Tomcat, điều này có nghĩa là ứng dụng đã được triển khai thành công và pipeline cũng đã được kích hoạt thành công.

Nếu bạn để ý thấy mã trước đây của tôi chỉ hiển thị "Hello World!" và bây giờ khi tôi thực hiện thay đổi trong index.jsp và commit nó, ứng dụng mới nhất hiển thị "Hello World New!".


Kết luận​

Trong bài viết này, chúng ta đã thấy các bước tạo một pipeline CI/CD đơn giản có thể kéo mã của bạn từ kho lưu trữ Github và triển khai trên máy chủ Apache Tomcat sau mỗi lần commit. Chúng ta cũng đã thấy các bước cài đặt Jenkins, Apache Tomcat, Java, Plug-in trong Jenkins.
 
Back
Bên trên