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は結構使うので、覚えておくと便利ですね。
価格は記載がある場合を除き、すべて税込みです。
関連キーワード
サーバレスの新着記事
サーバレス複数サイト運営をする際の無料サーバー使いこなし術 2022.9.5
サーバレスHerokuの無料プランが終了へ。移行するならどこがいい? 2022.8.26
サーバレスCloudflare Pages Functionsをローカルでテストする方法 2022.8.12
サーバレスCloudfalre Pagesでリダイレクトを使う方法 2022.8.11
サーバレスCloudflare WorkersとCloudflare Pages Functionの違いと使い分け 2022.8.10
サーバレスCloudinaryの自分のデータを自動でバックアップさせる方法 2022.8.1
サーバレスいまさら聞けないレンタルサーバーとHerokuの違い 2022.5.10
サーバレスCloudflare Pagesでアクセス制限を実装する 2022.4.26