使用 GitHub Actions 自动部署 Hexo 个人博客

news2024/12/28 20:36:33

文章目录

  • 申请 GitHub Token
  • 源码仓库
  • 配置 Github Action
  • 重新设置远程仓库和分支
  • 查看部署

每次部署 Hexo 都需要运行 hexo cl & hexo g & hexo d 指令三件套完成推送到远程仓库,随着文章越来越多,编译的时间也会越来越长,通过 Github Actions,我们只需要在每次完成博客的编写或修改以后,将改动直接 push 到远程仓库,之后的编译部署的工作统统交给 CI 来完成即可。

申请 GitHub Token

  1. 登录 GitHub:https://github.com/,点击右上角头像,点击【Setting】

    image-20230528215544904

  2. 点击左侧的【Developer settings】:

    image-20230528215740677

  3. 依次点击【Personal access tokens】、【Tokens】、【Generate new token】:

    image-20230528215917284

  4. 填写 【Note】、【过期时间】,勾选【repo】【workflow】,点击【Generate Token】:

    image-20230528220108288

  5. 复制生成的 Token,后续会用到。

    image-20230528220411338

源码仓库

  1. 创建一个存放源码的仓库,仓库名任意,勾选【Private】,点击【create repository】:

    image-20230528214812064

配置 Github Action

  1. 在本地 [Blogroot] 根目录下新建 .github 文件夹,注意开头是有个 . 的:

    image-20230528215202940

  2. 然后在 .github 目录下新建 workflows 文件夹:

    image-20230528215237031

  3. 新建 autodeploy.yml 文件,在 autodeploy.yml 中添加以下内容:

    name: 自动部署
    # 当有改动推送到main分支时,启动Action
    on:
      push:
        branches:
          - main
      release:
        types:
          - published
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: 检查分支
            uses: actions/checkout@v2
            with:
              ref: main
    
          - name: 安装 Node
            uses: actions/setup-node@v1
            with:
              node-version: "16.x"
    
          - name: 安装 Hexo
            run: |
              export TZ='Asia/Shanghai'
              npm install hexo-cli -g
    
          - name: 缓存 Hexo
            id: cache-npm
            uses: actions/cache@v3
            env:
              cache-name: cache-node-modules
            with:
              path: node_modules
              key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
              restore-keys: |
                ${{ runner.os }}-build-${{ env.cache-name }}-
                ${{ runner.os }}-build-
                ${{ runner.os }}-
    
          - name: 安装依赖
            if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
            run: |
              npm install gulp-cli -g #全局安装gulp
              npm install --save
    
          - name: 生成静态文件
            run: |
              hexo clean
              hexo bangumi -u #bilibili番剧更新
              hexo generate # 生成静态文件
              hexo algolia # 同步 algolia 搜索
              gulp
    
          - name: 部署到Github
            uses: JamesIves/github-pages-deploy-action@v4
            with:
              token: # github token
              repository-name: # 推送的目标仓库:用户名/仓库 ShiJieCloud/blog-source
              branch: main # 推送的目标仓库分支
              folder: public # 要推送的文件夹下的内容
              commit-message: "${{ github.event.head_commit.message }} Updated By Github Actions"
    

重新设置远程仓库和分支

  1. 打开本地 [Blogroot] 根目录下的 .gitignore 文件,输入以下内容:

    .DS_Store
    Thumbs.db
    db.json
    *.log
    node_modules/
    public/
    .deploy*/
    .deploy_git*/
    .idea
    themes/anzhiyu/.git
    

    注:有其他主题文件时请将 themes/anzhiyu/.git 修改为对应的的主题目录,或者将主题目录下的 .git 文件进行删除。

  2. 在博客根目录 [Blogroot] 下启动终端,使用 git 指令重设仓库地址:

    git remote rm origin # 删除原有仓库链接
    git remote add origin [github 源码仓库地址] # github 源码仓库地址
    
  3. 推送本地源码到远程仓库:

    git branch -M main # 切换到main分支
    git add .
    git commit -m "github action update"
    git push -u origin main
    

查看部署

进入存放源码的仓库,点击【Actions】即可查看到自动部署的情况,每次本地推送到远程仓库时,会触发自动部署。

image-20230528221621461

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

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

相关文章

前缀树概念

前缀树(prefix tree) 准备一个Str[],数组中元素有[“abc”,“bcd”,“abg”,“bcde”,“qwe”],如何将数组中元素加到树中呢? 从最开始的字符串abc说,第一个字符是a,从一个空的头节点出发&#…

jQuery属性操作和内容文本值

1. 属性操作 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…

全局CSS样式1

1. 响应式基础 1.1 init <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compati…

chatgpt赋能python:Python两行三列列表:更高效的数据展示方式

Python 两行三列列表&#xff1a;更高效的数据展示方式 在Python编程中&#xff0c;经常会需要对数据进行展示。而最常见的方式则是使用列表。然而&#xff0c;当数据量较大时&#xff0c;传统的列表显示方式显得过于冗长。Python两行三列列表的使用&#xff0c;不仅可以增加代…

chatgpt赋能python:Python不挂科,学会这些技能就足够

Python不挂科&#xff0c;学会这些技能就足够 Python已成为现代编程语言中最受欢迎的一种&#xff0c;它擅长处理数据、人工智能等复杂的软件开发任务。互联网时代的到来也让Python的使用场景更加广泛&#xff0c;从前后端开发到数据分析。无论是学习Python的初学者还是有一定…

MQTT(3):MQTT协议原理

官方文档中对于MQTT协议包的结构有着具体的说明&#xff1a;http://mqtt.org/documentation 在MQTT协议中&#xff0c;一个MQTT数据包由&#xff1a;固定头&#xff08;Fixed header&#xff09;、可变头&#xff08;Variable header&#xff09;、消息体&#xff08;payload&…

