Hugoで作成したウェブサイトをGitLab Pagesで公開する
このブログ自体はGitHub Pagesで公開していますが、別ジャンルの物をGitLab Pagesで公開したかったので別途作成・・・そして色々な場所で躓いて半日くらい潰したのでメモ
GitLab用の設定ファイル作成
リポジトリ直下に.gitlab-ci.yml
を作成して内容は以下の通りにします
image: registry.gitlab.com/pages/hugo/hugo_extended:latest
variables:
GIT_SUBMODULE_STRATEGY: recursive
pages:
stage: deploy
environment: production
script:
- hugo --gc --minify
artifacts:
paths:
- public
検索すると各所で出てくるテンプレートから少し変えています
早速1行目から、通常registry.gitlab.com/pages/hugo:latest
となるところをregistry.gitlab.com/pages/hugo/hugo_extended:latest
へ変更しています
Hugoで使用するテーマにSCSSファイルが含まれているとビルドに失敗するケースがあり、その対策として変更しています
またビルド時のコマンドをhugo --gc --minify
としていますが、-gc
はクリーンアップ用、--minify
は容量削減用に使用しています(どれくらい削減できるからは知らないけど・・・)
ファイル名は.gitlab-ci.yml
ですのでお間違い無いように・・・筆者は最初のドットを忘れてしまいあれ動かないぞ・・・と悪戦苦闘しました
ファイル名が正しければ、VSCodeやgitlab.com上からファイルを参照したときにアイコンがキツネのマークになるはずなので、デプロイ走らないぞーって時は念の為もう一度確認しましょう
Hugoの設定ファイル調整
TOMLとかいう新参者は知らないのでここではYAML前提で進めます
config.yml
のbaseURL
とpublishDir
を調整します
baseURL: /
publishDir: public
今回はトップページをhttps://hogehoge.gitlab.io/
の直下としたいので直下に指定しています
https://hogehoge.gitlab.io/blog/
以下を指定したい場合はbaseURL: /blog
のようになります
publishDir
はGitLabの設定ファイルのpaths
に対応させますのでpublishDir: public
となります
試してはいませんが独自でpublic
以外を指定した場合、デプロイに失敗する可能性が高いのでカスタマイズしないことをオススメします
Pipeline確認
設定ファイルが間違っていなければ、デプロイの処理自体は問題なく動くはずです
GitLab上の各リポジトリのBuild > Pipelines から自動ビルドが動作していることを確認します
失敗していた場合は設定ファイルを弄りましょう・・・
GitLab Pagesがそもそも有効になっているか
その後、他の端末でアクセスしようとしたらページが表示されなかった為リポジトリの設定を確認
GitLabにブラウザからアクセスして、プロジェクトの設定 Settings > General > Visibility, project features, permissions
のExpandボタンを押すとなんか設定が沢山出てくるので、Pagesの項でOnly Project Members
みたいな制限する設定になっていたらEveryone
へ修正します
リポジトリ作成時にプライベートリポジトリとして作成していると、ここが勝手に制限するような項目に設定されてしまっている可能性があるので要確認(というか筆者はそうなっていた)
ちなみに今改めて設定値を確認したら、設定値がEveryone With Access
となっていました、表記揺れがあるようなので一字一句に拘ると躓きそうですね・・・
Webサイトのドメインがおかしい場合
いざWebサイトにアクセスしてみると勝手にリダイレクトが発動して、ドメインが通常hogehoge.gitlab.io
となるはずが、hogehoge-gitlab-io-hogehoge-56b349062a348969d0e23582346258e02e36.gitlab.io
のような、謎のハッシュ値つきの長ったらしいものになってしまうことがある
この場合はプロジェクトのページのDeploy > Pages
のUse unique domain
を確認すると勝手にチェックが入っているので、チェックを外して保存すると直る
ここの設定変更の確認は、少し時間を置いてからプライベートウィンドウ・または別の端末で行うことを推奨します
現状プライベートウィンドウではリダイレクトが無くなったことを確認できていますが、GitLabでログインしたままのウインドウではリダイレクトが発動してしまい、Webサイトが正常に表示されない状態です・・・
ブラウザのキャッシュ消したら表示された!めでたしめでたし
参考
- TOCSS: failed to transform “style.scss” - support - HUGO
- Tutorial: Build, test, and deploy your Hugo site with GitLab | GitLab
- GitLab Pages default domain names and URLs | GitLab
- Unexpected GitLab page URL - Stack Overflow
GitHub Pagesとは色々使い勝手が異なるので疲れました・・・おしまい