项目背景
因公司网络和测验服务器带宽有限,每次打包jar包后上传到服务器速度很慢(100多兆的包差不多上传10分钟),所以决定弄一个主动化布置,每次代码提交(pull request)主张主动布置,经测验第一次打包比较慢(需求下载依赖),之后就很快了,基本上几十秒不到1分钟。
项目结构
装置jenkins
服务器为centos7,已有的java版别为1.8,不能动,查了下,找了个最新的能支撑到1.8的版别。
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.346-1.1.noarch.rpm #我能找到的最新的支撑1.8版别jdk的包
rpm -ivh jenkins-2.346-1.1.noarch.rpm #装置
vim /usr/lib/systemd/system/jenkins.service
# 修改 User=root Group=root ,其实这样是不安全的,测验环境能够,出产环境必定不要这样做。以下目录权限一样不主张,可是能够在测验或开发环境快速布置,绕过许多坑
chown -R root:root /var/log/jenkins
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/lib/jenkins
systemctl start jenkins.service #发动服务,默认8080端口,能够在jenkins.service中修改
拜访网页地址,这时分就能看到页面了。我当时忘了截取了,从别的地方拷贝了一张,主要是暗码需求上服务器去查

jenkins基础装备和插件装置
- 源代码保管在gitee,所以需求加一个gitee插件
- 后端用gradle构建,所以需求装置gradle
- 前端需求装置npm
- 需求装备一些凭据用于拉取代码,还需求装备一个hook用于告诉jenkins主动构建代码
装置和装备插件
装置插件
点击:体系办理->插件办理进入插件办理界面 我这个是已经装置的,挑选“可选插件”然后搜索相应称号,就能够进入装置界面,等一会儿装置好jenkins主动重启,然后就能够用了

装备插件
点击:体系办理->大局东西装备进入东西装备界面,gradle和npm装备如下,别名自己随意起,自己能记住就行,后边要用到,必定要记得点保存。这一步相当于在服务器上装置你需求的编译环境。


项目装备
完结以上作业后开端项目装备,点击新建使命,如下图所示:

然后新建两个“构建一个自由风格的软件项目”,一个是后端代码,一个是前端代码。
关于源码拉取
我在网上查到许多源码拉取用的gitee插件,但是我用尽浑身解数也没成功,不纠结了,拿gitee当一个一般git服务器操作就能够了,供给两种成功的拉取源码方法:
方法一:直接运用用户名、暗码
由于我公司的gitee企业版上有一个超管账号平常是不提交代码的,只做办理用,所以直接用这个账号就能够,装备如下:


方法二:运用rsa秘钥
与服务器拉取账号暗码一样,首要在服务器生成秘钥
ssh-keygen -t rsa #如果以前生成过,直接跳过这一步
cat /root/.ssh/id_rsa #这个是私钥,装备到jenkins上
cat /root/.ssh/id_rsa.pub #这个是公钥,装备到gitee仓库上
运用秘钥拉取代码,git仓库地址URL装备为git@xxxxx,ssh这种地址,而不是https:// 地址,必定要注意



两种方法都是能够的,对任何git服务器通用,都能够这样做。
构建触发装备
gitee的webhook能够实时告诉jenkins开端构建项目,对任何项目都一样,装备如下:


然后将上面两张图中的接口地址和暗码仿制到gitee对应项目的WebHook装备中,进入对应项目代码仓库,设置,挑选新建webhook,如果是企业版会跳转到这样一个页面,个人版的应该也相似

后端项目装备
拉取代码和webhook装备不再赘述

如上图所示:
- 挑选gradle,在上文中大局东西装备中设置的称号;
- 设置使命,就是在idea中履行的gradle指令称号,直接仿制过来就行(设置完这一步就已经能够在服务器上生成可运转的jar包了)
- 履行shell,这一步主要是在服务器上发布jar包,我给一个示例代码,我们可依据自己需求改
sudo /{jar包发布途径}/{服务指令脚本}.sh stop # 停止正在运转的服务器端服务
sleep 2
sudo rm -rf {jar包发布途径}/{jar包称号}.jar #删去旧的jar包
sleep 2
sudo mv /var/lib/jenkins/workspace/{jenkins项目作业途径}/build/libs/{生成的jar包称号}.jar {jar包发布途径}/{jar包称号}.jar #将生成的新jar包移动到项目发布途径
sleep 2
sudo /home/gxtvmall/server/mall.sh start #发动服务器端服务器
前端项目装备
拉取代码和webhook装备不再赘述


node -v
npm -v #没意义,就是看日志避免出问题
npm install #项目途径下限装置依赖
npm run build # 编译
sleep 2
sudo rm -rf {前端发布途径}/* # 我用的nginx,这个途径是nginx的静态资源地址
sleep 2
mv /var/lib/jenkins/workspace/{jenkins项目作业途径}/{dist编译输出途径}/* {前端发布途径}/ #将新编译输出的dist目录下文件移动到nginx的静态资源发布途径
打完手艺!