之前讲过一篇通过 gitlab-ci 来完成前后端项目的打包和部署,但在新公司里,用的都是 jenkins 完成持续集成、持续部署的流程。因此本篇文章就是讲在服务器上通过 docker 安装 jenkins 服务,并对 jenkins 进行配置,完成可以打包 Node 前后端并部署到另一台服务器(一般我们打包和部署都是在不同的服务器,避免互相影响等)。
首先大家需要两台服务器,如果打包后的服务部署到一台服务器,也可以,不推荐而已。
一台2核4G
用来部署jenkins服务,一台1核2G
部署打包后的服务。
一、安装 Docker
linux
服务器使用curl
下载快速安装的shell
脚本
curl -fsSL get.docker.com -o get-docker.sh
下载完成后,可以ls
命令查看一下。已经存在的话,使用sh
命令执行这个脚本
sh get-docker.sh
注意如果不是root
用户,需要使用sudo su
获取超级管理员权限。
安装完成后启动一下Docker Server
systemctl start docker
使用docker version
命令能看到Client
和Server
就启动成功了。
二、使用 Docker 安装 Jenkins
1. 拉取 jenkins 镜像
推荐jenkinsci/blueocean
这个镜像,官方推荐的比较稳定。
docker pull jenkinsci/blueocean
2. 启动 Jenkins 服务
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 jenkinsci/blueocean
启动后可以通过docker ps
来查看服务情况。
这里还要说下,在云服务器的防火墙里打开8080端口才能访问哦。
然后通过服务器ip:8080
端口就可以访问我们的 jenkins
服务啦。
3. 配置初始化 Jenkins
获取初始化密码
通过docker exec -it jenkins bash
进入容器内
然后cat /var/jenkins_home/secrets/initialAdminPassword
查看初始化密码
安装推荐插件
然后就进入到安装插件的页面,安装推荐插件即可
创建用户
下一步进入到创建管理员用户
再之后是选择jenkins
url地址,然后会重启jenkins
,重启后就正式进入到界面啦。
三. 配置 Jenkins 实现打包 Node 前后端服务
1. 安装插件
需要安装两个插件,在
首页 > 系统管理 > 插件管理 > 可选插件 > 搜索选中 NodeJS
> 安装完成后重启服务
-
NodeJs
: 代码打包时需要的环境 -
Publish Over SSH
: 打包完成后通过这个插件ssh连接发送到远程服务器
Publish Over SSH
在官方看到的解释是因为安全原因下架了,目前在插件管理里面搜索不到。
我们通过清华大学开源软件镜像站下载。
在里面搜索下载
- publish-over-ssh.hpi
- jsch.hpi
- publish-over.hpi
因为publish-over-ssh
依赖下面两个插件,所以需要一起下载。下载后在 首页 > 系统管理 > 插件管理 > 高级 > 上传插件
上传后重启下jenkins
。
2. 配置一下 NodeJS 插件版本
这一步是因为有时候用最新的版本安装包会失败,推荐使用最新的稳定版本,我这里是使用的16.13.1
这个版本。在
首页 > 系统管理 > 全局工具工具配置 > NodeJS > 新增
填入别名,以及选择NodeJS
版本。
3. 新建项目任务实现构建及部署
(1) 首页 > 新建任务 > 构建一个自由风格的软件项目
(2) git源码管理
配置这一步是让jenkins
去哪个git
仓库拉取代码。
-
Repository URL
:git
仓库的地址 -
Credentials
: 连接git
仓库的认证方式,一般使用Username with password
或者Secret Text
的方式,前者就是用户名和密码的方式,后者是需要生成token
密钥,用密钥连接。 -
Branches to build
: 指定拉取的分支
(3) 指定构建环境
构建环境这里选择之前我们配置好的node
版本。
(4) 构建脚本
构建 > 增加构建步骤 > 执行 shell
如上图输入构建命令,先使用npm
打包构建,然后进行压缩打包,方便进行远程服务的传输。
这一步配置完成后,打包建构完成后,可以进到容器内的/var/jenkins_home/workspace
这个目录看打包之后的情况。
(5) 把打包后的包发送到远程服务器进行部署
首页配置下publish over ssh
的ssh
连接配置。
在 首页 > 系统管理 > 系统配置 > Publish over SSH > 新增
填入这几个配置项,主要是Hostname
和Username
,勾选上Use password authentication, or use a different key
,然后输入Password
。
有个Test Configuration
,可以测试下是否连接成功。
返回刚才创建的项目的配置。
在构建后操作
选择
之后进行配置
-
Source files
: 源文件,也就是刚才我们压缩好的文件,dist.tar.gz
-
Remove prefix
: 移除的前缀,就是移除压缩文件前面的dist
文件夹,不然移到远程服务器后也有dist
文件夹 -
Exec command
: 完成把文件移动到远程服务器后执行的shell
命令,这里大概就是清空之前的项目文件夹下所有文件,然后解压dist.tar.gz
到项目文件夹下,最后删除dist.tar.gz
压缩包
到此我们就完成了所有步骤,从用 Docker 完成 Jenkins 服务,并配置 Jenkins 来打包构建我们的项目,最后 SSH 连接到远程服务器完成代码部署。其实这里可以通过 Docker 来部署我们的服务,如果需要的话,后面可以详细讲讲。到此,如果还有什么不懂的小伙伴可以评论区留言哈~!