jenkins最完整自动打包编译备份,跨服务器拷贝,git自动触发构建

jenkins自动构建vue项目(自动打包、备份、上传、跨服务器拷贝、git自动触发构建)

一:环境准备:
首先,在安装jenkins之前,我们要先在linux中必须安装jdk,本次我们使用的是jdk1.8版本,其次由于我们是构建vue项目,并且要实现gitlab提交代码自动构建的功能,所以还要用到nodej以及git;这些步骤这里不做详细介绍,自行安装即可。
二:jenkins安装及启动
前期准备工作结束后,我们就可以开始安装jenkins了,其实安装步骤很简单,只需要去官方网站根据自己的系统下载对应的版本就好,下载地址:https://www.jenkins.io/zh/

我们下载linux版本后得到的是一个war包,我们选择合适的路径存放即可,这个路径没有特定要求,存放好之后进入安装的目录,执行 java –jar jenkins.war –httpPort=9090 即可打开服务,
在这里插入图片描述
httpPort是开放的端口号,可自己更改,只要没有和其他有冲突即可。等待服务开启后我们打开浏览器,在浏览器内输入服务器地址以及端口号,比如我的服务器地址是 1.1.1.1;那么在浏览器输入1.1.1.1:9090即可进入如下页面
在这里插入图片描述
我们按照红色字体提示的路径打开那个文件,将里边的所有内容全部复制然后粘贴到管理员密码那里后点击继续;这时会提示自定义jenkins
在这里插入图片描述
这个地方如果自己认为网速还行的话可以选择安装推荐的插件,比较省事,不过这个比较慢,可能要等待一段时间才能安装好,这里我们选择了安装推荐的插件,接下来就是要等待了
在这里插入图片描述
安装完成后就会提示创建第一个管理员用户,这里我们创建好之后点击保存并完成
在这里插入图片描述
这里继续点击保存并完成,点击开始使用jenkins,这个时候jenkins就已经安装成功了
在这里插入图片描述
三:构建第一个项目
第一次我们看到的页面是这样的,这个时候我们需要来创建第一个项目,点击创建一个新任务
在这里插入图片描述
任务名称这里可以根据自己的实际更改名字,然后选择构建一个风格自由的软件项目,点击确定
在这里插入图片描述
我们这里是根据gitlab构建的项目,所以点击源码管理然后选择git,在第一项中Repository URL中填入git项目的http地址,这时候会发现报错,这是因为我们的仓库是私有的,这时候就要添加Credentials;也就是gitlab的账号和密码,点击添加—>Jenkins,按照图示步骤只需要填入用户名和密码即可,其他的不需要填
在这里插入图片描述
添加好之后选中账号报错就消失了
在这里插入图片描述
这一步结束后初步构建就完成了,点击保存会自动跳转到工作区,点击工作区
在这里插入图片描述
这里会显示错误:没有工作空间,这是因为我们还没有进行构建项目,只有进行过构建项目才能将git代码拉取到jenkins上,这时候点击一下左侧导航栏里边的Build Now,当构建历史里边的小灯显示蓝色的时候就构建成功了
在这里插入图片描述
然后刷新页面,就会看到gitlab上边的代码已经拉取下来了
在这里插入图片描述
四:编写jenkins测试Shell脚本
点击配置
在这里插入图片描述
点击构建–>增加构建步骤–>选择Execute shell
在这里插入图片描述
这里以web容器在/data1/nginx/html/testProj这里为例子编写shell脚本
在命令里边依次输入

npm install
rm –rf /data1/nginx/html/testProj/dist
rm –rf /data1/nginx/html/testProj/static
rm –f /data1/nginx/html/testProj/index_prod.html
npm run build
cp -r dist /data1/nginx/html/testProj/
cp -r static /data1/nginx/html/testProj/
cp index_prod.html /data1/nginx/html/testProj/

编写完脚本后点击保存,再次回到my_test工作区
这时候点击立即构建,会发现报错(红色的点是失败,蓝色的是成功)
在这里插入图片描述
点击#5进入这次构建的详情中,再点击控制台输出查看构建日志
在这里插入图片描述在这里插入图片描述
这是日志
在这里插入图片描述
通过分析发现这个错误主要就是npm: command not found
这个错误是因为jenkins默认是没有安装node插件的,所以就没有npm命令,就无法识别脚本内的npm,解决办法就是在jenkins里边安装node插件;安装步骤如下:
在这里插入图片描述
进去之后点击可选插件,在过滤中输入Nodejs,然后选择后点击直接安装
在这里插入图片描述
等待安装成功之后到全局配置工具里边
在这里插入图片描述
找到NodeJS,点击新增NodeJS,别名内随便输入,建议就写node或者nodejs,方便后续区分,在install from nodejs.org处选择好自己的node版本,点击保存
在这里插入图片描述
再次回到my_test的配置空间,点击构建环境,选择Provide Node & npm bin/ folder to PATH
在这里插入图片描述
在NodeJS Installation项中选择nodejs,这个nodejs就是上一步配置node时候的别名
选择好后点击保存,再次点击Build Now,这时候就开始正常构建了,第一次构建会很慢,因为需要更新项目的依赖安装包以及要重新打包项目,所以这里需要耐心等待一下
在这里插入图片描述
等待构建成功后查看服务器 /data1/nginx/html/testProj发现里边已经有了内容,这说明我们已经部署成功
在这里插入图片描述
五:了解jenkins实际的业务需求
上一步我们只是编写了一个测试shell脚本来熟悉一下jenkins的构建过程到底是个什么样子的一个情况,接下来我们将根据实际的业务需求来更改我们的配置以及重新编写脚本。
先来介绍一下业务需求,为了解决每次代码开发完成后都要手动打包项目,手动提交代码到git仓库,而且还要每次都去自己去备份正式环境上边的文件以及替换最新打包的项目,过程比较繁琐耗时并且如果哪一步出了一点错误都可能会导致上线失败 ;基于此决定使用jenkins实现持续集成,既只要每次提交代码到git仓库就可以实现代码自动打包编译并且自动备份服务器上的资源文件到指定的路径,这样每次更改代码后只需要将代码提交到git上边就可以了。这里还有一个需求就是因为jenkins安装的服务器和nginx的服务器是不同的,所以这里还需要考虑跨服务器备份的问题,接下来将详细介绍如何跨服务器配置文件以及如何让git自动触发jenkins的构建

