Jenkins部署GitHub上的前端项目
请先阅读前两篇
Docker安装Jenkins并配置GitHub
Jenkins+GitHub报错hudson.plugins.git.GitException: Failed to fetch from GitHub 443
前提-Jenkins配置node环境
1.配置node插件
系统配置-插件管理-可选插件,搜索nodejs,直接安装
- 配置node版本
General
可以直接全部选择不填,但是建议勾选丢弃旧的构建
这里丢弃旧的构建是指 丢弃之前的构建记录。
如下图,这是Jenkins的构建记录,可以选择保留的天数以及保留的条数。
源码管理
这里为了解决GitHub使用https,经常报443的问题,使用ssh方式,进行代码的管理。
点击 添加按钮,添加私钥,具体请查看另一篇文章。
如果你不希望使用ssh,那么请直接选择
用户名密码凭证
构建触发器
直接选择GitHub hook trigger for GITScm polling
构建环境
构建
选择执行shell,这里请安装cnpm,构建速度快,且容易报错。
echo $PATH
node -v
npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install
npm run build
如果部署到服务器的话,建议打包
cd dist
tar -zcvf dist.tar.gz *
构建后步骤,发布到远程服务器
这里我们时使用docker安装的Jenkins, 如果你部署的服务器就是jenkins服务器,那可以直接通过宿主机-容器共享卷的方式部署。因为比较简单,这里简单的说一下:
找到jenkins构建后的目录
做一个共享卷的操作,是的构建结束之后,宿主机直接拥有打包后的文件,所以最好的方式可以把宿主机的目录设置为nginx的web目录
但是,会存在发布到远程服务器的情况,下面着重介绍一下:
1、安装Publish Over SSH插件
首页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装
2、配置SSH
系统管理 -> 系统设置 -> 下拉,找到Publish over SSH
下面有一个test configuration 按钮,点击测试,sussess表示连接成功。
构建后步骤
cd /home/share/blog/www
tar -zxvf dist.tar.gz
rm -f dist.tar.gz
远程服务器配置的nginx进行访问
1、下载镜像
docker pull nginx
2、启动nginx容器
docker run -d -p 9999:80 --name nginx nginx
这里将容器的80端口映射到9999端口,访问ip:9999 即可
-d 后台运行
3、找到容器中nginx的位置
3、在宿主机和nginx容器之间建立数据卷
nginx.conf 配置文件
logs 日志文件
www 源代码部署文件
!!! 如果直接执行下面的命令的话,可能会报错,Are you trying to mount a directory onto a file or vice-versa,因为不能挂载文件,只能挂载文件夹,所以先在容器中复制一份配置文件。
第一步已经启动了一个nginx,所以可以直接拷贝
mkdir -p /home/share/blog/conf /home/share/blog/logs
拷贝配置文件到工作目录
docker cp -a nginx:/etc/nginx/nginx.conf /home/share/blog/conf
宿主机(自己决定)
容器(容器启动后自动生成的)
/home/share/blog/www /usr/share/nginx/html
/home/share/blog/conf/nginx.conf
/etc/nginx/nginx.conf
/home/share/blog/logs /var/log/nginx
首先停止之前的容器并删除
docker stop nginx
docker rm nginx
重新启动容器并挂载工作目录
docker run -d --restart always -p 9999:80 -v /home/share/blog/www:/usr/share/nginx/html -v /home/share/blog/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/share/blog/logs:/var/log/nginx --name nginx nginx
// --restart always
// 表示docker重启时会自动重启该容器
访问-成功
- 点赞
- 收藏
- 关注作者
评论(0)