Linux(centos7)搭建Jenkins自动构建Springboot项目及vue前端项目
Linux(centos7)搭建Jenkins自动构建Springboot项目及vue前端项目一、环境准备 安装Java环境安装git环境安装maven环境安装nodejs环境Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法二、安装jenkins 与配置安装jenkins启动jenkins安装扩展插件Jenkins全局配置maven配置JDKGit配置MavenNodeJS三、构建项目构建SpringBoot项目新建maven项目添加Credentials源码管理构建环境BuildPost Stepsshell脚本编写逻辑shell脚本开始构建-启动构建vue前端项目构建Freestyle project构建环境Build/构建Shell 脚本开始构建-启动四、自动构建-码云HookGitee配置 项目Gitee连接配置配置构建触发器生成Hook密码设置gitee项目-webHooks五、自动构建-Gitea HookGitea Servers 配置新建 gitea Access Tokens关闭 CSRF 验证修改授权策略项目配置 构建触发器配置gitea web钩子常见问题
一、环境准备
安装Java环境
传送门:Linux(centos7)环境下配置jdk1.8 - d2pc - OSCHINA - 中文开源技术交流社区
安装git环境
传送门:Linux(centos7)安装Git - d2pc - OSCHINA - 中文开源技术交流社区
安装maven环境
传送门:Linux(centos7)环境下配置maven3.6 - d2pc - OSCHINA - 中文开源技术交流社区
安装nodejs环境
传送门:Linux(centos7)环境配置nodejs 安装及环境配置 - d2pc - OSCHINA - 中文开源技术交流社区
Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法
传送门:Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法 - d2pc - OSCHINA - 中文开源技术交流社区
---------------------------下面正片环节---------------------------
二、安装jenkins 与配置
安装jenkins
教程以:jenkins 2.316 版本为例子
最新版本下载地址:Index of /war/latest
wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
下载指定版本:Index of /war
mkdir /usr/local/jenkins
cd /usr/local/jenkins
wget http://mirrors.jenkins-ci.org/war/2.316/jenkins.war
启动jenkins
通过java -jar来启动项目,因为jenkins.war包里面已经内置了jetty服务器,可以直接启动,通过--httpPort来指定启动端口,添加&表示以服务形式启动。
java -jar jenkins.war --httpPort=8090 &
启动后,控制台显示密码
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
1b246b95184d448282fde671d241998a
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
接下来打开 http://ip:8090/ 即可。然后输入对应的用户密码,解锁
如果忘记密码也可以通过 查看文件
cat /root/.jenkins/secrets/initialAdminPassword
新手推荐使用默认插件安装
安装完成后,创建管理员用户密码,直接走入系统
安装扩展插件
安装扩展插件,Springboot+vue项目需要用到git,maven,nodejs等插件,所以先安装对应插件,
打开Manager Jenkins
-> Manage Plugins
-> Available
(可选插件)
插件列表
目前springboot项目代码是保存在gitee,vue项目是保存在gitea,所以需要安装对应插件
Jenkins全局配置
打开Manager Jenkins
-> Global Tool Configuration
这里需要配置jdk,maven,git及nodejs环境变量
maven配置
配置settings.xml信息
/usr/local/maven/apache-maven-3.6.3/conf/settings.xml
JDK
别名:jdk1.8.0_231
JAVA_HOME:/usr/local/jdk1.8.0_231
Git配置
Name:git-2.9.0
Path to Git executable:/usr/local/bin/git
Maven
Name:maven-3.6.3
MAVEN_HOME:/usr/local/maven/apache-maven-3.6.3
NodeJS
Name:node-v12.14.1
安装目录:/usr/local/nodejs/node-v12.14.1
三、构建项目
构建SpringBoot项目
新建maven项目
打开 新建Item
-> 构建一个maven项目
,输入名称,确定,进入配置面,源码管理
- 配置Repository URL,这里以 gitee 源码为例
- 配置Credentials,因为项目不是开源项目,需要提供验证账号
添加Credentials
源码管理
这里我只打包开发分支,如果是别的分支,写上对应名称即可,如:*/mater
构建环境
添加构建过程控制台输出时间和日志
Build
Goals and options,指定打包激活的环境
clean install -Dmaven.test.skip=true -P dev
Post Steps
经过上面步骤之后,系统会构建项目到 /root/.jenkins/workspace/
目录 我们通过shell脚本来更新文件然后重启项目
shell脚本编写逻辑
- 新建一个目录,先把打包好的jar统一放在此目录,再通过此目录进去统一替换项目的jar
- 停止应用,准备文件替换
- 统一替换项目文件,远程服务器通过
scp
方式 - 启动应用信息
mkdir -p /home/deploy/develop/lib/
shell脚本
#!/bin/bash echo "切换到打包目录" cd /root/.jenkins/workspace/jeecgboot-develop echo "开始复制微服模块,采用 \cp 命令不提示覆盖" \cp ./jeecg-cloud-module/jeecg-cloud-gateway/target/jeecg-cloud-gateway-2.4.0.jar /home/deploy/develop/ \cp ./jeecg-cloud-module/jeecg-cloud-monitor/target/jeecg-cloud-monitor-2.4.0.jar /home/deploy/develop/ \cp ./jeecg-cloud-module/jeecg-cloud-system-start/target/jeecg-cloud-system-start-2.4.0.jar /home/deploy/develop/ \cp ./jeecg-cloud-module/jeecg-cloud-demo/target/jeecg-cloud-demo-2.4.0.jar /home/deploy/develop/ \cp ./jeecg-cloud-module/jeecg-cloud-xxljob/target/jeecg-cloud-xxljob-2.4.0.jar /home/deploy/develop/ \cp ./jeecg-cloud-module/jeecg-cloud-quartz/target/jeecg-cloud-quartz-2.4.0.jar /home/deploy/develop/ \cp ./jeecg-cloud-module/jeecg-cloud-supplier/target/jeecg-cloud-supplier-2.4.0.jar /home/deploy/develop/ echo "开始各微服模块引用的lib类库,采用 \cp -r 命令不提示覆盖" \cp -r ./jeecg-cloud-module/jeecg-cloud-gateway/target/lib/ /home/deploy/develop/ \cp -r ./jeecg-cloud-module/jeecg-cloud-monitor/target/lib/ /home/deploy/develop/ \cp -r ./jeecg-cloud-module/jeecg-cloud-demo/target/lib/ /home/deploy/develop/ \cp -r ./jeecg-cloud-module/jeecg-cloud-xxljob/target/lib/ /home/deploy/develop/ \cp -r ./jeecg-cloud-module/jeecg-cloud-quartz/target/lib/ /home/deploy/develop/ \cp -r ./jeecg-cloud-module/jeecg-cloud-supplier/target/lib/ /home/deploy/develop/ echo "开始停各模块对应的微服务" ssh root@10.22.90.12 "cd /usr/local/dezcloud;./stop_all.sh" scp -r /home/deploy/develop/lib root@10.22.90.12:/usr/local/dezcloud/ scp /home/deploy/develop/*.jar root@10.22.90.12:/usr/local/dezcloud/ ssh root@10.22.90.12 "cd /usr/local/dezcloud;./startup_all.sh" ssh root@10.22.90.12 "cd /usr/local/dezcloud;./status_all.sh"
开始构建-启动
打开 My Views
- > 选择新建的项目,或者直接启动
点击 Build Now
进行构建,下面是构建历史,点击可查看对应的构建信息
至此,SpringBoot项目部署完成
构建vue前端项目
构建Freestyle project
打开 新建Item
-> Freestyle project
,输入名称,确定,进入配置面,源码管理
这里前端项目是保存在本地gitea服务器,所以写本地地址
构建环境
添加构建过程控制台输出时间和日志,并指定配置nodejs
Build/构建
经过上面步骤之后,系统会构建项目到 /root/.jenkins/workspace/
目录 我们通过shell脚本来更新文件然后重启项目
Shell 脚本
先创建一个目录,用于保存打包好的文件
mkdir /home/deploy/dezcloud_dev/
#!/bin/bash echo "切换到打包目录" cd /root/.jenkins/workspace/ant-design-jeecg-vue-develop echo "npm源设置为淘宝源" npm config set registry https://registry.npm.taobao.org echo "开始安装项目中的依赖,基于 yarn 命令" yarn install echo "开始打包vue项目 基于 yarn 命令" yarn run build echo "开始复制打包好的文件目录,采用 \cp -r 命令不提示覆盖" rm -rf /home/deploy/dezcloud_dev/* \cp -r dist/* /home/deploy/dezcloud_dev/ echo "开始远程传送文件" scp -r /home/deploy/dezcloud_dev/* root@10.22.90.12:/usr/local/nginx/html/dezcloud/ echo "重启web应用服务器" ssh root@10.22.90.12 "cd /usr/local/nginx/sbin/;./nginx -s reload"
开始构建-启动
打开 My Views
- > 选择新建的vue项目,或者直接启动,然后可直接通过日志查看构建详细信息
22:44:03 Images and other types of assets omitted. 22:44:03 22:44:03 DONE Build complete. The dist directory is ready to be deployed. 22:44:03 INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html 22:44:03 22:44:03 Done in 177.95s. 22:44:03 开始复制打包好的文件目录,采用 \cp -r 命令不提示覆盖 22:44:04 开始重命名目录名称 22:44:04 开始远程传送文件 22:44:13 重启web应用服务器 22:44:13 nginx: [warn] conflicting server name "dez.com.cn" on 0.0.0.0:80, ignored 22:44:13 Finished: SUCCESS
四、自动构建-码云Hook
Gitee配置
前往 Jenkins
-> Manage Jenkins
-> Configure System
-> Gitee 配置
- 前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections
- 在 Connection name 中输入 Gitee 或者你想要的名字
- Gitee host URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)
- Credentials 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins
- Domain 选择 Global credentials
- Kind 选择 Gitee API Token
- Scope 选择你需要的范围
- Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
生成后,复制对应的数据到 Gitee APIV5 私人令牌
完成后,测试连接,直到显示成功
项目Gitee连接配置
打开项目配置信息,在General
配置中,找到 Gitee 链接
配置,选择刚刚添加的 gitee
配置构建触发器
选择 Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://10.22.90.113:8090/gitee-project/jeecgboot-develop
,需要注意就是下面我配置的是只构建 develop
分支,具体可根据情况配置
生成Hook密码
设置完成后,保存。
设置gitee项目-webHooks
打开gitee项目,管理 ->
WebHooks- >
添加 WebHook` ,需要注意的是,下面的URL我配置成对应的外网URL
添加完成后,点击测试
然后需要去jenkins查看构建信息,打开jenkins,进去项目
如果没有收到构建信息,是因为我们配置了指定版本,方便测试,设置选项为 允许触发构建的分支
到此,自动构建完成
五、自动构建-Gitea Hook
此操作步骤与码云hook类似
Gitea Servers 配置
前往 Jenkins
-> Manage Jenkins
-> Configure System
-> Gitea Servers
- 前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections
- 在 Name 中输入 Gitea 或者你想要的名字
- Server URL 中输入码云完整 URL地址: http://10.22.90.113:3040(私有化客户输入部署的域名)
- 选择
Manage hooks
中的 Credentials 中 选择添加 - 配置成功后,下面会显示 gitea 私服的版本号及对应账号名称
新建 gitea Access Tokens
关闭 CSRF
验证
如果是exe安装的话,找到jenkins.xml
文件,找到 <arguments>
标签,在里面加上 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
,如果是war包运行在java后面加上这句:
java -jar -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true jenkins.war --httpPort=8090
它的作用是关闭 CSRF
验证,不关的话,Gitea 的 webhook
会一直报 403 错误,无法使用。加好参数后,重启Jenkins
修改授权策略
打开 jenkins
-> Configure Global Security
-> 授权策略
项目配置 构建触发器
选择 触发远程构建 (例如,使用脚本)
输入身份验证令牌,此外可随意写
配置gitea web钩子
打开你的 Gitea 仓库页面,选择仓库设置
,管理web钩子
,添加web钩子
,钩子选择Gitea
连接地址为:http://10.22.90.113:8090/job/ant-design-jeecg-vue-develop/build?token=dez
其中前端 IP 为我Jenkins服务地址,后面dez 为令牌值
配置完毕,测试推送
在jenkins项目中查看构建信息,显示在构建,说明关联成功
至此,linux环境下的Jenkins安装与配置,构建SpringCloud项目及vue前端项目,以及基于gitee、gitea源码服务器的自动构建介绍完毕,完结,散花~
常见问题
1、git配置返回 returned status code 128:stdout:stderr: fatal: Unable to find remote helper for 'https'
需要添加git环境变量到配置文件,:/usr/libexec/git-core
vim /etc/profile
export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$NODE_HOME/bin:$PATH:/usr/libexec/git-core
source /etc/profile
2、修改jenkins目录所有者
chown root:root -R /usr/local/jenkins
chown root:root -R /root/.jenkins
3、解决打包时不能下载 sass问题
yarn add node-sass --dev
yarn add sass-loader --dev
npm run build
4、没有npmrc文件
需要安装Pipeline NPM Plugin,在系统管理里找到 Manage Plugins
,再安装 npm 插件即可。