记录一下Jenkins部署前端项目的坑
思路
首先需要准备两台服务器,一台服务器为应用服务器,安装了Nginx, 一台服务器为Jenkins服务器,安装了Jenkins,两台服务器安装方式都是docker,项目在Jenkins服务器打包完成之后,传输到应用服务器Nginx配置好的目录下即可
docker安装Jenkins
只需要按照Jenkins官网指南中所述步骤进行安装即可,在这里不做详细介绍
安装以及配置Jenkins插件以及ssh免密登录配置
这里我们需要用到的插件有 Git Nodejs Publish over ssh
在Jenkins系统管理->插件管理中搜索下载安装之后对他们进行配置
Git插件配置
- 这个插件是为了让
Jenkins可以使用git命令去远程仓库拉取代码 - 在
Jenkins系统管理->全局工具配置中找到Git的配置项,指定Git命令所在目录,如下图:
这里只是指定了
git命令的目录,还需要配置凭据才能从仓库拉代码,在Jenkins系统管理->Manage Credentials中可以添加全局凭证,如下图:
NodeJS插件配置
- 这个插件是为了让Jenkins可以使用node命令和npm命令,是前端项目构建所必须的
- 在
Jenkins系统管理->全局工具配置中找到Nodejs的配置项,公网环境下配置比较简单,勾选自动下载即可,如下图:
如果是无网环境,那就需要自己将nodejs拷贝到容器内部,然后在这里配置nodejs所在路径,同Git,在这里不做详细介绍
Publish over ssh插件配置
- 这个插件是为了让Jenkins可以发送远程shell命令在应用服务器执行,据说可以将打包之后的文件传输到远程服务器,但是我这边没有成功,最后使用ssh免密登录处理之后scp命令复制到远端服务器
- 在
Jenkins系统管理->系统配置中找到Publish over SSH的配置项,如下图:
ssh免密登录
- 在Jenkins服务器使用
docker exec -it [容器名称或ID] bash进入Jenkins容器内部 - 使用
ssh-keygen -t rsa命令生成一对秘钥 - 使用
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.2命令将公钥发送给应用服务器,这里的root为应用服务器的用户,192.0168.0.2则是应用服务器地址,之后会要求输入该用户名所对应的密码,输入之后回车即可完成ssh免密登录
创建以及配置自动化构建项目
直接点击new item创建一个新的任务,如下图:
对这个任务进行配置,配置界面如下:
这里说一下scp命令的用法:
scp -r [文件/文件目录] [应用服务器用户名]@[应用服务器IP]:[应用服务器目录]
-r表示将后面所述目录下所有文件拷贝到指定应用服务器目录下- 这里的用户名即上面ssh免密登录时配置的用户名
使用webhooks进行自动部署
由于github是国外站点,如果没有科学上网,那么访问速度一言难尽,所以这里使用gitee
第一步下载并且配置Gitee插件
安装
下载安装的方式和上面几个插件一样,不做详细解释
配置
安装完之后回到Jenkins上面创建好的项目配置里边勾选Gitee webhook触发构建,如下图:
下边有个生成webhooks密码的按钮,如下图:
这里的密码也要配置到gitee,如下图:
配置基本结束,之后往这个仓库推送代码就会自动触发构建