六:配置跨服务器拷贝的免密登录(此处自己懒得写了,摘自其他博客,我就是按照这个步骤弄的,亲测可行)
使用jenkins在做集成的时候,如果需要将各个项目的配置进行汇聚后,进行统一管理。在这种场景下就需要在工程打包后,将配置集中在jenkins服务器汇聚后,从jenkins服务器拷贝到部署服务器中,这样可以在jenkins服务器中配置一些脚本,这个脚本跨及其拷贝配置文件导部署服务器上来。利用scp命令即可,但是scp命令在默认环境下,是需要密码的,这里用ssh来信息,不需要密码即可拷贝文件。
操作步骤:
例如:
A服务器IP192.168.1.223是jenkins服务器
B服务器IP192.168.1.193是部署服务器
操作步骤:
1) 那么首先在A服务器执行 ssh-keygen -t rsa,一路会车下去,在/root/.ssh目录下面会生成id_rsa和id_rsa.pub两个文件,将id_rsa.pub复制一份出来
cp id_rsa.pub id_rsa223.pub
2)将A服务器的id_rsa223.pub拷贝到B服务器
scp root/.ssh/id_rsa223.pub root@192.168.1.193:/root/.ssh/id_rsa223.pub
键入B服务器的密码
拷贝过来后,将id_rsa193.pub写入authorized_keys
cat id_rsa193.pub >> authorized_keys
如果没有这个文件(没有目录可手动创建),直接执行:
cd /root/.ssh
mv id_rsa193.pub authorized_keys
3)在A服务器执行测试脚本,检查如果不需要输入密码即可切换成功,则配置成功
scp test root@192.168.1.193:/home/test
4)最后就是编写脚本,实现从服务器A拷贝文件到服务器B;如果需要两台服务器都互相之间都能免密登录,将上述步骤反过来执行一次即可
七:编写实际开发shell脚本

cd /data1/beifen
mkdir `date +%Y-%m-%d-%H-%M`
cd `date +%Y-%m-%d-%H-%M`
scp -r root@172.28.199.44:/data1/nginx/html/tagSystem_2020_05_11/dist ./
scp -r root@172.28.199.44:/data1/nginx/html/tagSystem_2020_05_11/static ./
scp root@172.28.199.44:/data1/nginx/html/tagSystem_2020_05_11/index_prod.html ./
cd /root/.jenkins/workspace/tagSystem_independent
npm install
npm run build
ssh -tt 172.28.199.44 << remotessh
rm -rf /data/nginx/html/tagSystem_2020_05_11/dist
rm -rf /data/nginx/html/tagSystem_2020_05_11/static
rm -f /data/nginx/html/tagSystem_2020_05_11/index_prod.html
scp -r root@172.28.2.242:/root/.jenkins/workspace/tagSystem_independent/dist /data/nginx/html/tagSystem_2020_05_11/
scp -r root@172.28.2.242:/root/.jenkins/workspace/tagSystem_independent/static /data/nginx/html/tagSystem_2020_05_11/
scp root@172.28.2.242:/root/.jenkins/workspace/tagSystem_independent/index_prod.html /data/nginx/html/tagSystem_2020_05_11/
exit
remotessh

这里需要注意的是 mkdir date +%Y-%m-%d-%H-%M ;这个命令是根据时间创建一个文件夹,用来做自动备份时候来区分用的;
接下来就是 cd /root/.jenkins/workspace/tagSystem_independent 这个目录是jenkins的安装目录,项目也在这个目录下面,如果要执行npm install 和 npm run build就必须要回到这个项目下
ssh -tt 172.28.199.44 << remotessh 这个命令是为了切换服务器时候不需要输入密码即可完成切换

八:配置gitlab代码提交自动触发jenkins构建
以上所有的构建步骤都已完成,只剩下配置gitlab更新代码时候自动触发jenkins构建
下载所需要的插件,
在这里插入图片描述
搜索gitlab,将下述两个插件安装
在这里插入图片描述
登录gitLab,生成一个Personal Access Tokens
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进入Jenkins,添加api token,路径:首页–》凭据–》添加凭据
在这里插入图片描述
添加后再次打开,如图所示
在这里插入图片描述
然后打开系统管理,进入系统设置,配置gitLab
在这里插入图片描述
然后进入job,进行配置
在这里插入图片描述
在这里插入图片描述
进入GitLab,打开项目–》settings
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试成功,返回200
在这里插入图片描述
到此,触发器配置成功,开发一旦有提交代码,就会自动构建,如图所示
在这里插入图片描述
总结:以上即是前端Vue项目使用jenkins实现自动化构建的完整操作步骤,后续如果发现不足将及时更正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值