超详细!!!最新的VuePress + Github Pages + Github Actions实现博客自动部署

news2024/9/25 3:28:20

超详细!!!VuePress + Github Pages + Github Actions实现博客自动部署

本文着重讲述如何使用通过Github ActionsVuePress项目部署自动在Github Pages上。每一位开发者有一个自己的博客网站是一件很酷的事情,由于最近想整理一下在学习前端过程中的学习心得、体会等内容,因此一直想搭建一份自己的博客系统,用于后期的知识点回顾。其实在此之前,有使用hexo进行博客的搭建,但是Vue写多了以后,想用VuePress也搭建一个,并作为后期文档维护的网站。

在这里打个小广告。我的博客是在一位开源大佬的基础上搭建的,内容包含了HTML、CSS、JS/TS、VUE、REACT等一些列前端技术点,面试技巧等内容。由于之前的大佬不维护了,因此我借鉴过来并且继续与时俱进的维护内容,内容免费,仅作为学习参考,感兴趣的可以去看看,谢谢大家!!!去看看

一、准备一个VuePress静态页面

在完成部署前,需要准备一个使用VuePress搭建的项目,如果这一步大家还没完成或者想回顾一下的话,可以参考我的这一篇文章,详细介绍了如何使用VuePress搭建一个博客项目。传送门

二、搭建一个Github Pages页面

GitHub Pages 是 GitHub 提供的一项服务,允许用户直接在 GitHub 仓库中托管静态网站。这意味着你可以使用它来创建和发布个人项目、文档或博客等内容,并且这些内容将被托管在 GitHub 的服务器上。

注意:

1、我们只能为每个 GitHub 帐户创建一个用户或组织站点,也就是大家熟知的,仓库的名字必须是 <username>.github.io 或者对于组织来说是 <organizationname>.github.io这种类型的仓库,这种仓库只能有一个;

2、项目站点没有限制,URL一般来说都是<username>.github.io/<project-name>。项目页面用于展示特定项目的文档或信息。

本文主要讲解一下第一种,仓库的名字必须是 <username>.github.io的个人用户站点。

创建仓库

在个人的主页,先点右上角的加号,然后点击New repository按钮。

在这里插入图片描述

进入这个页面后进行仓库创建,这里为了让大家看的更明白一点进行了页面的翻译,如果是英文的页面内容也是一样的。

这里存储库的名称格式需要为<username>.github.io,添加README.md文件。其他的描述、是否公开等都可以根据自己的需要进行选择。

这一步很关键,仓库名称一定一定一定是 <username>.github.io这种格式,否则不会生效。

在这里插入图片描述

仓库创建成功后,依次点击Settings→Pages→Visit site,打开访问已发布的网站。

我这里的Source选择的是分支,如果希望从其他的分支构建页面,可以在Branch中进行切换。在Custom domain中可以配置自己的域名进行访问。这些都根据个人需要进行配置。

在这里插入图片描述

三、配置Github Actions

1、生成Token

要部署 Actions,那么它就需要有能够操作我们仓库的权限,因此需要提前设置个人访问令牌(Github personal access)。

首先点击个人的头像,点击Settings进入设置。

在这里插入图片描述

往下滑动,找到Developer settings

在这里插入图片描述

依次点击,进行token的创建

在这里插入图片描述

这里也是为了大家查看进行了翻译哈,笔记那里就是这个令牌的用途,到期那里就选择No expiration,也就是无期限的意思。最后就是选权限,一般来讲这里选 repo (回购)就够了,但是如果你不确定,那就全都选上也行。然后点击最下方的 Generate Token,会生成一个令牌。

注意这里它只会出现一次,一旦刷新该网页就不见了,所以最好把它复制到你的备忘录备份一下,而且我们待会也是需要用到这个 Token 的。

在这里插入图片描述

2、设置 Secrets

上一步,我们已经生成了一个令牌,现在需要将这个令牌与你创建的Pages仓库进行绑定。

在创建的仓库中,依次点击Settings=> Actions => New repository secret

在这里插入图片描述

将上一步生成的token复制进行并保存。

在这里插入图片描述

3、设置Actions

进入项目的的 Actions 选项,然后新建一个 workflow(我是因为已经建立过了,所以才是下面的界面),默认新建的 workflow 名字是 main.yml 这个可以自己自定义,根据你自己喜好来就行了。

在这里插入图片描述

进入到这个页面以后往下拉,找的pages中的Static Html并进行选择。

在这里插入图片描述

如果你是其他的模板就选择其他的类型。

