hexo部署到github pages

这是我在github pages上部署hexo的方法,参考了官方文档

在 GitHub Pages 上部署 Hexo

建立名为 <你的 GitHub 用户名>.github.io 的储存库,若之前已将 Hexo 上传至其他储存库,将该储存库重命名即可。

修改_config.yml

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repository: https://github.com/<你的 GitHub 用户名>/<你的 GitHub 用户名>.github.io
branch: main #你的储存库分支

Hexo 文件夹中的文件 push 到储存库的默认分支,默认分支通常名为 main,旧一点的储存库可能名为 master。

main 分支 push 到 GitHub:

1
git push -u origin main

默认情况下 public/ 不会被上传(也不该被上传),确保 .gitignore 文件中包含一行 public/。整体文件夹结构应该与 范例储存库 大致相似。

使用 node --version 指令检查你电脑上的 Node.js 版本,并记下该版本 (例如: v16.y.z)
在储存库中建立 .github/workflows/pages.yml,并填入以下内容 (将 16 替换为上个步骤中记下的版本):

.github/workflows/pages.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
name: Pages

on:
push:
branches:
- main # default branch

jobs:
pages:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v2
- name: Use Node.js 16.x
uses: actions/setup-node@v2
with:
node-version: "16"
- name: Cache NPM dependencies
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.OS }}-npm-cache
restore-keys: |
${{ runner.OS }}-npm-cache
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public

当部署作业完成后,产生的页面会放在储存库中的 gh-pages 分支。
在储存库中前往 Settings > Pages > Source,并将 branch 改为 gh-pages。
前往 https://<你的 GitHub 用户名>.github.io 查看网站。

CNAME
若你使用了一个带有 CNAME 的自定义域名,你需要在 source/ 文件夹中新增 CNAME 文件。 更多信息

项目页面

如果你希望网站部署在 `<你的 GitHub 用户名>.github.io`` 的子目录中:

建立名为 <repository 的名字> 的储存库,这样你的博客网址为 <你的 GitHub 用户名>.github.io/<repository 的名字>repository 的名字可以任意,例如 bloghexo
编辑你的 _config.yml,将 url: 更改为 <你的 GitHub 用户名>.github.io/<repository 的名字>
Commitpush 到默认分支上。
当部署完成后,在 gh-pages 分支可以找到生成的网页。
在 GitHub 储存库中,前往 Settings > Pages > Source, 并将 branch 改为 gh-pages
前往 https://<你的 GitHub 用户名>.github.io/<repository 的名字> 查看网站。

私有化部署Hexo

如果不希望别人直接fork自己的hexo仓库,但又想使用github action部署hexo,可以使用下面的方法

1、创建ssh密钥

执行命令:

1
ssh-keygen -t rsa -C "youremail@example.com"

连续三次回车,然后在~/.ssh目录中就可以看到新生成的ssh密钥文件,id_rsa 为私钥,id_rsa.pub为公钥

2、创建仓库

创建两个仓库,一个是公有仓库<你的 GitHub 用户名>.github.io,用于展示网页;另一个是私有仓库<私有仓库名>,用于存放你的Hexo源码。

3、添加密钥

  • 1、添加公钥

在公有仓库中的Setting->Deploy keys->Add deploy key添加公钥,并勾选Allow write access。当然也可以在github主页点右上角的头像,选择Settings->SSH and GPG keys->SSH keys->New SSH key添加公钥

Deploy keys类似SSH keys,只有拥有与该公钥匹配的私钥相匹配才能进行ssh连接,进行git推送

  • 2、添加私钥

在私有仓库的Setting->Secrets and variables->Action->New repository secret添加私钥,并将私钥的名称命名为DEPLOY_PRI

3、配置私有仓库

使用git将私有仓库克隆到本地并在仓库中配置好Hexo,然后在仓库的根目录新建github action文件夹.github/workflows,在里面新建一个pages.yml,填入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
name: Build Hexo Pages

on: # 配置github action触发条件
push:
branches:
- main # 私有仓库的默认分支

jobs:
pages:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v2
- name: Use Node.js 20.4.0 # 配置nodejs
uses: actions/setup-node@v2
with:
node-version: "16"
- name: Cache NPM dependencies # 安装npm依赖
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.OS }}-npm-cache
restore-keys: |
${{ runner.OS }}-npm-cache
- name: Install Dependencies # 安装Hexo依赖
run: npm install
- name: Build # 构建Hexo环境
run: npm run build
- name: Configure Git # 配置git,用于把网页推送到另一个项目上
env:
DEPLOY_PRI: ${{secrets.DEPLOY_PRI}} # 这里就是刚刚配置的私钥了
GIT_USERNAME: ${{ github.repository_owner }} # Github用户名,这里用了Actions自带的变量
GIT_EMAIL: ${{ github.repository_owner }}@user.github.com # 邮箱,可以写自己的邮箱
run: |
sudo timedatectl set-timezone "Asia/Shanghai"
mkdir -p ~/.ssh/
echo "$DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name '$DEPLOY_PRI'
git config --global user.email '$DEPLOY_PRI'
- name: Commit Blog # 提交生成好的Hexo到公有的仓库
env:
GIT_URL: 'git@github.com:yourusername/yourusername.github.io.git' # 把它换成项目的地址,注意要用SSH格式的。
run: |
cd public
git init
git remote add origin $GIT_URL
git add -A
git commit -m "Blog auto generated."
- name: Push blog # 推送
run: | # 下面的gh-pages为公有仓库的分支名
cd public
git push origin HEAD:gh-pages --force

然后将私有仓库推送到github上,这时候去查看私有仓库的github action就可以看到正在运行自动推送的任务了,之后修改Hexo的文章后就可以自动推送了


hexo部署到github pages
http://licyk.github.io/2023/07/13/how-to-use-github-action-to-deploy-hexo/
作者
licyk
发布于
2023年7月13日
许可协议