使用 Vuepress + GitHub Pages 搭建項目文檔(2)- 使用 GitHub Actions 工作流自動部署

在上一篇文章中,我們已經成功用 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…