在这里插入图片描述

这时候会生成一个static.yml的文件,该文件会保存在项目的 .github/workflows 目录下。我把这个文件的名字改成了deploy.yml,你不想改也没事。

不过这个yml文件的内容需要修改,根据我下发提供的代码来哦!!!

在这里插入图片描述

4、配置yml文件

为了让大家更好的理解这个yml文件,我先给大家简单讲讲这个yml文件的语法,感兴趣的小伙子可以直接去看官方文档。

Yml文件的关键部分

  1. name: - 工作流的名称。
  2. on: - 触发工作流的事件,如 pushpull_request
  3. jobs: - 工作流中的一系列作业(job)。
  4. runs-on: - 指定作业运行的操作系统环境。
  5. steps: - 每个作业包含的一系列步骤。

YAML 语法要点

  • 缩进:YAML 使用缩进来表示层次关系。通常使用两个空格进行缩进。
  • 键值对:使用冒号后跟一个空格来分隔键和值。
  • 数组:使用减号 - 来表示数组或列表。
  • 映射:使用冒号 : 来表示映射或字典。

特殊关键字

  • uses: - 表示使用某个 GitHub Action。
  • run: - 表示执行一个命令或一组命令。
  • with: - 提供给 Action 的参数。
  • if: - 控制步骤是否执行的条件。

关键配置范例详解

name: Example Workflow # 工作流的名称,如果省略,则使用当前文件名

run-name: Deploy by @${{ github.actor }} # 从工作流生成的工作流运行的名称,如果省略,则使用提交时的commit信息

on: # 触发工作流的事件
  push:
    branches: [ main ] # 当推送至 main 分支时触发
  pull_request:
    branches: [ main ] # 当创建针对 main 分支的拉取请求时触发

jobs: # 定义工作流中的作业
  build: # 作业的名称
    runs-on: ubuntu-latest # 指定运行环境
	# 每个任务下的运行步骤,短横杠 - 表示一个步骤,从上至下依次执行。
    steps: # 作业中的步骤
      - name: Checkout code # 检出代码
        uses: actions/checkout@v3 # 一般直接使用别人预先设置好的Actions 如使用actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.9' # 设置 Python 版本

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt # 安装依赖项

      - name: Run tests
        run: |
          python test.py # 运行测试脚本

      - name: Deploy
        if: success() # 如果所有先前的步骤成功,则执行部署
        run: |
          echo "Deploying to production..." # 部署到生产环境

通过以上内容的了解与学习,大家可以尝试写一下我们部署Github Pages需要的yml,下面我也给出了完整的案例供大家学习参考。

我这里将打包后的文件放到了FrontPages分支中,如果没有这个分支的话,大家记得创建一下,然后在Settings中修改一下部署的分支为FrontPages。如果不想创建新的分支也行,那就把打包出来的文件放到dist文件夹中,Settings中要指定到这个dist文件夹。

在这里插入图片描述

下面请看代码

# 工作流的名称
name: Build and deploy 
# 从工作流生成的工作流运行的名称
run-name: Deploy by @${{ github.actor }}  
# 触发工作流的事件
on:
  push:
    branches: [ main ] # 当 main 分支有新的推送时,此工作流会被启动。
  workflow_dispatch: # 或者手动触发工作流时,此工作流会被启动。
# 当前流程要执行的任务
jobs:
  build:
    # 这部分指定了作业将在 ubuntu-latest 环境下运行。
    runs-on: ubuntu-latest
	# 每个任务下的运行步骤,短横杠 - 表示一个步骤,从上至下依次执行。
    steps:
      - name: checkout # 检出代码
      - uses: actions/checkout@v2 # 使用 actions/checkout action 检出代码到工作空间。
      
	  # 这一步安装 Node.js v16。
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '16'
            
     # 缓存 npm node_modules
      - name: Cache dependencies
        uses: actions/cache@v3
        id: npm-cache
        with:
          path: |
     		~/.npm
      		**/node_modules
          key: ${{ runner.os }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-cache-

      # 安装依赖 npm
      - name: Install dependencies
        # 如果没有命中缓存才执行 npm install
        if: steps.npm-cache.outputs['restore-keys'] == ''
        run: npm install

     # 运行构建脚本
      - name: Run Build Script
        run: npm run build
        
      - name: Deploy
        uses: JamesIves/github-pages-deploy-action@releases/v3
        with:
        # env:
          # 部署到 FrontPages 分支
          BRANCH: FrontPages
          # 部署目录为 VuePress 的默认输出目录
          FOLDER: docs/.vuepress/dist
          # 当前仓库的密钥
          SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_PRIVATE_KEY }}

