Linux(centos7)搭建Jenkins自动构建Springboot项目及vue前端项目

1 篇文章 0 订阅
1 篇文章 0 订阅

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/ 即可。然后输入对应的用户密码,解锁

image-20211015082707713

如果忘记密码也可以通过 查看文件

 cat /root/.jenkins/secrets/initialAdminPassword

新手推荐使用默认插件安装

image-20211015083256494

安装完成后,创建管理员用户密码,直接走入系统

安装扩展插件

安装扩展插件,Springboot+vue项目需要用到git,maven,nodejs等插件,所以先安装对应插件,

打开Manager Jenkins -> Manage Plugins -> Available (可选插件)

image-20211015083841853

插件列表

目前springboot项目代码是保存在gitee,vue项目是保存在gitea,所以需要安装对应插件

image-20211015084323592

image-20211015214855332

Jenkins全局配置

打开Manager Jenkins -> Global Tool Configuration 这里需要配置jdk,maven,git及nodejs环境变量

maven配置

配置settings.xml信息

 /usr/local/maven/apache-maven-3.6.3/conf/settings.xml

image-20211015094805605

JDK

别名:jdk1.8.0_231 JAVA_HOME:/usr/local/jdk1.8.0_231

image-20211015094939572

Git配置

Name:git-2.9.0 Path to Git executable:/usr/local/bin/git

image-20211015102454435

Maven

Name:maven-3.6.3 MAVEN_HOME:/usr/local/maven/apache-maven-3.6.3

image-20211015100616015

NodeJS

Name:node-v12.14.1 安装目录:/usr/local/nodejs/node-v12.14.1

image-20211015100624697

三、构建项目

构建SpringBoot项目

新建maven项目

打开 新建Item -> 构建一个maven项目 ,输入名称,确定,进入配置面,源码管理

  • 配置Repository URL,这里以 gitee 源码为例

  • 配置Credentials,因为项目不是开源项目,需要提供验证账号

添加Credentials

image-20211015101529688

image-20211015101749876

源码管理

这里我只打包开发分支,如果是别的分支,写上对应名称即可,如:*/mater

image-20211015104057799

构建环境

添加构建过程控制台输出时间和日志

image-20211015104311433

Build

Goals and options,指定打包激活的环境

clean install -Dmaven.test.skip=true -P dev

Post Steps

经过上面步骤之后,系统会构建项目到 /root/.jenkins/workspace/ 目录 我们通过shell脚本来更新文件然后重启项目

image-20211015104638869

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 - > 选择新建的项目,或者直接启动

image-20211015145649560

点击 Build Now 进行构建,下面是构建历史,点击可查看对应的构建信息

image-20211015145745009

image-20211015145827441

image-20211015145857222

至此,SpringBoot项目部署完成

构建vue前端项目

构建Freestyle project

打开 新建Item -> Freestyle project ,输入名称,确定,进入配置面,源码管理

image-20211015211309068

这里前端项目是保存在本地gitea服务器,所以写本地地址

构建环境

添加构建过程控制台输出时间和日志,并指定配置nodejs

image-20211015215106429

Build/构建

经过上面步骤之后,系统会构建项目到 /root/.jenkins/workspace/ 目录 我们通过shell脚本来更新文件然后重启项目

image-20211015215713124

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

image-20211015165321518

生成后,复制对应的数据到 Gitee APIV5 私人令牌

image-20211015165416456

完成后,测试连接,直到显示成功

image-20211015165546991

项目Gitee连接配置

打开项目配置信息,在General配置中,找到 Gitee 链接配置,选择刚刚添加的 gitee

image-20211015165747506

配置构建触发器

选择 Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://10.22.90.113:8090/gitee-project/jeecgboot-develop ,需要注意就是下面我配置的是只构建 develop 分支,具体可根据情况配置

image-20211015173015712

生成Hook密码

image-20211015170630378

设置完成后,保存。

设置gitee项目-webHooks

打开gitee项目,管理 ->WebHooks- >添加 WebHook` ,需要注意的是,下面的URL我配置成对应的外网URL

image-20211015171117063

添加完成后,点击测试

image-20211015171315991

然后需要去jenkins查看构建信息,打开jenkins,进去项目

image-20211015171710735

如果没有收到构建信息,是因为我们配置了指定版本,方便测试,设置选项为 允许触发构建的分支

image-20211015171625299

到此,自动构建完成

五、自动构建-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

image-20211015224154244

image-20211015224442928

image-20211015224634311

关闭 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 -> 授权策略

image-20211016002945680

项目配置 构建触发器

选择 触发远程构建 (例如,使用脚本) 输入身份验证令牌,此外可随意写

image-20211016003322715

配置gitea web钩子

打开你的 Gitea 仓库页面,选择仓库设置管理web钩子添加web钩子,钩子选择Gitea

连接地址为:http://10.22.90.113:8090/job/ant-design-jeecg-vue-develop/build?token=dez

其中前端 IP 为我Jenkins服务地址,后面dez 为令牌值

image-20211016003546763

配置完毕,测试推送

image-20211016003739611

在jenkins项目中查看构建信息,显示在构建,说明关联成功

image-20211016003818604

至此,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 插件即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值