Cài đặt và cấu hình Jenkins với Shell cho tự động triển khai ứng dụng

Môi trường máy chủ: CentOS 7.5

# Cài đặt JDK và cấu hình biến môi trường (bước này được bỏ qua)
# Tải xuống Maven từ trang web chính thức của Maven
# Tải lên máy chủ, giải nén và di chuyển
tar zvxf apache-maven-3.8.2-bin.tar.gz
mv apache-maven-3.8.2 /usr/local/
# Cấu hình biến môi trường
vim /etc/profile

Thêm các dòng sau vào file:

MAVEN_HOME=/usr/local/apache-maven-3.8.2
export PATH=$MAVEN_HOME/bin:$PATH
# Áp dụng biến môi trường
source /etc/profile
# Kiểm tra phiên bản Maven
/usr/local/apache-maven-3.8.2/bin/mvn --version
# Thay đổi kho lưu trữ Maven thành Aliyun
cd /usr/local/apache-maven-3.8.2/conf
vim settings.xml

Chèn đoạn mã sau vào khoảng dòng 159:

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>
# Cài đặt Jenkins
# Bước 1: Tải gói cài đặt
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.213-1.1.noarch.rpm

# Bước 2: Cài đặt gói
sudo rpm -ivh jenkins-2.213-1.1.noarch.rpm

# Bước 3: Thiết lập cổng cho Jenkins, ở đây tôi đặt là 9080
sudo vi /etc/sysconfig/jenkins
JENKINS_PORT="9080"
# Đường dẫn mặc định: /var/lib/jenkins

# Bước 4: Khởi động Jenkins
sudo systemctl start jenkins

Nếu gặp lỗi, kiểm tra lại đường dẫn Java trong file khởi động:

vi /etc/init.d/jenkins

Truy cập Jenkins thông qua trình duyệt:

http://ip:9080

Lấy mật khẩu đăng nhập ban đầu từ đường dẫn sau:

/var/lib/jenkins/secrets/initialAdminPassword

Nếu gặp vấn đề quyền truy cập, thực hiện lệnh:

sudo chmod 755 -R /var/lib/jenkins/secrets/

Cài đặt các plugin cần thiết trong phần quản lý hệ thống.

Tạo một công việc mới và cấu hình:

  • Kết nối đến kho mã nguồn sử dụng Git, bao gồm địa chỉ clone, tài khoản, mật khẩu và nhánh cần xây dựng.
  • Cấu hình môi trường xây dựng trước khi bắt đầu.
  • Thực thi các lệnh shell tùy chỉnh.
  • Cấu hình kích hoạt xây dựng tự động mỗi 10 phút nếu có sự thay đổi trong mã nguồn.

Ví dụ script shell:

# Đường dẫn tới file jar sẽ chạy
appPath="/opt/java/applications/MyApp-1.0-SNAPSHOT.jar"
if [ ! -f "$appPath" ]; then
   echo "===File không tồn tại, không thể khởi động!!!=="
else
   appPid=$(pgrep -f MyApp-1.0-SNAPSHOT.jar)
   if [ -z "$appPid" ]; then
       echo "----------------MyApp đang khởi động----------"
       nohup java -jar -Xms50m -Xmx100m $appPath > /dev/null 2>&1 &
       until [ -n "$(pgrep -f MyApp-1.0-SNAPSHOT.jar)" ]; do sleep 1; done
       echo "MyApp đã khởi động thành công với PID $(pgrep -f MyApp-1.0-SNAPSHOT.jar)"
   else
       echo "----------------MyApp đang chạy, vui lòng dừng trước----------"
   fi
fi

Script dừng ứng dụng và cập nhật file jar mới:

# Dừng tiến trình hiện tại
kill -9 $(pgrep -f MyApp-1.0-SNAPSHOT.jar)
echo "===Ứng dụng đã bị dừng!=="
sleep 1
# Xóa file jar cũ
rm -f /opt/java/applications/MyApp-1.0-SNAPSHOT.jar
# Sao chép file jar mới từ Jenkins workspace
cp /var/lib/jenkins/workspace/my-app/target/MyApp-1.0-SNAPSHOT.jar /opt/java/applications/
if [ -f "/opt/java/applications/MyApp-1.0-SNAPSHOT.jar" ]; then
    echo "===Cập nhật file jar thành công!=="
    # Khởi động lại ứng dụng
    nohup java -jar -Xms50m -Xmx100m /opt/java/applications/MyApp-1.0-SNAPSHOT.jar > /dev/null 2>&1 &
else
    echo "===Cập nhật file jar thất bại!=="
fi

Cài đặt plugin Git Parameter để lựa chọn nhánh khác nhau khi xây dựng.

Cài đặt Jenkins từ WAR với Java 17

# Cài đặt các gói phụ thuộc
yum install fontconfig

# Thiết lập thư mục lưu trữ Jenkins
export JENKINS_HOME=/usr/local/jenkins/home

# Tạo thư mục log cho Jenkins
mkdir -p /usr/local/jenkins/jenkins-log

# Khởi động Jenkins từ WAR file
nohup java -jar /usr/local/jenkins/jenkins.war --httpPort=9080 > /usr/local/jenkins/jenkins-log/jenkins.log 2>&1 &

# Kiểm tra cổng
lsof -i :9080

# Đổi nguồn cập nhật thành kho lưu trữ ở Tsinghua University
sed -i 's|https://updates.jenkins-ci.org/update-center.json|https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json|g' $JENKINS_HOME/hudson.model.UpdateCenter.xml

# Khởi động lại Jenkins
sudo systemctl restart jenkins

# Lấy mật khẩu đăng nhập ban đầu
cat $JENKINS_HOME/secrets/initialAdminPassword

Thẻ: Jenkins Shell Script Maven CentOS git

Đăng vào ngày 21 tháng 5 lúc 06:53