动机
说实话,我也不知道为啥要去弄这个东西,但是只有项目的痛点才会使人去改变,公司里面老大配了一套基于gitlab一套持续集成的项目,但是不知道这是怎么实现的,也没去研究,所以并没有去关注这个,老老实实当一个码农即可,-.-。
当无聊自己开始写一些node.js的代码的时候,必然会需要去发布部署到服务器,并且通过pm2去启动服务,但是面临一个很麻烦的问题,就是我每次改完我的接口,那我把代码必须要通过scp命令去发布到服务器,然后还要去重启pm2,这个过程很无脑且重复性太强,所以这个时候不得不去做持续集成和持续部署了。。。
开始
jenkins是啥?其实我也说不清楚,为什么用它而不用其他的构建工具,我也不清楚,反正百度到的就是它了,那就使用它吧,毕竟一个做前端的,哈哈,但是现在的高级前端这些个东西必须得会一点啊,所以就从jenkins这个开始配置CI CD。
- 安装和环境的配置
友情提示:最好买一台阿里云的服务器linux的,不然没法玩;
- java环境(jdk8的这款)!!!切记 ,之前我下载最新的不能用
我们将下载好的java包通过tar的解压命令解压好,解压好了以后我们需要去配置环境变量,
vi /etc/profile, 然后我们进入编辑模式 到最底部加入下面的代码
export JAVA_HOME=/opt/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
就第一行的/opt/jdk8 是你在服务器里解压java的目录,然后执行soucrc /etc/profile ,在执行java -version,如果出现了java的版本即安装成功
- 下载jenkins的war包,[官网] (https://jenkins.io/zh/doc/pipeline/tour/getting-started/)
就有,那我们可以先下载到本地,然后通过scp的命令去上传到远程服务器,搞定以后我们进入这个目录执行
java -jar jenkins.war --httpPort=8080,然后通过域名:8080端口就可以去访问了,记得开启8080端口,不然跑不起来。
- 开始配置Jenkins
-
以上如果成功了,你会进入一个页面,然后听他指挥,耐心等他,不要选择自定义插件,不然你以后头会大的,配置好用户名之类的,成功以后进入了jenkins的管理界面了。
接下来我们需要去下载几个插件
publish over ssh : 用来将我们的代码部署到我们想要的服务器上去
Generic Webhook Trigger Plugin : 用来绑定我们的githup的webhook
nvm wrapper : 用来我们后期使用node的命令
点击右边的manage jenkins里面的插件然后去搜索下载即可,记得点下重启,重启之后刷新页面;
-
绑定githup的webhook
首先创建一个项目,
然后点击源码管理,见下图
然后添加触发器,勾选我们刚刚下载Generic Webhook Trigger这个插件,然后什么也不需要管了。
搞定以后去githup的页面去添加webhook,记得在触发器里面也要配上那个token;
说一下这个token的获取,jenkins的系统管理-管理用户-admin-设置
搞定以后如果命令行工具没报错就是成功了;
-
接下来去配置自动化构建
构建环境我们选择nvm
-
配置publish over ssh 远程服务器
然后点击下面的test,如果成功了就是ok,配置成功;
配置好了以后在去配置,然后我们加上shell脚本,不然你怎么弄都弄不好
说一下上面的参数是干嘛的,
Source files: 就是你上传包的名字,因为node服务项目不像前端项目打成一个dist包,所以我们放在一个目录里面
Remove prefix : 移除前置的文件夹名称,比如我刚刚source files叫 app/dist, 如果我在这里填 app/ 那么我们打成的包就是dist这一层了
Remote directory: 要发布的远程的目录,之前已经配置过了,所以不需要填写了。
Exec command: 这里面就是我们需要执行的脚本了,自行配置,熟悉linux和node即可;
然后我们提交我们的代码,没有错误就大功告成了,当然这是个痛苦的过程,会碰到各种各样的问题!!!