Skip to content

应用jenkins 自动更新部署vuepress到服务器

约 1467 字大约 5 分钟

jenkinsCI/CDvuepress

2025-08-16

docker 安装 jenkins

准备工作

cd /Users/dftshine/Career/LocalDocker/docker_volumes/

创建文件夹

mkdir -p jenkins/jenkins_home

找到本机部署的 maven、

/Users/dftshine/Career/Develop/Tools/apache-maven-3.9.6

找到宿主机部署的jdk

/Library/Java/JavaVirtualMachines/jdk-17.0.13.jdk/Contents/Home

注:macos 默认不能使用用户主目录外的资源,需要在docker desktop 配置中增加Resource

image-20250816174149945

iterm2 容器构建命令

docker run -d \
  -p 8888:8080 \
  -p 50000:50000 \
  --privileged=true \
  -v /Users/dftshine/Career/LocalDocker/docker_volumes/jenkins/jenkins_home:/var/jenkins_home \
  -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
  --restart=always \
  --name=jenkins \
  -u root \
  -v /Users/dftshine/Career/Develop/Tools/apache-maven-3.9.6:/data/maven \
  -v /Library/Java/JavaVirtualMachines/jdk-17.0.13.jdk/Contents/Home:/data/jdk17 \
  -v /Users/dftshine/Career/LocalDocker/docker_volumes/jenkins/docker.sock:/var/run/docker.sock \
  -v $(which docker):/usr/bin/docker \
  jenkins/jenkins

查看jenkins管理员密码

通过进程得到容器id - 8c29cee6e981

docker ps -a | grep jenkins
8c29cee6e981   jenkins/jenkins                                 "/usr/bin/tini -- /u…"   18 hours ago     Up 18 hours                     0.0.0.0:50000->50000/tcp, 0.0.0.0:8888->8080/tcp                             jenkins

进入容器

docker exec -it 8c29cee6e981 /bin/bash

查看初始管理员密码

cat /var/jenkins_home/secrets/initialAdminPassword

进入jenkins网址,输入管理员密码后继续

http://localhost:8888/jenkins

基础配置、初始化

admin 密码、邮箱..

选择推荐的插件即可(自带git)

注:此时安装的jenkins版本为 2.523

jenkins 配置

安装插件

进入jenkins配置页面

image-20250816180719357

进入plugins管理页面

image-20250816180850778

安装NodeJS Plugin(编译打包前端代码)

在Avaliable Plugins 查询NodeJS Plugin,勾选后安装

安装之后,回到Jenkins配置页面,进入Tools 管理页面,滚动页面到最下面,NodeJS安装部分, 新增NodeJS

image-20250816185311121

别名:NodeJS 的名称,用于区分不同版本,此处配置NodeJS-18

勾选自动安装

版本,选择为NodeJS 18.20.4 (注:参考开发环境使用的版本号)

其余不变,点保存即可。

安装Publish Over SSH 插件(部署服务器)

在Avaliable Plugins 查询Publish Over SSH, 勾选后安装

安装之后,回到Jenkins配置页面,进入System管理页面,滚动页面到最下面, SSH Server 部分配置 部署服务器的信息

Name: SSH Server 的名字,用于区分不同部署服务,此处配置ECS

Hostname:部署服务器的IP地址,此处配置的是XXX.XXX.XXX.XXX

Username:部署服务器的用户名,此处配置的是root

Remote Directory : 部署工程dist的路径, 此处配置的是 /opt/webserver/nginx/dist

注:此处不配置服务器的密码或者key

其余不变,点保存即可。

其他

代码仓库及账号密码获取

此处使用服务器自行搭建的gogs git服务, 前端工程URL 为 {http://...git} 账号密码分别为 {用户名}

部署服务器公钥访问

部署服务器上,进入 ~/.ssh 目录,生成公钥私钥对。

cd ~/.ssh/
ssh-keygen -t rsa

一路回车,即可完成,然后~/.ssh 目录下多了两个文件

id_rsa  id_rsa.pub

其中id_rsa 为私钥,cat命令查看其中的内容,可以复制出来保存,之后在客户端(jenkins)配置时使用。

其中id_rsa.pub 为公钥,需要放到服务器下 ~/.ssh/authorized_keys 中,如果没有此文件,先创建

touch authorized_keys
cat id_rsa.pub >> authorized_keys

jenkins配置项目任务

新建部署任务

新建item,此处任务名配置为 spads-blog, 类型选择 Freestyle project

image-20250816182740114

任务配置

进入任务中,点击配置,进入配置页面

image-20250816182927903

General

此处指配置描述即可

源码管理

选择Git,进行相关配置

Repositories

Repositories URL:配置git仓库URL

Credentials:配置git仓库的用户名密码

Branches to build

指定分支,此处默认 */master

Additional Behaviours

此处不配置

Trigger

此处无配置

image-20250816185422251

Environment

此处勾选 Provide Node & npm bin/ folder to PATH,然后进行配置

Node JS installation:选择安装配置的工具 NodeJS-18,其他默认即可。

image-20250816185444584

Build Steps

选择执行 shell,命令内容如下(进行安装依赖和打包)

npm i && npm run docs:build

image-20250816185519222

构建后操作

选择Send Build artifacts over SSH,配置如下:

SSH Server:

Name:选择system配置中SSH Server 的名字, ECS

展开高级,配置服务器登录信息,

​ Credentials:

​ username:配置SSH Server 用户名,此处配置为root

​ Key:此处配置服务器上生成的私钥(id_rsa)中的内容(注:需要带着-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----)

​ Transfer Set:

​ Source files:配置vuepress工程打包后的dist目录位置,此处配置为 docs/.vuepress/dist/**/*

​ Remove prefix: 配置移除的文件夹前缀,此处配置为 docs/.vuepress/dist/

​ Remote directory: SSH Server 配置的远程目录后面追加的路径,因为SSH Server 中直接配置的目标路径,此处配置选择不配置。

​ Exec command:需要执行的命令,此处配置 /opt/webserver/nginx/sbin/nginx -s reload

注:如果同一个SSH server部署多个项目或服务,比如前后端分别部署,SSH Server那个位置可以选择一个大致位置,可以通过此处Remote directory来区分具体位置。需要特别注意的是 选择的文件夹,需要有相应权限。 此外,如果执行命令没有权限也会报错,最好指定要运行的程序的全路径。

image-20250816190031507

保存

点击保存,完成配置

执行构建

回到项目页面,执行 立即构建

image-20250816184756457

构建执行后,在左下角builds列表会新增一个记录,点击后进入可查看控制台输出日志,如果有报错,针对报错信息进行处理,直至构建成功:

image-20250816184831418

检查成果

访问服务器URL 查看部署后的内容是否更新。