vuepress借助jenkins和svn实现文档自动化更新部署

发布时间 2024-01-10 20:14:59作者: Scotyzh

前言

有个需求,需要将放在SVN的用vuepress写的文档进行自动化更新和部署,每次有人在本地将写好的md文件更新到svn时候,由jenkins实现自动打包来实现自动更新的功能。

docker安装jenkins

首先创建目录,将jenkins_home挂载到外部

 mkdir /home/jenkins_home
 chmod 777 /home/jenkins_home

运行docker命令,这里安装新版的jenkins,加后缀jdk11,服务器不需要有jdk11环境,由容器解决环境问题。

docker run -u root -it --name jenkins -p 8080:8080 -p 50000:50000 -v /home/jenkins_home:/var/jenkins_home -d jenkins/jenkins:jdk11

配置Jenkins

打开地址ip:8080,会要求输入密钥,到/home/jenkins_home/secrets/initialAdminPassword查看相关密码,输入即可。

然后填写账户密码,进入主页面。点击系统管理,再进入插件管理

image-20240110195035688

选择available plugins,并输入nodejs和subversion分别进行安装

image-20240110195130439

image-20240110195237069

image-20240110195245536

回到主页面,再点击全局工具配置

image-20240110195348015

nodejs这里选择合适的版本,点保存

image-20240110195422090

回到主页面点击新建任务,选择构建自由风格的软件项目

image-20240110195603523

源码管理选择subversion,输入项目地址和credentials里面输入账户密码

image-20240110195710243

构建触发器选择轮询SCM,这里表示每5分钟轮询一次,当SVN的版本号发生改变,即内容有更新就进行部署

H/5 * * * *  

image-20240110195823428

构建环境配置如下:

image-20240110195844633

然后在Build Steps选项,输入:

chmod 777 node_modules/.bin/vuepress
npm run docs:build

image-20240110195913737

不知道为什么,不加chmod命令就会出现下面的错误,加上去就能解决这个问题

image-20240110162058612

然后点击保存。

回到上一页点击立即构建,jenkins会去svn拉取代码进行部署

image-20240110200017815

部署结果:

image-20240110200058163

后续会通过轮询判断是否需要进行重部署。这里只需要将Nginx的静态资源指向jenkins打包后的文件地址即可。

Nginx配置

Nginx配置示例如下,其中jenkins_home/workspace是项目的工作空间,存放项目和编译后的文件。

server {
    listen 8182;  
    server_name localhost;  
   
    location /doc {
        alias /home/jenkins_home/workspace/test/docs/.vuepress/dist/;
         index index.html;
       try_files $uri $uri/ CLTServer/index.html;
    }

}