Jenkins 与gitlab之间的初级搭建

2,425 阅读4分钟

前言


在搭建了 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 的凭据中,依次点击以下按钮

jenkins的凭据

添加凭据

jenkins的凭据

创建item

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

新建item

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

源码管理

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

gitlab

来到 gitlab 上添加 sshkey 中,填写我们刚刚创建的 id_rsa.pub。

然后回到 jenkins 上,重新选择凭证就可以发现报错消失。

在构建触发器上我们选择 gitlab 触发

gitlab 触发

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

执行一些shell

shell脚本主要是为了复制 gitlab 上拉取下来的代码,然后执行 yarn install 和 start。

最后保存。

gitlab配置hooks

我们回到gitlab上,配置我们的hooks

hooks

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

hooks 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都一样。