yml文件配置好后,确保这个文件的位置是在.github/workflows/下。

在这里插入图片描述

然后可以点击仓库中的Actions查看进度,如果变成红色的那就是出错了,可以点进去查看错误原因,如果是绿色的话,那就是部署成功的。

在这里插入图片描述

等部署完成以后,点击最新的流程结果,可以看到如下内容,然后点击那个链接就可以看到部署的结果啦。

在这里插入图片描述

恭喜你,已经完成了人生成就——独立部署一个静态页面。继续加油吧!都看到这里了,麻烦点个赞吧!谢谢支持!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot学习(8)(Bean注册条件)(@Conditional的衍生注解)

目录 一、引言 二、案例引用&#xff08;接着上篇博客&#xff09; 三、注册条件 &#xff08;1&#xff09;ConditionalOnProperty &#xff08;2&#xff09;Conditional0nMissingBean &#xff08;3&#xff09;ConditionalOnclass 四、总结 一、引言 之前学习和了解了Bean对…

相亲交友系统商业开发

在快节奏的现代生活中&#xff0c;寻找真爱成为了许多人的渴望。相亲交友系统&#xff0c;作为连接心灵的桥梁&#xff0c;正逐渐成为人们寻找伴侣的首选方式。我们的团队h17711347205致力于开发一款创新的相亲交友系统&#xff0c;旨在通过智能化的匹配算法&#xff0c;为用户…

出门总是一身猫毛怎么办?霍尼韦尔、希喂、352、小米宠物空气净化器对比实测

毕业了好些年&#xff0c;前段时间有同学组织了聚会&#xff0c;聚一聚&#xff0c;我们班的专业本身就和动物有关&#xff0c;聊天自然而然聊到了宠物上去&#xff0c;有个同学打趣&#xff1a;“有没有养猫狗看看衣服就知道了”。还真是家里养了宠物的&#xff0c;无论咋清理…

电子商务小程序如何做seo

电子商务小程序进行SEO&#xff08;搜索引擎优化&#xff09;是一个综合性的过程&#xff0c;旨在提高小程序在搜索引擎中的排名&#xff0c;从而增加曝光度和用户流量。以下是一些关键的SEO策略和实践方法&#xff1a; 电子商务小程序如何做seo 1. 关键词研究与布局 关键词选…

第十七篇:TCP协议介绍(1)

1.TCP 的概念 传输控制协议&#xff08;Transmission Control Protocol&#xff0c;TCP&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。在 TCP 协议中&#xff0c;通过三次握手建立连接。通信结束后&#xff0c;还需要断开连接。如果在发送数据包时&…

视频安防监控LntonAIServer安防管理平台抖动检测和过亮过暗检测

随着视频监控技术的发展&#xff0c;视频质量成为确保监控系统有效性的重要因素。LntonAIServer通过引入抖动检测与过亮过暗检测功能&#xff0c;进一步提升了视频监控系统的可靠性和用户体验。这些功能可以帮助及时发现并解决视频流中的质量问题&#xff0c;确保视频监控系统始…

数字广告监管者对高风险行业的打压,但是否应该...

不言而喻&#xff0c;如果你从事的是某些类型产品的推广业务&#xff0c;你需要格外小心。不懂我们的意思&#xff1f;那你算幸运了。我们指的是那些被归类为 高风险行业 的消费品或商业产品。 高风险行业是那些相较于其他行业“面临更多运营、监管和声誉风险”的行业。不完全列…

基于51单片机的倒计时装置proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1p9xDKXaulyx-PyP6dURp-g 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…

[SwiftUI 开发] 构建带有动画的图片瀑布流效果

在移动应用程序中&#xff0c;图片瀑布流布局是一种常见的设计模式&#xff0c;它不仅能够以网格的形式显示大量图片&#xff0c;还能允许用户点击图片进行全屏查看。 在下文中&#xff0c;将详细介绍如何使用 SwiftUI 构建一个带有点击动画效果的图片瀑布流布局&#xff0c;并…

B站视频下载教程

文章目录 1.确保浏览器下载了tampermonkey(油猴)2.下载插件3.下载mtorix4.浏览器刷新并下载视频 1.确保浏览器下载了tampermonkey(油猴) 至于这个步骤可以自行搜索一下很简单&#xff0c;讲油猴固定在状态栏&#xff0c;显示如下 2.下载插件 1.进入greasyFork 2.搜索B站视…

