首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

宝塔面板与 Jenkins 自动化

写作时间:2026-07-07

官网:https://www.bt.cn/new/download.html

  1. 安装命令
wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh ed8484bec
  1. 出现一下则代表宝塔安装成功

  1. 配置安全规则

  1. 浏览器上输入得到的宝塔网址登录后就可访问

宝塔卸载命令

wget http://download.bt.cn/install/bt-uninstall.sh
sh bt-uninstall.sh

jenkins基本介绍

Jenkins 是一款自动化的任务执行工具。通常用于持续集成/持续交付领域。

可以通过界面或Jenkinsfile告诉Jenkins执行什么任务,何时执行。理论上,我们可以让它执行任何任务,但是通常只应用于持续集成和持续交付。

持续集成将软件生产过程从手工模式带入流水线模式,软件生产的某个环节都对应流水线上的每个环节。

流水线模式还能帮助我们将知识固化到自动化流水线中,在一定程度上解决了知识被人带走的问题。(手工模式对于整个软件生产流程很少有人全部知道,使用流水线模式整个软件生产的过程都以pipeline as code的形式保留下来,每个人都能看)

安装jenkins

主要配置


[root@yuan ~]# mkdir -p /data/software
[root@yuan ~]# cd /data/software/
#如果下载较慢,建议采用迅雷下载,然后上传,如果笔记慢直接下载war包
[root@yuan ~]# wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

![](/upload/articles/jenkins war包.png)

安装Java环境

  • 下载jdk,上传至linux并解压
  • 配置/etc/profile的内容
  • 使配置生效
  • 检测java环境信息

启动jenkins

nohup java -jar /data/software/jenkins.war  --httpPort=8777 --httpsPort=8778 > /data/software/jenkins.log 2>&1 &

查看默认生成的密码

[root@yuan software]# tail -222f jenkins.log

#jenkins启动
#service jenkins start
#重启
#service jenkins restart
#停止
#service jenkins stop

开放8777端口供外网访问

如果是云服务器,开放安全组即可,如果是虚拟机在防火墙中加入8777端口并重载配置


$ firewall-cmd --zone=public --add-port=8777/tcp --permanent


$ firewall-cmd --reload


(1)设置开机启用防火墙:systemctl enable firewalld.service    
(2)设置开机禁用防火墙:systemctl disable firewalld.service
(3)启动防火墙:systemctl start firewalld
(4)关闭防火墙:systemctl stop firewalld
(5)检查防火墙状态:systemctl status firewalld 

(1)查看防火墙状态:firewall-cmd --state
(2)重新加载配置:firewall-cmd --reload
(3)查看开放的端口:firewall-cmd --list-ports
(4)开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent
命令含义:
  –zone #作用域
  –add-port=9200/tcp #添加端口,格式为:端口/通讯协议
  –permanent #永久生效,没有此参数重启后失效
注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效
(5)关闭防火墙端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent

外网或宿主机访问浏览器地址http://IP:8777/

Jenkins忘记密码

如果忘记密码

  • 进入到jenkins的工作目录,找到config.xml,我这里是/home/jenkins/.jenkins/config.xml

  • 修改该配置文件useSecurity的节点值为false

<useSecurity>true</useSecurity>
  • 重启jenkins项目后,再次访问jenkins站点
  • 进入到系统管理

找到全局安全配置

进入到用户列表,找到admin用户

保存修改

常用插件安装

jenkins的所有插件安装后需要重启才能生效,由于Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址(清华大学源):

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

修改服务器配置,进入jenkins安装目录 ,找到 /updates/default.json文件 (我这里是/home/jenkins/.jenkins/updates/default.json),将其中的 updates.jenkins-ci.org/download 替换为mirrors.tuna.tsinghua.edu.cn/jenkins ,然后把www.google.com 修改为 www.baidu.com

进入到default.json所在目录

cd /home/jenkins/.jenkins/updates

使用如下命令进行替换


$ sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json 

替换后使用http://192.168.1.195:8777/restart重启jenkins

安装一个插件来试试下载效果

simple theme好看的主题插件

首先安装插件simple theme,安装主题并重新启动Jenkins。转到Manage Jenkins–> Manage Plugins。单击available选项卡并搜索simple theme插件。

使用在线CSS样式

