记录一下Linux下部署Jenkins相关
前期准备工作
因为Jenkins是通过Java开发而来,因此前期我们需要在系统中安装Java环境
jenkins下载地址:https://www.jenkins.io/download/
注意:jenkins和有不同的JDK版本,注意版本兼容:
相关兼容信息访问:War Jenkins Packages
检查系统中是否包含有java环境:
1 | # 先确认以前有没有安装过 |
安装并校验:
1 | # 安装1.8.0的所有文件 默认jre jdk 安装路径是/usr/lib/jvm 下面 |
安装并部署Jenkins
安装
这里是针对版本使用的jenkins包
国内包:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/
国内对于各种版本:https://mirrors.tuna.tsinghua.edu.cn/jenkins/
国外包:CentOS版本下的包 Redhat Jenkins Packages
国外包:针对各种版本 Jenkins mirrors
使用rpm手动安装时:
1 | # 下载 |
使用repo安装时:
1 | 1、jenkins官方yum源安装 |
部署启动Jenkins服务
1 | 启动服务 |
配置国内插件源
找到插件配置文件
1
find / -iname "*UpdateCenter.xml"
得到如下回显:
1
/var/lib/jenkins/hudson.model.UpdateCenter.xml
修改文件内容
1
nano /var/lib/jenkins/hudson.model.UpdateCenter.xml
原来内容:
1
2
3
4
5
6
7
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>修改后的:
1
2
3
4
5
6
7<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>
修改Jenkins端口号
之前有些版本修改:
好些博客上说修改
/etc/sysconfig/jenkins
,尝试过无效!后来的有些版本修改:
修改
/usr/lib/systemd/system/jenkins.service
找到
Environment="JENKINS_PORT=8080"
属性修改即可记得修改后使用
systemctl daemon-reload
重新加载下服务
配置初始化Jenkins环境
浏览器访问:http://服务器ip+8080
如:http://192.168.0.82:8080 得到如下页面
因为Jenkins安装启动时默认配置了密码,所以需要在提示的地址上查看密码后填入,查看方式:
1 | cat /var/lib/jenkins/secrets/initialAdminPassword |
点击继续按钮,得到如下界面,根据个人需求确认是否需要安装插件:
这里选择推荐的插件,点击安装,得到如下界面:
等待插件安装成功,得到如下界面:
根据个人需求创建用户即可,下一步的页面如下:
根据个人需求看是否修改,下一步的页面如下:
下一个页面:
Jenkins部署Vue前端项目
环境准备
这里直接使用本地的Node.js环境
安装Node.js环境
1
yum install nodejs -y
查看Node.js环境
1
node -v
安装Npm环境
某些情况下可能没有Npm环境,这里需要手动安装
1
yum install nodejs -y
查看环境
1
npm -v
安装Vue需要的全局环境等
1
2
3
4
5
6
7
8
9
10yarn工具
npm install -g yarn
pnpm工具
npm install -g pnpm
hexo工具
npm install -g hexo-cli
全局工具和本地开发大差不差
项目构建后的Shell脚本编写
1 | 安装项目的依赖包,根据各自的项目打包工具编写即可 |
如果是项目刚开始的情况下,可以直接将nginx代理该项目时修改代理的配置地址为当前项目工作目录下打包文件目录即可
如果是项目半路将服务给Jenkins管理,可将打包文件迁移到Nginx已经配置好的代理目录下
比方说我代理的目录是
/opt/nginx/tool
,这里备份之前的文件并将打包文件迁移到代理目录1
2
3
4
5
6
7
8
9
10复制之前的文件到备份目录
cp -r /opt/nginx/tool/ /opt/nginx/back/tool-$(date +%Y%m%d%H%M%S)
if [ ! -d "/opt/nginx/tool" ];then
mv tool /opt/nginx/tool
else
mv /opt/nginx/tool/ /opt/nginx/back/tool-$(date +%Y%m%d%H%M%S)
# 复制打包文件到项目地址上
# cp -r tool /opt/nginx/tool
mv tool /opt/nginx/tool
fi
Jenkins
部署Maven
项目:如Spring Boot
微服务
环境准备:
yum
安装Maven:这种方法安装的无需配置环境变量
1
2
3
4
5
6安装Maven源
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
安装
yum -y install apache-maven如果在安装过程中提示如下错误:
1
2
3
4
5Transaction check error:
file /usr/share/java/plexus/plexus-cipher.jar from install of apache-maven-0:3.5.2-1.el7.noarch conflicts with file from package plexus-cipher-1.7-5.el7.noarch
file /usr/share/java/plexus/plexus-sec-dispatcher.jar from install of apache-maven-0:3.5.2-1.el7.noarch conflicts with file from package plexus-sec-dispatcher-1.4-13.el7.noarch
file /usr/share/java/maven-wagon/file.jar from install of apache-maven-0:3.5.2-1.el7.noarch conflicts with file from package maven-wagon-0:2.4-3.el7.noarch
file /usr/share/java/maven-wagon/provider-api.jar from install of apache-maven-0:3.5.2-1.el7.noarch conflicts with file from package maven-wagon-0:2.4-3.el7.noarch依次移除冲突包即可
1
2
3
4yum remove plexus-cipher-1.7-5.el7.noarch
yum remove plexus-sec-dispatcher-1.4-13.el7.noarch
yum remove maven-wagon-0:2.4-3.el7.noarch解压方式安装:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18下载
这里的下载带了参数 --no-check-certificate,如果下载的时候报错可带上
wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
解压
解压
tar -zxvf apache-maven-3.8.4-bin.tar.gz
配置环境变量
# 编辑/etc下的profile文件
sudo nano /etc/profile 或者 vim nano /etc/profile
# 在profile文件追加如下信息(/opt/software/apache-maven-3.8.4是你服务器上面的maven解压地址)
export MAVEN_HOME=/opt/software/apache-maven-3.8.4
export PATH=$PATH:$MAVEN_HOME/bin
使环境变量生效
sudo source /etc/profileMaven仓库配置
yum 安装的 Maven,使用
rpm -qa|grep apache-maven
查看Maven安装目录,找到配置文件的路径位置:/etc/maven/settings.xml
解压版的和Windows版本大差不差:
Spring Boot 项目准备
因为项目是Jenkins打包使用的,而有些项目在开发和正式运行的环境参数的不一样的,可能有多套环境的配置,这里需要在项目中配置在maven打包时使用不同的配置方法
项目下
比如我的配置文件如下:
在项目的
pom.xml
下添加如下配置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<profiles>
<!-- 开发环境-->
<profile>
<id>dev</id>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
<!--设置默认使用配置-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--部署环境-->
<profile>
<id>prod</id>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
</profiles>如果是IDEA开发环境
这样在使用时,maven工具会知道当前使用的是哪个配置,同时可手动勾选设置默认的配置文件
注意:如果项目多个模块开发的,记得配置信息放置需要使用的打包模块下!
如何让配置生效
在 application.yml中将
1
2
3spring:
profiles:
active: dev改为
1
2
3spring:
profiles:
active: '@spring.profiles.active@'注意,@符号设置的值必须和profile下的properties值一致
如果配置文件是properties文件配置的,使用如下方式引用
1
spring.profiles.active='@spring.profiles.active@'
打包使用
如果是开发环境,这里不赘述了
控制台命令格式打包
这里的 -p 即指定打包哪个配置文件,如果不指定,默认使用的是dev配置文件
1 | $ mvn clean install -P prod -Dmaven.test.skip=true |
服务启动准备
因为是打包后程序需要启动、停止、重启等操作,这里给jar包写了个sh脚本去执行
创建spring-boot-admin.sh
文件,填写 shell
脚本如下:
1 | !/bin/bash |
服务的启动和关闭:
1 | 启动服务 |
当然,如果有可能,有时也会有开机自启的操作,需要将sh脚本注册为系统服务,以服务的方式去开机自启、查看状态等
在/etc/systemd/system
目录下创建一个spring-boot-admin.service
文件,文件内容为:
(文件也可以在/usr/lib/systemd/system
目录下创建,然后使用 ln -l 命令软连接到/etc/systemd/system下)
同时service文件填写如下信息:
1 | [Unit] |
以服务的形式启动、重启、开机自动等
1 | 刷新配置 |
Jenkins创建服务
服务创建这些不再赘述,重点是需要脚本去执行打包,启动服务等
以下命令中的spring-boot-admin
字段是参考,即配置的项目或者服务名称,根据个人情况修改即可
打包
1
mvn clean install -P prod -Dmaven.test.skip=true
迁移打包文件
如果是项目刚开始的情况下,可以直接将shell脚本中直接将打包文件地址指定在启动命令中接口
如果是项目半路将服务给Jenkins管理,可将打包文件迁移到shell脚本配置的jar包地址下(因为我这里是半路上觉得每次打包上传很烦,因此就是这种方式)
1
2
3
4
5
6
7
8
9
10
11
12
13# 复制之前的文件到备份目录,判断文件是否存在,如果不存在,直接移动文件,存在该文件就备份文件后再移动
if [ ! -f "/opt/web/spring-boot-admin-1.0.0.jar" ];then
mv spring-boot-admin-1.0.0.jar /opt/web/spring-boot-admin-1.0.0.jar
# 或者为了避免文件丢失使用cp命令
cp -r spring-boot-admin-1.0.0.jar /opt/web/spring-boot-admin-1.0.0.jar
else
# 这里将之前的文件备份一下,以免现在的包有问题导致出现的各种问题
mv /opt/web/spring-boot-admin-1.0.0.jar /opt/web/back/spring-boot-admin-1.0.0.jar-$(date +%Y%m%d%H%M%S)
# 复制打包文件到项目地址上
mv spring-boot-admin-1.0.0.jar /opt/web/spring-boot-admin-1.0.0.jar
# 或者为了避免文件丢失使用cp命令
# cp -r spring-boot-admin-1.0.0.jar /opt/web/spring-boot-admin-1.0.0.jar
fi执行启动服务
1
systemctl restart spring-boot-admin.service