はじめに

Hugoでは、記事の最終更新時刻をLastmodを利用して表すことができます。configファイルでenableGitInfo: trueと記入しておくとgitのlogをもとにHugoが自動的にLastmodを設定しくれます。しかし、GitHub ActionsでHugoをビルドしたところ、すべてのLastmodが同じ時間(pushした時刻)になってしまっていました。

解決法

GitHub Actionsのファイルは以下のようでした。

 1name: Build GH-Pages
 2
 3on:
 4  push:
 5    branches:
 6      - main
 7
 8jobs:
 9  deploy:
10    runs-on: macos-latest
11    steps:
12      - name: Git checkout
13        uses: actions/checkout@v2
14        with:
15          submodules: recursive  # Fetch Hugo themes (true OR recursive)
16
17      - name: Setup hugo
18        uses: peaceiris/actions-hugo@v2
19        with:
20          hugo-version: 'latest'
21
22      - name: Build
23        run: hugo --gc --verbose --minify
24
25      - name: Deploy
26        uses: peaceiris/actions-gh-pages@v3
27        with:
28          deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
29          external_repository: Hattomo/Hattomo.github.io
30          publish_branch: main
31          publish_dir: ./public

問題は、ソースをダウンロードする際、fetch-depthがデフォルトで1になっていることでした。fetch-depthが1の場合、最新のコードのみを持ってくるようです。そのため、履歴がなくLastmodが同一時刻になっていたのでした。以下のように、fetch-depthに0を設定したところ正しく動くようになりました。

1    steps:
2      - name: Git checkout
3        uses: actions/checkout@v2
4        with:
5          submodules: recursive
6          fetch-depth: 0 # Add