Jenkins部署前端项目

1,855 阅读3分钟

记录一下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.png 这里只是指定了git命令的目录,还需要配置凭据才能从仓库拉代码,在Jenkins系统管理->Manage Credentials中可以添加全局凭证,如下图:

凭证.png

NodeJS插件配置

  • 这个插件是为了让Jenkins可以使用node命令和npm命令,是前端项目构建所必须的
  • Jenkins系统管理->全局工具配置中找到Nodejs的配置项,公网环境下配置比较简单,勾选自动下载即可,如下图:

nodejs配置.png 如果是无网环境,那就需要自己将nodejs拷贝到容器内部,然后在这里配置nodejs所在路径,同Git,在这里不做详细介绍

Publish over ssh插件配置

  • 这个插件是为了让Jenkins可以发送远程shell命令在应用服务器执行,据说可以将打包之后的文件传输到远程服务器,但是我这边没有成功,最后使用ssh免密登录处理之后scp命令复制到远端服务器
  • Jenkins系统管理->系统配置中找到Publish over SSH的配置项,如下图:

ssh.png

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创建一个新的任务,如下图: image.png 对这个任务进行配置,配置界面如下:

构建1.png

构建2.png

构建3.png

这里说一下scp命令的用法:

scp -r [文件/文件目录] [应用服务器用户名]@[应用服务器IP]:[应用服务器目录]
  • -r表示将后面所述目录下所有文件拷贝到指定应用服务器目录下
  • 这里的用户名即上面ssh免密登录时配置的用户名

使用webhooks进行自动部署

由于github是国外站点,如果没有科学上网,那么访问速度一言难尽,所以这里使用gitee

第一步下载并且配置Gitee插件

安装

下载安装的方式和上面几个插件一样,不做详细解释

配置

安装完之后回到Jenkins上面创建好的项目配置里边勾选Gitee webhook触发构建,如下图:

image.png 下边有个生成webhooks密码的按钮,如下图:

image.png 这里的密码也要配置到gitee,如下图:

image.png 配置基本结束,之后往这个仓库推送代码就会自动触发构建