前言
在搭建了 react-ssr 之后,自己又捣鼓了一下 jenkins 与 gitlab 之间配合使用,让我们在 push 代码的时候就可以打包构建了,可以方便我们部署。
Jenkins
Jenkins 是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。其实基于我的理解就是帮我们构建项目和管理项目的一个工具。
Jenkins安装
首先必须得有一个自己的服务器和linux实例,而文章中主要使用的服务器系统是:
Linux version 3.10.0-514.26.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Jul 4 15:04:05 UTC 2017
安装jdk
因为是jenkins是基于java开发的,我们必须得安装一下 jdk
yum install -y java-1.8.0-openjdk-devel.x86_64
没有安装 yum 的自行百度哈...
出现以下页面证明安装成功。

安装node
因为我们的web项目是是基于 node 开发的,所以 node 也是必须安装的。
我们可以安装在/home/www中
cd /home/
mkdir www
cd www
wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz
tar xvf node-v10.16.0-linux-x64.tar.xz #解压
mv node-v10.16.0-linux-x64 node-v10.16.0 #改短名
建立软连接
ln -s /home/www/node-v10.16.0/bin/node /usr/local/bin/node
ln -s /home/www/node-v10.16.0/bin/node /usr/bin/node
ln -s /home/www/node-v10.16.0/bin/npm /usr/local/bin/npm
ln -s /home/www/node-v10.16.0/bin/npm /usr/bin/npm
建立成功

至此,我们的node就安装成功了。
安装yarn包管理和pm2
yarn和pm2我们都是基于node上安装的,yarn是一个包的管理工具,而pm2则是管理我们node进程的。
安装pm2
npm install pm2 -g
ln -s /home/www/node-v10.16.0/bin/pm2 /usr/local/bin/pm2
ln -s /home/www/node-v10.16.0/bin/pm2 /usr/bin/pm2
pm2 -v
安装yarn
npm install yarn -g
ln -s /home/www/node-v10.16.0/bin/yarn /usr/local/bin/yarn
ln -s /home/www/node-v10.16.0/bin/yarn /usr/bin/yarn
yarn -v
安装jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
service jenkins start
安装成功

打开浏览器输入 ip:8080 即可打开jenkins工作台。

然后输入提示命令后获取密码, 输入密码后继续。

选择安装推荐的插件,等待一段安装时间后即可进入创建用户。

创建成功后并且绑定ip即可进入工作台

安装git
yum install git
Jenkins配置
安装插件
安装必须的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter

添加凭据
安装成功后我们可以创建一个密钥用作和gitlab通信,在服务器上我们输入
sudo -u jenkins ssh-keygen -t rsa
以jenkins用户的身份来创建密钥,得到:

然后我们把 id_rsa 的内容输入到 jenkins 的凭据中,依次点击以下按钮

添加凭据

创建item
点击新建item,创建自己的一个工程

进入创建 item 页面,描述可以按照自己的项目来写,在源码管理中选择 git

url 选择自己 git 的地址,凭证就用刚刚创建的,出现红色的错误就证明我们的 gitlab 上没有配置好我们的公钥。

来到 gitlab 上添加 sshkey 中,填写我们刚刚创建的 id_rsa.pub。
然后回到 jenkins 上,重新选择凭证就可以发现报错消失。
在构建触发器上我们选择 gitlab 触发

构建环境我们可以选择在构建前后的一些操作,但我这里直接选择自己执行一些shell

shell脚本主要是为了复制 gitlab 上拉取下来的代码,然后执行 yarn install 和 start。
最后保存。
gitlab配置hooks
我们回到gitlab上,配置我们的hooks

这里的url我们则填写刚刚在配置item中的url

添加完成后我们test一下,发现会出现以下错误。

这时候我们需要把 jenkins 配置中把 git 配置下的 Enable authentication for '/project' end-point 去掉,再次尝试test。

在 jenkins 工作台中也出现了构建的进程。

查看进程的控制台输出,出现以下问题:

这时候在Jenkins宿主服务器上运行如下命令 $ sudo visudo 在文件的末尾加上一行 jenkins ALL=(ALL) NOPASSWD: ALL 保存文件,重新构建。

至此,构建成功。
总结
其实也并不是很难,但一开始在用户权限里面踩了很多坑,因为我一开始在root目录下安装的jenkins,所以我们的jenkins用户就一直读取不了配置文件,后来经过几个大佬的指导下,决定在var目录下安装jenkins,在home下安装我们的node,这样我们的Jenkins用户就可以访问我们的node了,同理yarn,pm2都一样。