Docker+Jenkins发布GitHub项目(3)-构建GitHub项目|8月更文挑战

前提-Jenkins配置node环境

1.配置node插件

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

image.png

2. 配置node版本image.png

General

能够直接所有选择不填,可是建议勾选丢弃旧的构建node

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

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

image.png

image.png

源码管理

image.png

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

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

若是你不但愿使用ssh,那么请直接选择npm

image.png

用户名密码凭证服务器

image.png

构建触发器

直接选择GitHub hook trigger for GITScm pollingmarkdown

image.png

构建环境

image.png

构建

选择执行shell,这里请安装cnpm,构建速度快,且容易报错。ssh

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目录

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

一、安装Publish Over SSH插件

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

image.png

二、配置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进行访问

一、下载镜像

docker pull nginx
复制代码

二、启动nginx容器

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

image.png

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

三、在宿主机和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

相关文章
相关标签/搜索