在上一篇文章中,我们已经成功用 VuePress 搭建了项目文档,并使用 sh 脚本部署到了 GitHub Pages
但随着文档的更新频率增加,每次都要手动推送,那有没有不需要手动推送的方法呢?那必须有。

这次我们将用 GitHub Actions 实现“代码一提交,文档自动上线”的全流程自动化部署。


1. 什么是 GitHub Actions?

GitHub Actions 是 GitHub 提供的 CI/CD(持续集成与持续交付)平台,支持:

  • 根据触发条件(push、PR、定时等)执行任务
  • 在云端虚拟机上自动构建、测试、部署
  • 免去本地手动操作,降低出错率

在我们的场景中,Actions 会:

  1. 检测到代码更新
  2. 在云端安装依赖并构建 VuePress
  3. 将静态文件部署到 gh-pages 分支
  4. 自动更新 GitHub Pages 网站

2. 新建工作流文件

在你的项目根目录下创建目录和文件:

.github/workflows/deploy.yml

然后将以下配置写入:

# 工作流名称
name: Build and Deploy# 触发条件
on:# 当 develop 分支有代码推送时触发push:branches:- develop# 一个 workflow 可以包含多个 job
jobs:# job 唯一 keybuild-and-deploy:# 运行环境runs-on: ubuntu-latest# job 内的步骤steps:# 1. 拉取仓库代码- name: Checkout  ️uses: actions/checkout@v2.3.1# 2. 安装指定版本 Node.js- name: lock npm versionuses: actions/setup-node@v3with:node-version: 18.18.0# 3. 安装依赖并构建- name: Install and Buildrun: |npm i -g pnpmpnpm run initpnpm run docs:buildenv:NODE_OPTIONS: '--max_old_space_size=4096'# 4. 部署到 GitHub Pages- name: Deployuses: JamesIves/github-pages-deploy-action@4.1.3with:BRANCH: gh-pagesFOLDER: docs/.vuepress/distACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}

3. 配置详解

① 触发条件

on:push:branches:- develop

develop 分支有新提交时,工作流就会运行。
如果你希望直接监听 master,改成 - master 即可。


② 检出代码

uses: actions/checkout@v2.3.1

把当前分支的代码拉取到 GitHub 提供的运行环境中,方便后续构建。


③ 安装 Node.js

uses: actions/setup-node@v3
with:node-version: 18.18.0

指定 Node.js 版本,保证构建环境和本地一致,避免版本差异引起的 bug。


④ 构建 VuePress

npm i -g pnpm
pnpm run init
pnpm run docs:build
  • 全局安装 pnpm
  • 执行 init(通常是安装依赖的命令)
  • 执行 VuePress 的构建命令,生成静态文件到 docs/.vuepress/dist

这里额外加了:

env:NODE_OPTIONS: '--max_old_space_size=4096'

调高 Node.js 最大内存限制,避免文档量大时构建内存不足。


⑤ 部署到 GitHub Pages

uses: JamesIves/github-pages-deploy-action@4.1.3

这是社区常用的部署 Action,可以自动将构建后的静态文件推送到指定分支(这里是 gh-pages)。

参数:

  • BRANCH:目标分支(GitHub Pages 会从这里拉取文件)
  • FOLDER:静态文件目录
  • ACCESS_TOKEN:有推送权限的 Token(放在仓库的 Secrets 中)

4. 配置 ACCESS_TOKEN

为了让 GitHub Actions 能推送到 gh-pages 分支,我们需要一个具有写权限的 Personal Access Token

步骤:

  1. 打开 GitHub → SettingsDeveloper settingsPersonal Access Tokens

  2. 点击 Generate new token

  3. 勾选 repo 权限,生成 Token

  4. 回到仓库 → SettingsSecrets and variablesActions
    点击 New repository secret

    • Name:ACCESS_TOKEN
    • Value:刚刚生成的 Token
  5. 保存


5. 流程示意

推送代码到 develop 分支
触发 GitHub Actions
拉取代码 Checkout
安装 Node.js 和 pnpm
构建 VuePress 文档
部署到 gh-pages 分支
GitHub Pages 自动更新

6. 效果

现在只需要:

git add .
git commit -m "更新文档"
git push origin develop

GitHub Actions 会在云端帮你完成:

  1. 构建文档
  2. 部署到 GitHub Pages
  3. 几十秒后网站自动更新 🎉

