Jenkins部署GitHub上的前端项目

 请先阅读前两篇

Docker安装Jenkins并配置GitHub

Jenkins+GitHub报错hudson.plugins.git.GitException: Failed to fetch from GitHub 443

前提-Jenkins配置node环境

1.配置node插件

系统配置-插件管理-可选插件,搜索nodejs,直接安装

image.png

2. 配置node版本image.png

General

可以直接全部选择不填,但是建议勾选丢弃旧的构建

这里丢弃旧的构建是指 丢弃之前的构建记录。

如下图,这是Jenkins的构建记录,可以选择保留的天数以及保留的条数。

image.png

image.png

源码管理

image.png

这里为了解决GitHub使用https,经常报443的问题,使用ssh方式,进行代码的管理。

点击 添加按钮,添加私钥,具体请查看另一篇文章。

如果你不希望使用ssh,那么请直接选择

image.png

用户名密码凭证

image.png

构建触发器

直接选择GitHub hook trigger for GITScm polling

image.png

构建环境

image.png

构建

选择执行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 *

image.png

构建后步骤,发布到远程服务器

这里我们时使用docker安装的Jenkins, 如果你部署的服务器就是jenkins服务器,那可以直接通过宿主机-容器共享卷的方式部署。因为比较简单,这里简单的说一下:

  1. 找到jenkins构建后的目录
  2. 做一个共享卷的操作,是的构建结束之后,宿主机直接拥有打包后的文件,所以最好的方式可以把宿主机的目录设置为nginx的web目录

但是,会存在发布到远程服务器的情况,下面着重介绍一下:

1、安装Publish Over SSH插件

首页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装

image.png

2、配置SSH

系统管理 -> 系统设置 -> 下拉,找到Publish over SSH

image.png

下面有一个test configuration 按钮,点击测试,sussess表示连接成功。

image.png

  1. 构建后步骤

image.png

cd  /home/share/blog/www
tar -zxvf dist.tar.gz
rm -f  dist.tar.gz

image.png

远程服务器配置的nginx进行访问

1、下载镜像

docker pull nginx

2、启动nginx容器

docker run -d -p 9999:80 --name nginx  nginx
# 这里将容器的80端口映射到9999端口,访问ip:9999 即可
# -d 后台运行

image.png

3、找到容器中nginx的位置image.png

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重启时会自动重启该容器

访问-成功

image.png

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员半夏

你的打赏,我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值