【Unity-Lua】音乐播放器循环滚动播放音乐名

前言&#xff1a;Unity中UI节点 图1 如上所示&#xff0c;一开始本来是打算用ScrollView做的&#xff0c;觉得直接计算对应的文本位置就行&#xff0c;所以没用ScrollRect来做&#xff0c;可以忽略Scroll&#xff0c;Viewport这些名字。如下图&#xff1a;需要在一个背景Image…

多级别分销平台怎么做 千店系统设计关键要点

创建多级别分销平台可以帮助企业拓展市场并激励分销商&#xff0c;多级别分销商城的良好设计可以助力企业的营销事半功倍。今天&#xff0c;商淘云为您分享千店系统设计的三大关键要点。 首先&#xff0c;选择合适的平台和技术工具至关重要。使用像商淘云供应链这样的电商平台&…

睿赛德科技携手先楫共创RISC-V生态|RT-Thread EtherCAT主从站方案大放异彩

日前&#xff0c;在先楫HPM6E00技术日上&#xff0c;睿赛德科技&#xff08;RT-Thread&#xff09;向广大工业用户展示了多年来双方在RISC-V生态领域的合作历程和成果&#xff0c;同时睿赛德科技携手先楫半导体首次推出了基于HPM6800处理器的EtherCAT主站解决方案&#xff0c;吸…

Uniapp + Vite + Vue3 + uView + Pinia 实现自定义底部 Tabbar(最新保姆级教程)

Uniapp Vite Vue3 uView Pinia 实现自定义底部 Tabbar&#xff08;最新保姆级教程&#xff09; 1、效果展示2、环境准备2.1 新建 uniapp 项目2.2. 安装 uView2.3 安装 pinia 3. 配置环境4. 创建目录结构5、编写 pages.json 页面路由6、编写 tabbar.js 状态数据7、编写 tabb…

Java-IDEA模拟一个Redis服务器,与Redis客户端进行一次简单的交互。默认端口号:6379

首先要了解Redis的交互协议。 摘抄&#xff1a; 简单字符串&#xff08;Simple Strings&#xff09;: 以 “” 开头&#xff0c;例如 “OK\r\n” 表示一个成功的响应。错误&#xff08;Errors&#xff09;: 以 “-” 开头&#xff0c;例如 “-ERR unknown command\r\n” 表示一…

操作系统概述及特征

&#xff08;较为浅显的了解操作系统&#xff0c;适合小白&#xff09;&#xff1b; 目录 1. 操作系统概述 1.1 操作系统 1.2 系统软件 1.3 主要作用 2. 操作系统的特征 ​编辑 2.1 并发性​编辑 2.2 并行​编辑 2.3 共享性 2.3.1 共享概述 2.3.2 共享与并发的关系…

【机器学习】朴素贝叶斯网络的基本概念以及朴素贝叶斯网络在python中的实例

引言 文章目录 引言一、朴素贝叶斯网络1.1 基本概念1.1.1 节点1.1.2 边&#xff08;Edges&#xff09;1.1.3 条件独立性 1.2 特点1.2.1 结构简单1.2.2 易于理解和实现1.2.3 计算效率高 1.3 应用1.4 数学表示1.5 局限性 二、朴素贝叶斯网络在python中的实例2.1 实例背景2.2 实现…

LangChain 最新版入门实战-v0.2

LangChain 基础入门文档 1. 认识 LangChain LangChain 是一个基于大型语言模型&#xff08;LLM&#xff09;的应用开发框架。它通过两种方式规范和简化了使用大型语言模型的方式&#xff1a; 集成&#xff1a;让语言模型能够使用更多的信息。 代理&#xff1a;让语言模型能够…

Linux 磁盘增加分区并挂载

说明 目的&#xff1a;该篇文章主要是实操后为了备忘 原因&#xff1a;为了方便&#xff0c;直接使用已有模板创建了虚拟机。没想到创建的新机器给了300G磁盘&#xff0c;实际只有2个分区且只使用了100G。以下为我实操后成功增加分区并挂载的步骤。 增加分区 指定操作对象&a…

如何快速写文献综述

真实参考文献的AI论文生成器&#xff1a;AIPaperDone - AI 万字论文生成 在本文中,你将学习如何为不同的学术领域撰写文献综述。 请注意: 文献综述并不是关于小说或诗歌等文学作品的。当我们说"文献",我们指的是某个领域的"研究"。撰写文献综述意味着收集…