1 显示效果
目前的显示效果如下,每篇文章可以正常显示最后修改时间。
但是之前, 这两个地方都是显示同一个时间,那就是最近一次 git 提交时间的8小时之前。
一开始以为是主题修改了,导致时间会改变,尝试了不修改主题内的东西,还是一样的结果。
在 config.toml
中也都是设置正确的:
1[frontmatter]
2 lastmod = ['lastmod',':git', ':fileModTime', 'date', 'publishDate']
问题是,在本地进行 hugo serve
的时候,本地的效果是正确的。那么我就开始考虑是发布的时候,github acition
的 workflow
出现问题了。
1.1 排查 timezone
在 .github\workflows\deploy.yml
中添加如下代码:
1- name: Set timezone
2 run: echo "TZ=Asia/Shanghai" >> $GITHUB_ENV
发现发布以后,时间变成发布的时间了,但是每篇文章还是一致的,所以不是发布时间的问题。如果要以 git 发布时间来作为最后修改时间,可以改一下这一项。
1.2 排查 workflow
在进行 workflow 排查的时候,想起来对于 workflow 来说,有一项是在服务端进行如下操作的:
1- name: Build Web
2 run: hugo
在服务端进行 hugo 构建的话,就有可能会携带的 lastmod 信息被重建,从而导致时间不准,遂进行改进。
2 解决方案
2.1 修改workflows
将.github\workflows\deploy.yml
中的上述代码注释掉,也就是:
1# - name: Build Web
2# run: hugo
2.2 推送public
这时候,我们的思路是:在本地进行 hugo 的构建,然后将 public\
推送到GitHub Pages
,从而避开在服务端进行 hugo 构建的操作。于是就有了接下来的操作。
原先,在 themes\hugo-theme-cleanwhite\.gitignore
中 忽略了 public\
的推送,这时候将它注释掉:
1# public/
然后,如果在 git 推送的时候没有进行 hugo 构建的话,那么得在流程上加上 hugo构建,也就是:
1hugo
2git add .
3git commit -m "update"
4git push origin master
至此,以及可以通过本地构建,修复这个最后修改时间不一致的问题了。
3 后续思考
其实这个问题并没有根本上解决,理论上是可以在服务端进行hugo 构建的,后续可以继续排查,可能是还有什么bug没有找到。