Jenkins安装部署及发布完整版

579 阅读3分钟

1、Jenkins所需环境

  1. Java环境(JDK、MySQL、Nginx、Redis)

Linux搭建Java环境:www.jianshu.com/p/366bf35b7…

  1. Git环境
  2. Maven环境

剩下的两个环境将在本篇安装

2、安装Git

yum install git -y
git --version

安装后无需任何配置

3、安装Maven

下载并解压

cd /usr/local/environment
wget  https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz --no-check-certificate

mkdir -p /usr/local/environment/maven
tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local/environment/maven

清空配置文件内容

mkdir /usr/local/environment/maven/repo
vim /usr/local/environment/maven/apache-maven-3.8.6/conf/settings.xml
:%d

配置文件替换

<?xml version="1.0" encoding="UTF-8"?>
 
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
 
  <localRepository>/usr/local/environment/maven/repo</localRepository>
  
  <pluginGroups>
  </pluginGroups>
 
  <proxies>    
  </proxies>
 
  <servers>
  </servers>
 
  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>
 
  <profiles>
  </profiles>
</settings>

配置环境变量

export MAVEN_HOME=/usr/local/environment/maven/apache-maven-3.8.6
export PATH=$PATH:$MAVEN_HOME/bin

测试安装结果

source /etc/profile
mvn -v

4、安装Jenkins

参考: Jenkins安装部署-Jenkins官网

Jenkins历史版本下载-Jenkins官网

注意: Jenkins安装有两种方式:

  1. yum安装(这种方式安装的是最新长期支持版本,此版本支持的最低Java版本为JDK11,大家可以根据实际情况选择安装)
  2. 下载指定版本war包部署(可以任意指定版本)

4.1、安装方式一,yum安装:

# 安装Jenkins(最新长期支持版本,最低支持Java版本为JDK11)
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

4.1.1、修改配置文件,配置Jenkins镜像

1、配置文件位置
# 旧版本Jenkins配置文件位置(新版本此文件依然存在,但修改毫无作用!)
vim /etc/sysconfig/jenkins

# 新版本配置文件所在位置(通过yum安装一般都是新版本)
vim /usr/lib/systemd/system/jenkins.service

2、修改配置文件中启动用户为root
User=root
Group=root

4.1.2、启动Jenkins

1、启动Jenkins
systemctl daemon-reload
systemctl start jenkins
systemctl enable jenkins

2、查看初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword

3、修改Jenkins服务器配置及修改国内镜像源
/var/lib/jenkins/updates/default.json    # 服务器配置默认安装位置

# 将此文件中的updates.jenkins.io/download 替换为 mirrors.tuna.tsinghua.edu.cn/jenkins
# 然后,把 www.google.com 修改为 www.baidu.com

下载地址替换:
sed -i 's/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json
sed -i 's/www.google.com/www.baidu.com/g' /var/lib/jenkins/updates/default.json

修改为国内镜像:
进入 Manage Jenkins -> Manage Plugin -> Advanced 最下面有 Update Site,设置为:(以下任意一个都可以)
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
https://updates.jenkins.io/update-center.json

4、修改jenkins目录所属用户
chown -R root:root /var/lib/jenkins/
chown -R root:root /var/cache/jenkins/
chown -R root:root /var/log/jenkins/

设置完成需要重启Jenkins

4.2、安装方式二,war包部署:

cd /usr/local/environment
# 此版本支持Java 8, Java 11, or Java 17
wget https://mirrors.jenkins.io/war-stable/2.346.1/jenkins.war

# 下载完成后编写一个Jenkins启动脚本,并启动

4.2.1、war包启动脚本

#!/bin/bash

JENKINS_PATH="/usr/local/environment/"
PKG_NAME="jenkins.war"

PID=$(ps -ef | grep ${PKG_NAME} | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]
then
    echo ${PKG_NAME}"-程序未启动。"
else
    kill -9 $PID
    echo ${PKG_NAME}"-程序在启动中,已停止。"
fi

echo ${JENKINS_PATH}${PKG_NAME}
echo "current path:"$(pwd)

BUILD_ID=dontKillMe nohup java -jar ${JENKINS_PATH}${PKG_NAME} --httpPort=8080 >> /dev/null 2>&1 &

echo "starting service..."
sleep 20

#根据重启后是否有当前应用判断启动是否成功
endPID=$(ps -ef | grep  ${PKG_NAME} | grep -v grep | awk '{ print $2 }')

if [ -z "$endPID" ]
then
    echo ${PKG_NAME}"-程序启动失败。"
else
    echo ${PKG_NAME}"-程序重启成功...pid:"${endPID}
fi

4.2.2、初始密码查看

# 通过war包安装后,配置Jenkins目录一般为用户的home目录下,比如:
/root/.jenkins/
# 查看密码
cat /root/.jenkins/secrets/initialAdminPassword

5、Jenkins插件安装