将打开后的内容,拷贝至主题配置中。系统设置 -> Theme,转到Manage Jenkins–> Configure并搜索Theme配置,然后点击新增:

CSS URL:在CSS字段中输入以下URL并保存,可以查看到效果(如果断网样式会失效)

http://afonsof.com/jenkins-material-theme/dist/material-teal.css

Extra CSS:在文本框内贴上CSS样式,在浏览器中打开上述样式的链接,并复制内容到文本框内一样能看到效果,而这种方式更加推荐,适用于没有网络的环境。

Git Parameter Plug-In, 安装后可以选择按照git tag或者branch` 发布版本。

NodeJS Plugin 安装后可以执行 npm 指令,打包和发布前端代码

SonarQube Scanner for Jenkins 安装后可以执行 sonar scanner 指令,跑 CI 时检查代码质量。

Maven Integration plugin 设置 maven 指令的 classpath 和指令路径。

Workspace Cleanup Plugin 可以指定 workspace 最多保留多少个历史任务。

Credentials Binding用户凭证插件安装

JDK集成

下载Linux JDK8

配置/etc/profile文件

$ vim /etc/profile



export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使配置文件生效,并检查版本号

$ source /etc/profile

$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

jenkins中配置JDK路径

jenkins ->全局工具配置 ->JDK ->新增JDK

用户凭证的安装

凭据就是用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便 Jenkins可以和这些第三方的应用进行交互。

凭证插件安装Credentials Binding

该插件默认在一开始就会被安装,安装后在jenkins-》系统管理-》安全栏目会出现Manage Credentials选项,若没有需要安装插件并重启。

凭证类型

集成Git

为了jenkins能够拉取代码,需要安装Git环境和jenkins对应的Git插件

CentOS 7上安装Git环境


$ yum install git -y

$ git --version

jenkins安装Git插件

jenkins配置Git环境

此处无需在jenkins中配置Git环境,采用默认生成的即可

Gitee码云对接

添加凭据

Jenkins->系统管理->系统->全局凭证->添加凭证

Gitee上任意建一个仓库

测试凭据是否能够使用

jenkins -> 新建任务 -> 自由风格项目

进入jenkins的工作空间查看文件是否拉取下来,所有拉取的文件都会存放在jenkins工作空间中

Maven集成

  1. 下载安装

$ su root
Password:


$ cd /usr/local/java/


$ wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz


$ tar -zxvf apache-maven-3.6.3-bin.tar.gz


  1. 环境配置
$ vim /etc/profile

在最后面JDK配置上作出一些更改
export MAVEN_HOME=/usr/local/java/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
  1. 使配置生效并查看安装情况
$ source /etc/profile
$ mvn -version
  1. jenkins配置Maven

  1. 安装Maven插件

  1. 使用jenkins用户在/data/software目录下新建一个repository文件夹,用来作为maven的仓库
$ cd /data/software
$ mkdir repository
  1. 使用root账户修改Maven的settings.xml文件(指定仓库目录和阿里云镜像)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <!--本地仓库-->          
  <localRepository>/data/software/repository</localRepository>

  <mirrors>
    <!--阿里云镜像-->
    <mirror>
      <id>aliyun-maven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven mirror</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
  </mirrors>
    ...
    ...
</settings>
  1. jenkins配置settings.xml文件

  2. Maven测试项目构建

新建一个Controller进行测试使用

  1. 在码云上建一个同名的git项目,git上的项目和本地项目的名称要相同

  1. 使用Git上传到码云

$ cd existing_folder

$ git init


$ git add .
$ git commit -m "first commit"


$  git remote add origin https://gitee.com/yuanyuan1111/it235-jenkins-jar


$ git push -u origin master

## 如果push报错可以先拉取一下,会有新的gitee生成的文件拉下来,然后重新添加提交并push
$ git pull origin master --allow-unrelated-histories
$ git add .
$ git commit -m "拉取下来合并后再次提交"
$ git push -u origin master

  1. jenkins添加Maven项目任务

编写Maven编译命令

构建并查看控制台日志

保存后,点击立即构建,然后进入日志控制台查看日志

从日志可以看到代码已经在拉取了,而且走的事阿里云仓库,第一次拉取过程会比较长。

通过查看/data/software/repository可以看到有存放拉取的jar包,通过这2个证据可以证明settings.xml文件配置成功且有效

构建成功后查看jenkins的workspace目录下的jar包

到此Maven集成完毕

SpringBoot项目发布

准备SpringBoot项目

浏览器访问本地的服务是否启动成功

提交代码并推送至Gitee(此处你也可以使用Git命令的方式)

弹出登录提示,输入用户名密码

在Gitee上检查到代码推送成功

添加Maven风格的任务

填写Gitee仓库地址

填写Maven构建操作项

配置Post Steps,选中执行shell

![](/upload/articles/配置Post Steps,选中执行shell.png)

配置Post Steps,选中执行shell

应用服务器规划

由于jenkins构建消耗内存极大,一般jenkins是一台单独的工具机器,Java项目一般在其他的机器上,这里我重新安装一台虚拟机,有条件的同学可以直接开通阿里云的ECS

应用服务器信息

  • IP:192.168.1.2
  • JDK:1.8(安装过程省略)
  • user:admin
  • 部署路径:/data/app/it235-boot
  • 端口:9010

配置ssh免密登录

免密登录主要是方便jenkins服务器192.168.1.195的jenkins用户—》应用服务器192.168.1.2的admin用户上的jar包拷贝,部署本就是jar包拷贝的过程

在jenkins机器上使用jenkins用户生成秘钥注意此处是jenkins用户

$ su jenkins  #如果没创建则不用执行
$ ssh-keygen -t rsa

运行后会在当前用户的根目录生成一个.ssh文件夹

.ssh文件夹中的文件描述

  • id_rsa : 生成的私钥文件
  • id_rsa.pub : 生成的公钥文件
  • know_hosts 刚开始是没有的,接下来会配置: 已知的主机公钥清单

接下来需要将公钥导入到认证文件中

$ su jenkins
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

如果希望ssh公钥生效需满足至少下面两个条件:

  • .ssh目录的权限必须是700
  • .ssh/authorized_keys文件权限必须是600

给对应文件授权

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

将authorized_keys文件拷贝到应用服务器的admin用户.ssh目录下




$ scp -p ~/.ssh/id_rsa.pub admin@192.168.1.2:/home/admin/.ssh/authorized_keys

在jenkins192.168.1.195服务器上进行免密连接测试


$ cd ~/
$ touch filetest
$ scp -p filetest admin@192.168.1.2:/home/admin/filetest



$ ssh admin@192.168.1.2
Last login: Sun Sep 20 21:53:03 2020
$ exit

到此免密登录和拷贝实现成功,为接下来jar包部署提供了快捷的帮助

编写jenkins发布脚本

#!/bin/bash

echo "部署的目录和项目名称"
DIR="/data/app"
projectName="it235-boot"

echo "待部署的应用服务器,可多台"
server_ips="192.168.1.2"
for server_ip in ${server_ips[@]}
do

echo "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no admin@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
  mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar 
fi
EOF

echo "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar admin@${server_ip}:/tmp/${projectName}.jar

echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no admin@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar

EOF

done

echo "success"

编写应用启动脚本

/data/app/it235-boot目录下创建启动脚本start.sh

$ touch start.sh
$ vim start.sh

#!/bin/bash
set -e #任何命令出错就退出
set -o pipefail

APP_ID=it235-boot
APP_DIR="/data/app"

nohup java -Dspring.profiles.active=dev -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];then
        sleep 3
        tail -n 10 release_out.log
        sleep 5
        tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
    echo "Application started ok"
    exit 0
else
    echo "Application started error"
    exit 1
fi

在/data/app/it235-boot目录下创建停止脚本stop.sh

$ touch stop.sh
$ vim stop.sh


#!/bin/bash

APP_ID=it235-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

并进行启动和停止测试,查看日志输出是否正常

将下述启动代码配置jenkins中

sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh

访问并测试代码是否生效

如果是虚拟机则需要给防火墙添加9010端口

$ su root

$ firewall-cmd --zone=public --add-port=9010/tcp --permanent

$ firewall-cmd --reload

  • 如果是ECS则需要在安全组中开放9010端口此处省略
  • 此外也可以采用Nginx映射此处省略

修改代码返回值,提交至Gitee,并再次进行构建发布,访问http://192.168.1.2:9010查看结果是否更新

avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Nginx 基础入门

2026-07-08

Maven 多模块与私服

2026-07-08