Razl-Dazl

eyecatch
© 2014 Steve Francia

Hugoで作成したウェブサイトをGitLab Pagesで公開する

Posted at — 2024-06-23

このブログ自体は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.ymlbaseURLpublishDirを調整します

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 > PagesUse unique domainを確認すると勝手にチェックが入っているので、チェックを外して保存すると直る

ここの設定変更の確認は、少し時間を置いてからプライベートウィンドウ・または別の端末で行うことを推奨します

現状プライベートウィンドウではリダイレクトが無くなったことを確認できていますが、GitLabでログインしたままのウインドウではリダイレクトが発動してしまい、Webサイトが正常に表示されない状態です・・・ ブラウザのキャッシュ消したら表示された!めでたしめでたし


参考

GitHub Pagesとは色々使い勝手が異なるので疲れました・・・おしまい

Author@zakuro

Mastodon: 396@vivaldi.net