chatgpt赋能python:介绍Python在SEO中的重要性

介绍Python在SEO中的重要性 随着互联网的不断发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;变得越来越重要。SEO一直是网络营销的重要组成部分&#xff0c;可以增加网站的可见性和流量。Python作为一种强大的编程语言&#xff0c;可以帮助网站优化人员更好地管理和…

LIMA和QLoRA论文解读

《LIMA: Less Is More for Alignment》 paper: https://arxiv.org/abs/2305.11206 Meta在2023年5月发布了论文《LIMA: Less Is More for Alignment》&#xff0c;基于LLaMa-65B微调了大模型LIMA&#xff0c;号称只用了1000个精心策划的问题和答复进行微调&#xff0c;就达到了…

HashMap 1.8全流程分析,详解put、resize、遍历等相关函数。以及其内部的二进制原理

简介 从常用属性->构造方法->添加->扩容->查询->删除->遍历的顺序进行HashMap源码阅读&#xff0c;涉及到一些二进制的用法以及意义也会进行说明。 HashMap源码解析 简介 HashMap采用了hash 表的数据结构进行实现&#xff0c;在key未存在hash冲突的情况下&…

Games104现代游戏引擎学习笔记09

Animation Blending 两个动画衔接 Math of blending&#xff1a;LERP&#xff1a;线性插值 在两个动画之间取关键帧插值 weight1weight2等于1 两个动画必须都是循环的&#xff0c;归一化之后能一致 Blend Space 在采用空间里的所有动画&#xff08;clips&#xff09;&#xf…

FastThreadLocal 原理解析

FastThreadLocal 每个 FastThread 包含一个 FastThreadLocalMap&#xff0c;每个 FastThreadLocalThread 中的多个 FastThreadLocal 占用不同的索引。每个 InternalThreadLocalMap 的第一个元素保存了所有的 ThreadLocal 对象。之后的元素保存了每个 ThreadLocal 对应的 value …

微服务架构之RPC调用

在单体应用时&#xff0c;一次服务调用发生在同一台机器上的同一个进程内部&#xff0c;也就是说调用发生在本机内部&#xff0c;因此也被叫作本地方法调用。在进行服务化拆分之后&#xff0c;服务提供者和服务消费者运行在两台不同物理机上的不同进程内&#xff0c;它们之间的…

Segment Anything——论文笔记

home page&#xff1a;segment-anything.com code&#xff1a;segment-anything 1. 概述 介绍&#xff1a;SAM是最近提出的一种通用分割大模型&#xff0c;其表现出了强大的零样本泛化能力&#xff0c;视觉感知模型的通用化又前进了一步。为了达到文章标题字面意义“segment a…

chatgpt赋能python:Python下载PyQt5教程

Python下载PyQt5教程 简介 PyQt5是一款Python编程语言的GUI框架&#xff0c;它基于QT库&#xff0c;专门用于开发图形界面应用程序。PyQt5可以实现跨平台开发&#xff0c;可在Windows&#xff0c;MacOS和Linux操作系统上运行。本文将介绍如何下载PyQt5&#xff0c;并在Python…

14、JavaEE--Mybatis注解与Ajax技术

目录 单表注解 Param注解 基于注解的一对一关联查询&#xff08;one&#xff09; 一对多查询&#xff08;many&#xff09; Ajax的概念 Ajax 开发 Ajax的核心代码: Ajax五步使用法 步骤1 创建 XMLHttpRequest 对象 步骤2 指定异步提交的目标和提交方式 步骤3 指定 X…

IT知识百科:什么是分布式云?

在当今信息技术高速发展的时代&#xff0c;云计算已经成为了企业和个人的重要组成部分。而在云计算领域中&#xff0c;分布式云是一种重要的架构模式&#xff0c;它允许资源的分散部署和管理&#xff0c;以实现高可用性、可伸缩性和弹性的服务提供。 本文将详细介绍什么是分布…

IT公司的吉祥“树” 二叉树-(堆)C语言创建

目录 &#x1f36a;前言 一、树概念及结构 ✅基本概念 ✅树的专有名词 ✅ 树的表示 &#x1f6a9;孩子兄弟表示法 二、二叉树概念及结构 ✅概念 &#x1f60d;&#x1f60d;现实中的二叉树&#xff08;又称IT公司的吉祥物&#xff09;&#x1f60d;&#x1f60d; ✅…

Nginx常用操作说明

Nginx常用操作说明 介绍Nginx概念深入浅出Nginx环境搭建Nginx反向代理-负载均衡Nginx动静分离Nginx动静分离先在部署Nginx的机器&#xff0c;Nginx目录下创建一个目录static_resources将项目中所有的静态资源全部拷贝到该目录下&#xff0c;而后将项目中的静态资源移除重新打包…

Hexo 个人博客主题美化

anzhiyu主题文档&#xff1a;https://anzhiy.cn/posts/220c.html anzhiyu主题插件地址&#xff1a;https://github.com/anzhiyu-c/hexo-theme-anzhiyu anzhiyu 主题安装 在博客根目录里执行命令&#xff0c;安装 anzhiyu 主题&#xff1a; git clone -b main https://github.co…

sql partition by和rank的统计用法

问题背景 最近公司有个项目需要用到某种特殊的统计用法&#xff0c; 例如从所有的数据中找出每个账号最新的一条余额信息&#xff08;根据某个关键信息进行排序并获取排序值最高的记录&#xff09;。 当时用的是非常普通的语句&#xff0c;也就是多个子查询嵌套select出每个账…