目录

如何使用hugo快速创建一个github的page

如何使用hugo快速创建一个github page

创建github项目(私有项目 + 公开项目)
  1. github.com/mmfei/mmfei.github.io.source; # 源项目 主要是用来生成网站项目 , 私有
  2. github.com/mmfei/mmfei.github.io; # 网站项目 用来做 github page 的网站目录
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 安装hugo (mac环境下的安装方式 , 其他环境请看 gohugo.io)
brew install hugo;

# clone 私有项目
git clone github.com/mmfei/mmfei.github.io.source;
cd mmfei.github.io.source;
hugo new site .;
hugo new post/first.md; # 往里面填充点内容

# 修改文件 config.tom
cat config.tom <<EOT
theme = "beautifulhugo"
EOT
# 修改文件 config.toml
cat config.toml <<EOT
baseURL = "https://mmfei.github.io/"
languageCode = "en-us"
title = "木木飞"
theme = "beautifulhugo"
EOT

git add *;
git commit -m "commit_message";
git push origin master;

创建本人在github的token(作为 GH_TOKEN 的值)

https://github.com/settings/tokens

创建TOKEN (MY_GH_TOKEN) (需要赋予写仓库的权限,这个token是要给mmfei.github.io.source项目生成mmfei.github.io文件用的)

https://github.com/mmfei/mmfei.github.io/settings/secrets/actions

设置page

https://github.com/mmfei/mmfei.github.io/settings/pages

生成部署相关的公私钥 , 用来从 mmfei.github.io.source 发布 内容到 mmfei.github.io

1
2
3
4
5
ssh-keygen -t rsa -b 4069 -C "[email protected]";  # 这里要替换成为你的邮箱地址 , 假设指定生成的文件为 ~/.ssh/id_rs_hugo_deploy.pub , ~/.ssh/id_rs_hugo_deploy
## 下面的 ACTIONS_DEPLOY_KEY 的值
/bin/cat ~/.ssh/id_rs_hugo_deploy.pub;
## 下面的 deploy key 的数值
/bin/cat ~/.ssh/id_rs_hugo_deploy;

设置 mmfei.github.io 项目

https://github.com/mmfei/mmfei.github.io/settings/keys

  • 创建一个deploy key (值是上面的 ~/.ssh/id_rs_hugo_deploy 的内容), 需要写入权限 , 目的是给source项目推内容上来用

打开源目录的url,设置

设置 mmfei.github.io.source

https://github.com/mmfei/mmfei.github.io.source/settings/secrets/actions 创建两个secret ACTIONS_DEPLOY_KEY 的值为上面生成的pub GH_TOKEN 的值为上面的MY_GH_TOKEN的值

新增algolia搜索功能

在algolia创建了index后 , 在API Keys获取上面三个值 https://www.algolia.com/ /images/posts/如何使用hugo快速创建一个github的page/algolia.png

在github注册actions的变量

ALGOLIA_APP_ID=你的Application ID
ALGOLIA_INDEX_NAME=你的索引名字
ALGOLIA_INDEX_FILE=public/algolia.json
ALGOLIA_ADMIN_KEY=你的Admin API Key

配置hugo的config.toml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
      # 搜索配置
      [languages.zh-cn.params.search]
        enable = true
        # 搜索引擎的类型 ("lunr", "algolia")
        type = "algolia"
        # 文章内容最长索引长度
        contentLength = 4000
        # 搜索框的占位提示语
        placeholder = "搜索"
        # 最大结果数目
        maxResultLength = 10
        # 结果内容片段长度
        snippetLength = 50
        # 搜索结果中高亮部分的 HTML 标签
        highlightTag = "em"
        # 是否在搜索索引中使用基于 baseURL 的绝对路径
        absoluteURL = true
        [languages.zh-cn.params.search.algolia]
          index = "index.zh-cn" #algolia 里面的 index 名称相对应,如果你有多语言版本,那么就需要创建多个语言的 index,我这里仅举例中文的版本
          appID = ""
          searchKey = ""

设置构建脚本

 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
56
57
58
59
60
61
62
cat >> ./.github/workflows/main.yml <<EOT
name: Deploy Hugo Site to Github Pages on Master Branch

on:
  push:
    branches:
      - master

jobs:
  build-deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/[email protected] # v2 does not have submodules option now
      # with:
      #   submodules: true

      - name: Setup Hugo
        uses: peaceiris/[email protected]
        with:
          hugo-version: "0.83.1"
          extended: true

      - name: Build
        run: |
          git clone https://github.com/mmfei/LoveIt themes/LoveIt
          echo 'gen';
          hugo --theme=LoveIt;
          echo 'build done';
          echo 'www.mmfei.com' > public/CNAME

      - name: Deploy
        uses: peaceiris/[email protected]
        with:
          deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} # 这里的 ACTIONS_DEPLOY_KEY 则是上面设置 Private Key的变量名
          github_token: ${{ secrets.MMFEI_GH_TOKEN }}
          external_repository: mmfei/mmfei.github.io
          publish_dir: "./public"
          keep_files: false # remove existing files
          publish_branch: master # deploying branch
          commit_message: ${{ github.event.head_commit.message }}
          user_name: "mmfei"
          user_email: "[email protected]"

      - name: Use Node.js
        uses: actions/[email protected]
        with:
          node-version: '12.x'
      - name: Install automic-algolia
        run: |
          npm install -g atomic-algolia
          atomic-algolia
        env:
          ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }}
          ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }}
          ALGOLIA_INDEX_NAME: ${{ secrets.ALGOLIA_INDEX_NAME }}
          ALGOLIA_INDEX_FILE: "./public/index.json"

EOT

git add ./.github/workflows/main.yml;
git commit -m 'add deploy file';
git push origin master;