はじめに #
本blogはGitlab pagesによってホスティングしていますが、Pipeline内でhugo
でbuildする際にtimed out after 30s.
とTimeoutになりdeployできなくなりました。(localでは問題なし)
$ hugo
Start building sites …
hugo v0.131.0+extended linux/amd64 BuildDate=unknown
WARN deprecated: .Site.Author was deprecated in Hugo v0.124.0 and will be removed in a future release. Use taxonomies instead.
Total in 49020 ms
Error: error building site: render: failed to render pages: render of "home" failed: "/builds/18la008c/hirohirolab/themes/blowfish/layouts/index.html:4:7": execute of template failed: template: index.html:4:7: executing "main" at <partial $partial .>: error calling partial: partial "partials/home/background.html" timed out after 30s. This is most likely due to infinite recursion. If this is just a slow template, you can try to increase the 'timeout' config setting.
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1
1. 原因 #
原因は.gitignore
でresources
をgit管理から除外していたからでした。
/public
.hugo_build.lock
resources/*
resources/
は、hugoが画像を変換したキャッシュが格納されており、これを使うことでbuildが高速になっているようです。
root@v0-dev-01:~/blog/hirohirolab# tree resources/ | head -n100
resources/
└── _gen
└── images
├── about
│ ├── image_hu1429c22f6e85a95ff4aadd5ff5d21df6_1132204_1024x0_resize_linear_3.png
│ ├── image_hu1429c22f6e85a95ff4aadd5ff5d21df6_1132204_1320x0_resize_linear_3.png
│ ├── image_hu1429c22f6e85a95ff4aadd5ff5d21df6_1132204_330x0_resize_linear_3.png
│ └── image_hu1429c22f6e85a95ff4aadd5ff5d21df6_1132204_660x0_resize_linear_3.png
localではこのキャッシュを使うのでbuildが早いのですが、Gitlab CI/CD内ではこのキャッシュがなく全画像を変換するため30sのtimeoutになっていたようです。
実際にキャッシュを削除してbuildすると29443 ms
とほぼ30sかかっていました。
/mnt # rm -rf resources
/mnt # hugo
Start building sites …
hugo v0.131.0+extended linux/amd64 BuildDate=unknown
WARN deprecated: .Site.Author was deprecated in Hugo v0.124.0 and will be removed in a future release. Use taxonomies instead.
| JA
-------------------+------
Pages | 98
Paginator pages | 13
Non-page files | 167
Static files | 7
Processed images | 524
Aliases | 34
Cleaned | 0
Total in 29443 ms
おわりに #
ということで画像が多めの静的サイトを構築する場合は、resources/
もgit管理に含めると良さそうです。