之前一直一直使用Hexo,后来发现Hugo比Hexo看起来就好用,于是就从Hexo迁到Hugo。

Hexo建博客及本文的一些操作可参考Hexo搭建个人博客

准备

我的github账号为l-qiang,直接代替<你的GitHub用户名>

例如:<你的GitHub用户名>.github.iol-qiang.github.io代替

  1. 新建一个目录将Github上的l-qiang.github.ioclone下来。

    1
    
    git clone git@github.com:l-qiang/l-qiang.github.io.git
    
  2. 新建空的main分支(用于存放hugo new site出来的内容)。

    1
    2
    3
    4
    5
    
    cd l-qiang.github.io
    git checkout --orphan main
    git reset --hard
    git commit --allow-empty -m "Initializing main branch"
    git push --upstream main
    
  3. main分支设置为Github(l-qiang.github.io)仓库默认分支。

    https://github.com/l-qiang/l-qiang.github.io/settings/branches

  4. 第2步中同样的方式新建gh-pages分支(用于存放hugo build后public文件夹的内容)。

新建相关

如果你之前没有建过l-qiang.github.io仓库,那就新建一个,忽略上述2-3步

迁移相关

我还建了一个blog-pages分支,放之前master分支的内容,并把master分支删了,同时把原先blog分支的

.travis.yml改成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sudo: false
language: node_js
node_js:
  - 10 # use nodejs v10 LTS
cache: npm
branches:
  only:
    - blog # build blog branch only
script:
  - hexo generate # generate static files
deploy:
  provider: pages
  skip-cleanup: true
  github-token: $GH_TOKEN
  keep-history: true
  target_branch: blog-pages # master 改为了 blog-pages
  on:
    branch: blog
  local-dir: public

把github pages设置为blog-pages分支。这样让我们的博客在迁移之前,还以Hexo生成的页面展示

Hugo建站

  1. 下载Hugo

    建议配置下环境变量,这样你就可以在啥目录下都可以执行hugo

  2. 随便找个目录执行下列命令。建议不要和上面建的目录搞混了。

    1
    
    hugo new site quickstart
    

    可以就是直接用quickstart

  3. quickstart目录的内容直接复制到l-qiang.github.io目录(git clone下来的目录)

  4. 添加主题,我用的even主题

    1
    
    git submodule add https://github.com/olOwOlo/hugo-theme-even.git themes/even
    
  5. 将代码push到Githubl-qiang.github.io仓库的main分支。

之前用Hexo的时候,是把主题的代码也提交到了Github,这里通过submodule的方式可以让Github的仓库的主题直接链接到https://github.com/olOwOlo/hugo-theme-even.git

push后的结果可以参考我的l-qiang.github.iomain分支

注意

2022.11.03: 此时wercker已经停服,后面的步骤可省略。构建部署参考:

Hugo之Wercker停服解决方案-Github Actions

wercker

用wercker的好处就是,我们写完东西只要将更改push到main分支就行,wercker可以帮我们把main分支的build之后推到gh-pages分支。

wercker难点就是hugo的官方文档都是八百年前的教程了。

  1. wercker.yml

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    box: golang:latest
    
    build:
      steps:
        - script:
            name: initialize and update git submodules
            code: |
                git submodule init
                git submodule update --remote --recursive            
        - arjen/hugo-build@2.14.0:
            version: "0.79.0"
            theme: even
            flags: --environment=production
    
    deploy:
      steps:
        - install-packages:
                packages: git ssh-client
        - lukevivier/gh-pages@0.2.1:
            token: $GIT_TOKEN
            basedir: public
    

    这个可以直接拿去用。除了theme修改为自己的主题其他的都不用动。这里的一些内容我稍后根据自己的理解解释。

  2. 将wercker.yml推送到main分支后。

  3. 在wercker根据步骤创建application。

  4. 设置environment

    这是一张图片

    GIT_TOKEN这里-点我点我生成。

  5. 新建的application已经由build了,需要新增一个pipelinedeploy

    这是一张图片

  6. 然后在workflowbuild后面添加deploy

    这是一张图片

wercker.yml

1
2
3
4
- arjen/hugo-build@2.14.0:
        version: "0.79.0"
        theme: even
        flags: --environment=production
1
2
3
- lukevivier/gh-pages@0.2.1:
        token: $GIT_TOKEN
        basedir: public

这俩都是Steps Store的。搜hugo-buildgh-pages可以找到,也有使用文档。@2.14.0指版本号。

旧版本可能不好使,可以在Steps Store找新的。

1
2
3
4
5
- script:
        name: initialize and update git submodules
        code: |
            git submodule init
            git submodule update --remote --recursive            

这部分就是处理我们的主题的,因为我们的主题没有在自己的仓库中,而是链接到https://github.com/olOwOlo/hugo-theme-even.git,若是主题代码直接提到自己仓库,那这步可以省略