プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2023/12/20

GitLab Pages でブランチ毎にディレクトリを分けて公開したい

event_note2023/12/20 5:17

mkdocs で作成したサイトを GitLab Pages で公開していたのですが、これをブランチ毎にディレクトリを分けて公開するようにしました。

基本的には、キャッシュを有効にするだけで可能です。
各ブランチでの成果物も一緒に Pages で公開したいため、キャッシュのキーは固定値にします。
以下、 .gitlab-ci.yml の抜粋です。

pages:
  stage: build
  script:
    - mkdocs build
    - rm -rf public/${CI_COMMIT_REF_NAME}
    - mv site public/${CI_COMMIT_REF_NAME}
  artifacts:
    paths:
      - public
  cache:
    # ブランチ毎に別のキャッシュを利用したい場合はブランチ名をキーにするが、
    # 今回は全ブランチのビルド結果も一緒に公開したいため、キーは全ブランチで共通の固定値にする
    key: "common-key"
    #key: "$CI_COMMIT_REF_NAME"
    paths:
      - public

site ディレクトリが mkdocs の成果物が入っているディレクトリですが、これを public/ブランチ名 に配置しています。

注意点

デフォルトでは、保護されたブランチと保護されていないブランチではキャッシュが共有されないため、この場合はプロジェクトの設定変更が必要です。
これを知らずに何度試してもキャッシュが共有されずはまっていました・・・。

変更する設定は以下です。

  1. サイドメニューより、Settings > CI/CD を選択
  2. General pipelines を開く
  3. Use separate caches for protected branches のチェックボックスをオフにする
  4. Save changes をクリックして保存