Hexo生成错误的永久链接日期

使用 # 从私有代码库自动部署Hexo站到GitHub Pages 之后,真是幺娥子迭出:先是 文章的最后编辑时间不正确 ,现在又发现有些页面的永久链接的日期会差一天,比如markdown写的是2020-07-13 00:50:05,生成的永久链接变成了2020/07/12。这个错误可能会导致搜索引擎找不到老页面,从而影响搜索展示。

考虑到不是所有文章的permalink日期都生成错误,而仅在那些markdown写作时间在0点之后的文章出现,猜想可能是时区设置导致的问题。

先看了下 # Permalinks 的文档,没发现提及时区。又搜了一下,发现有 类似的讨论

问题原因:_config.yml 中设置的时区与执行 hexo generate 的机器的时区不一致。

尝试了两种方案:

  • 去掉 _config.ymltimezone: Asia/Shanghai 的设置:发现文章创建时间又差了8小时,不行。
  • 设置 GitHub Actions 的机器时区为 Asia/Shanghai:可行。

后者应该是最佳方案,还是保持CICD的机器配置与本机完全一致的好。

修改.github/workflows/main.yml,在Restore Timestamps之后增加一个步骤Set Timezone,用timedatectl设置时区,并再次输出确认修改成功:

- name: Restore Timestamps
  uses: chetan/git-restore-mtime-action@v1

- name: Set Timezone
  run: |
    sudo timedatectl set-timezone Asia/Shanghai
    timedatectl

- name: Prepare Node env
  uses: actions/setup-node@v3
  with:

此时,生成错误永久链接日期的问题迎刃而解。