7. 总结

这次我们实现了:

  • 监听分支变化
  • 云端构建 VuePress
  • 自动部署到 GitHub Pages

整个过程无需手动切分支、build、推送,大幅提高了效率。


如果你觉得这篇文章对你有帮助,欢迎点赞、收藏或留言交流 😊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92515.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92515.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92515.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫实战:研究PSpider框架,构建电商数据采集和分析系统

一、引言 1.1 研究背景 在大数据时代,数据已成为驱动科技创新、商业决策和社会发展的核心资源。据 IDC 预测,全球数据量将从 2020 年的 64ZB 增长至 2025 年的 175ZB,其中互联网公开数据占比超过 60%。如何从海量网络信息中高效、精准地提取有价值的数据,成为学术界和工业…

剑指offer第2版:动态规划+记忆化搜索

前三题是同一种模型,所以我分别用递推、记忆化、动归来做 一、p74-JZ10 斐波那契数列 斐波那契数列_牛客题霸_牛客网 class Solution { public:int Fibonacci(int n) {// write code hereif(n1||n2) return 1;int a1,b1,c1;while(n>2){cab;ab;bc;--n;}return c…

Unity 调节 Rigidbody2D 响应速度的解决方案【资料】

可以通过多种方式调节 Unity 中 Rigidbody2D 的响应速度,包括降低物理更新频率、屏蔽过小值以及优化物理参数。以下是几种有效的实现方法:1. 降低物理更新频率(不推荐直接修改)虽然可以修改 Time.fixedDeltaTime 来降低物理更新频…

力扣-189.轮转数组

题目链接 189.轮转数组 class Solution {public void reverse(int[] nums, int i, int j) {while (i < j && i > 0 && j < nums.length) {int temp nums[i];nums[i] nums[j];nums[j] temp;i;j--;}}public void rotate(int[] nums, int k) {k k …

Linux命令行安装Climate Data Operators(CDO)的方法

本文介绍在Linux操作系统的发行版本Ubuntu中&#xff0c;基于命令行&#xff0c;配置Climate Data Operators&#xff08;CDO&#xff09;这个用于操作、分析气候及其他相关数据的命令行工具的方法。 最近&#xff0c;需要对一批.nc格式文件加以处理&#xff1b;在之前&#xf…

如何为您的服务器选择正确的 PHP 版本

PHP作为最流行的服务器端脚本语言之一&#xff0c;持续演进并定期发布新版本。为您的服务器选择正确的PHP版本对于网站性能、安全性和功能兼容性至关重要。本文将指导您如何做出明智的选择。了解PHP版本的生命周期在选择PHP版本前&#xff0c;首先需要了解PHP的版本支持政策&am…

从0开始的中后台管理系统-5(userList动态展示以及上传图片和弹出创建用户表单)

项目用的都是antd组件&#xff0c;这里的userList组件展示的表单组件的数据直接get请求拿过来展示的&#xff0c;这里随机生成了50个用户只是为了展示表单的api设置。首先就是表单展示需要两个参数current和pageSize两个属性控制表单的最大分页和当前页面。那么我们就设置初始值…

Spring MVC REST API设计详解:从零构建高效接口

1. Spring MVC与REST API基础1.1 RESTful架构的六大约束详解RESTful架构是Roy Thomas Fielding在2000年博士论文中提出的软件架构风格&#xff0c;它包含六个核心约束&#xff0c;这些约束共同构成了RESTful API的设计原则。客户端-服务器约束&#xff08;Client-Server&#x…

基于STM32F030C8T6单片机实现与CH224Q诱骗芯片的I2C通信和电压输出配置

基于项目的需要,对STM32F030的IIC研究了几天,终于完成了通信,接下来具体实现如下: 本单片机使用的是PB8和PB9管脚进行实现,采用的是模拟的IIC进行 void MyI2C_W_SCL(uint8_t BitValue)//这三个函数将读写io口封装起来,增强可读性 { GPIO_WriteBit(GPIOB, GPIO_Pin_8…

TSMaster-C小程序使用

打开同星的TSMaster&#xff0c;推荐用32版本的&#xff0c;比64更稳定。同星的TSMaster的C小程序支持用户嵌入代码来控制CAN报文的收发逻辑。便于开发。点击设计里面的C小程序。 比如我现在想用小程序来实现继电器0先开后关开1s关1s&#xff0c;然后继电器1开1s关1s…如此往复…

XSS渗透测试原理/步骤/攻击方法/防御/常用语法

**核心概念回顾&#xff1a;**XSS漏洞一直被评估为web漏洞中危害较大的漏洞&#xff0c;在OWASP TOP10的排名中一直属于前三的江湖地位。XSS是一种发生在前端浏览器端的漏洞&#xff0c;所以其危害的对象也是前端用户。 形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处…

目标检测数据集 - 自动驾驶场景道路异常检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;自动驾驶场景道路异常检测数据集&#xff0c;真实场景高质量道路图片数据&#xff0c;涉及场景丰富&#xff0c;且类别丰富&#xff0c;划分为 "LMVs 轻型机动车&#xff08;汽车、摩托车、小型卡车、小型货车"、"HMVs 公交车、卡车、拖拉…

多模态新方向|从数据融合到场景落地,解锁视觉感知新范式

来gongzhonghao【图灵学术计算机论文辅导】&#xff0c;快速拿捏更多计算机SCI/CCF发文资讯&#xff5e;多模态学习&#xff08;Multimodal Learning&#xff09;是通过整合多种数据模态来提升模型对复杂场景感知与理解能力的技术&#xff0c;其核心是利用不同模态的互补性突破…

机器学习之随机森林

目录 一、什么是随机森林&#xff1f; 1. 从决策树到集成学习&#xff1a;为什么需要 "森林"&#xff1f; 2.什么是集成学习 二、随机森林的工作原理 三、随机森林构造过程 四、随机森林api介绍 五、随机森林的优缺点 六、垃圾邮件判断案例 1.数据集介绍 ​…

云平台运维工具 —— 阿里云原生工具

一、简介阿里云作为国内领先的云服务提供商&#xff0c;拥有一套完整的原生运维工具体系&#xff0c;这些工具与阿里云的各类服务深度融合&#xff0c;能够满足用户在资源部署、监控告警、权限管理、自动化运维等方面的需求。无论是简单的应用托管还是复杂的企业级架构&#xf…

Linux-Day10.系统安全保护web服务管理

今日目标&#xff1a;- 日志管理- 系统安全保护 SELinux&#xff08;重点&#xff09;- 构建基本web服务&#xff08;重点&#xff09;环境准备还原快照网络配置完成&#xff0c;开启虚拟机A与虚拟机B用真机连通虚拟机去操作&#xff0c;准本好Xshell一、常用的网络工具ip命令1…

解决:开启魔法后vscode pip命令不能安装中科大python镜像问题

闲言少叙&#xff0c;最终实现效果就是在开启魔法情况下&#xff0c;vscode命令行任何能通过中科大python镜像安装第三方库&#xff0c;又快又不消耗魔法流量。简单来说就两步&#x1f447;&#xff1a; 第一步&#xff1a;配置 pip.ini 中的代理 找到或创建 pip.ini 文件&…

优化Google Pubsub到GCS的文件整合策略

引言 在使用Google Cloud Platform (GCP) 的Pubsub服务时,我们常常会遇到将消息存储到Google Cloud Storage (GCS) 作为Avro文件的问题。本文将深入探讨如何优化Google Pubsub到GCS的文件整合策略,以避免每个消息都单独生成一个Avro文件,达到将多个消息整合到一个文件的目的…

基于铁头山羊STM32的平衡车电机转速开环闭环matlab仿真

基于铁头山羊STM32的平衡车电机转速开环闭环matlab仿真前言一、电机开环传递函数1.1 电机开环传递函数的零极点1.2 求系统的参数和绘制波特图二、增加PI控制器后系统开环传递函数三、电机系统闭环传递函数四、simulink仿真五、幅值裕度、相位裕度、相位穿越频率和截止频率&…

P1044 [NOIP 2003 普及组] 栈

P1044 [NOIP 2003 普及组] 栈 - 洛谷 题解来自洛谷题解&#xff0c;做笔记用 假设用一个函数来表示&#xff1a; x表示当前还未入栈的数字个数 y表示当前栈中的数字个数 orz&#xff0c;大佬们真的是很厉害&#xff0c;想着递推但是只拿了60分 #include <bits/stdc.h&g…