Gitlab pagesでsubmoduleの含むページを公開する
公開日: 2020.3.18
Gitlab Pagesで他のレポジトリ内容(git submodule)のデータを含むプログラムを公開する方法をまとめました。submoduleの更新方法や、submoduleがプライベートの時の対処方法も。
Submoduleの追加
まずは、ローカル上で普通にsubmoduleをレポジトリに追加します。
git submodule add レポジトリURL ディレクトリ
同期がされて、レポジトリ内に「.gitmodules」というファイルができているはずです。
.gitlab-ci.ymlに設定を追記
続いて、Gitlab Pages側の設定です。.gitlab-ci.ymlに下記の記述を追記します。
variables:
GIT_SUBMODULE_STRATEGY: recursive
HUGOなどsubmoduleを使う前提のフレームワークの場合、公式.gitlab-ci.ymlテンプレートのこの記述がすでに入っていることがありますが、削除している場合は追記します。
このままコミットすればsubmoduleをpullしてビルドしてくれます。
Gitlab pagesのsubmoduleを更新する時
ここは「ファイルではなくコミットIDをトラックする」という、Git submoduleの仕組みのままなので、ローカル上でsubmoduleのアップデートを実行して、最新のコミットIDにすればOKです。
git submodule update --remote
最新にしたら、そのままリモートにプッシュしてビルドすれば最新になります。
参考:Git Submodules でサブモジュール内のリポジトリをリモートの master の最新版に追従する
submoduleがプライベートレポジトリの場合はどうするか?
submoduleで読み込んでいるレポジトリが非公開レポジトリ(プライベート)の場合、下記のようなエラーが発生してビルドが完了できません。
fatal: could not read Username for 'https://gitlab.com': No such device or address
fatal: clone of 'https://gitlab.com/xxx/yyy.git' into submodule path '/builds/xxx/yyy/zzz' failed
この場合は、一番簡単な例は、submoduleのレポジトリURLを、
https://ユーザー名:パスワード@gitlab.com/xxx/yyy.git
として登録すればOKです。
このケースだと、ユーザー名とパスワードを晒すことになるので、当該レポジトリは必ずプライベートにして、外部から絶対に見えなようにしておきましょう。
簡単にですが、Gitlab pagesでsubmoduleの含むページを公開する方法を見てきました。
外部のソースコードをプログラムに組み込む際には、submoduleは結構使うので、覚えておくと便利ですね。
価格は記載がある場合を除き、すべて税込みです。
関連キーワード
サーバレスの新着記事
- サーバレスCloudflare R2の料金体系・無料枠まとめ 2024.8.21
- サーバレスCloudflare R2をCyberduckで使う方法 2024.7.31
- サーバレスAIの学習ボット・クローラーからサイトを守るメリットとブロックする方法 2024.7.19
- サーバレスCloudFlare Pagesのビルド環境の違い 2024.5.9
- サーバレスCloudflare D1の料金体系・無料枠まとめ 2024.3.25
- サーバレスCloudflare PagesでNuxt3のビルド時に「ENOENT: no such file or directory」エラーの対象方法 2024.3.21
- サーバレスGitlab CLIでpush時に「glab auth not found」となった際の対処方法 2024.3.19
- サーバレスCloudFlare Workers AIの料金体系・無料枠まとめ 2024.2.2