进入 Manage Jenkins -> Manage Plugin -> 第二个选项 Available 搜索以下三个插件:

  1. Git plugin
  2. Maven Integration plugin (此插件可以在创建项目时创建Maven项目)
  3. Publish Over SSH (发布文件到远程服务器时使用)
  4. NodeJS Plugin (构建vue项目时使用)

分别点击 Install without restart 按钮进行安装,全部安装完成后重启

6、添加全局配置

进入 Manage Jenkins -> Global Tool Configuration 进行全局配置

image.png

Maven Configuration 配置

# 配置内容(指定Maven的settings.文件)
/usr/local/environment/maven/apache-maven-3.8.6/conf/settings.xml
image.png

JDK 配置

/usr/local/environment/jdk1.8.0_341
image.png

Maven 配置

/usr/local/environment/maven/apache-maven-3.8.6
image.png

7、远程部署配置、Nodejs配置(可选)

如果要将构建好的jar包发布到远程服务器 或者 要构建Vue项目 则可以进行下面两个配置

7.1、远程部署配置

进入 Manage Jenkins -> Configure System 滑到最下面的 SSH Servers

image.png

7.2、Nodejs配置

进入 Manage Jenkins -> Global Tool Configuration 滑到最下面的 NodeJS

image.png

8、构建并发布Maven项目

注意:以下配置 本机发布 与 远程发布 配置一致!!!(属于公共配置)

8.1、进入Jenkins首页,新建一个项目

image.png image.png

8.2、配置Git、Build

image.png image.png

9、本机构建运行jar包

9.1、配置Jenkins执行脚本

image.png

9.2、配置服务器项目执行脚本

#!/bin/bash

# 若使用Jenkins构建启动这两行必须要加!!!(否则无法找到Java)
export JAVA_HOME=/usr/local/environment/jdk1.8.0_341
export PATH=$PATH:$JAVA_HOME/bin

JAR_PATH="../ruoyi-admin/target/"
PKG_NAME="ruoyi-admin.jar"

PID=$(ps -ef | grep ${PKG_NAME} | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]
then
    echo ${PKG_NAME}"-程序未启动。"
else
    kill -9 $PID
    echo ${PKG_NAME}"-程序启动中,已停止。"
fi

echo ${JAR_PATH}${PKG_NAME}
echo "current path:"$(pwd)

BUILD_ID=dontKillMe nohup java -jar ${JAR_PATH}${PKG_NAME} --spring.profiles.active=company --server.port=8090 >> /dev/null 2>&1 &

echo "starting service..."
sleep 20

#根据重启后是否有当前应用判断启动是否成功
endPID=$(ps -ef | grep  ${PKG_NAME} | grep -v grep | awk '{ print $2 }')

if [ -z "$endPID" ]
then
    echo ${PKG_NAME}"-程序启动失败。"
else
    echo ${PKG_NAME}"-程序重启成功...pid:"${endPID}
fi

10、远程发布到服务器并运行jar包

注意:发布到远程服务器的jar包会带上项目的目录!!!具体情况可以发布成功后到服务器查看。可以使用下面的 Remove prefix 配置项进行删除

10.1、配置Jenkins执行脚本

image.png

10.2、配置服务器项目执行脚本

#!/bin/bash

# 若使用Jenkins构建启动这两行必须要加!!!(否则无法找到Java)
export JAVA_HOME=/usr/local/environment/jdk1.8.0_341
export PATH=$PATH:$JAVA_HOME/bin

# 第一次传过来的jar文件名称
FIRST_PKG_NAME="ruoyi-admin.jar"

JAR_PATH="/data/orange/"
PKG_NAME="ruoyi-admin-start.jar"

# 备份上次执行的jar文件
mv ${JAR_PATH}${PKG_NAME} ${JAR_PATH}${PKG_NAME}.$(date +"%Y%m%d%H%M")

# 将第一次传过来的jar重命名为要执行的名称
mv ${JAR_PATH}${FIRST_PKG_NAME} ${JAR_PATH}${PKG_NAME}

PID=$(ps -ef | grep ${PKG_NAME} | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]
then
    echo ${PKG_NAME}"-程序未启动。"
else
    kill -9 $PID
    echo ${PKG_NAME}"-程序启动中,已停止。"
fi

echo ${JAR_PATH}${PKG_NAME}
echo "current path:"$(pwd)

BUILD_ID=dontKillMe nohup java -jar ${JAR_PATH}${PKG_NAME} --spring.profiles.active=company --server.port=8090 >> /dev/null 2>&1 &

echo "starting service..."
sleep 20

#根据重启后是否有当前应用判断启动是否成功
endPID=$(ps -ef | grep  ${PKG_NAME} | grep -v grep | awk '{ print $2 }')

if [ -z "$endPID" ]
then
    echo ${PKG_NAME}"-程序启动失败。"
else
    echo ${PKG_NAME}"-程序重启成功...pid:"${endPID}
fi

11、构建Vue项目并发布到远程服务器

11.1、创建自由风格项目

注意:Vue项目创建时为 自由风格项目 如下图:

image.png

11.2、选择Node环境

image.png

11.3、远程发布

image.png