HerokuでGitHubにあるプライベートなサブモジュールを使ってみる

こんにちは、証券フロンティア事業部の西永です。
主にサーバサイドでAPI開発に携わっています。
今回の記事ではサーバサイド……ではなく、趣味でやっているフロント寄りな情報をお届けします。

まずHerokuについて

Heroku はアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアを出してから運用を開始するまでのプロセスを迅速に進めることが可能です。また、インフラストラクチャの管理の問題からも解放されます。 jp.heroku.com

公式サイトだとちょっとふわっとしていますが、要するにPaaSです。
開発したWebアプリケーションをお手軽に公開することができます。
2021/08/06現在はNode.js、Ruby、Python、Java、PHP、Go、Scala、Clojureに対応しています。

こちらのHerokuですが、GitHubからDeployする際、サブモジュールも持ってくることができます。
しかし、そのままの設定だとパブリック上のレポジトリでないと持ってくることができません。

f:id:teco_nishinaga:20210806163431p:plain
ローカルでは表示できていたのに
f:id:teco_nishinaga:20210806164000p:plain
herokuだとサブモジュールがインポートできないためエラーが出る

今回はプライベートにあるレポジトリを持ってくる方法を紹介します。

方法

・ユーザー名とパスワードをリポジトリ URL に埋め込む

公式サイトに書かれている方法。
サブモジュールを追加する際、ユーザー名とパスワードをリポジトリ URL に埋め込むことで回避します。 しかしこの方法は公式サイトにも書かれている通り、レポジトリ内にユーザー名とパスワードを記載するためセキュアとは言えません。
devcenter.heroku.com

・プラグインを導入してSSH接続で取得する(本命)

今回紹介するのはこちらです。
heroku-buildpack-git-submodule というプラグインをheroku側に導入して設定を行うことで回避ができます。 こちらの手順について紹介していきます。

  1. herokuの該当レポジトリにある「Setting」>「Buildpacks」にある「Add buildPack」を選択 f:id:teco_nishinaga:20210806153059p:plain

  2. https://github.com/SectorLabs/heroku-buildpack-git-submodule.git」を入力して「Save changes」を選択 f:id:teco_nishinaga:20210806153239p:plain

    f:id:teco_nishinaga:20210806153510p:plain
    設定後

  3. GitHubに切り替え、「Settings」>「SSH and GPG keys」にある「New SSH key」を選択し、SSHキーを設定
    (SSHキーの発行方法についてはここでは紹介しません) f:id:teco_nishinaga:20210806154051p:plain

  4. またherokuの該当レポジトリに戻り、「Setting」>「Config Vars」にある「Reveal Config Vars」を選択し、KeyとValueにそれぞれ下記のとおり値を入力して保存

Key Value
GIT_REPO_URL レポジトリURL(サブモジュールではなく本体)
(例) git@github.com:ユーザ名/レポジトリ名.git
GIT_SSH_KEY SSHキー(秘密鍵)
(明らかにスペースが狭いですが、全部入るので入力)

f:id:teco_nishinaga:20210806161244p:plain



これであとは再デプロイを実行すれば、設定は完了です。
お疲れさまでした。

f:id:teco_nishinaga:20210806163703p:plain

Heroku は salesforce.com,inc. の米国およびその他の国での登録商標です。
その他記載の会社名、製品名は、それぞれの会社の商号、商標もしくは登録商標です。

tecotec.co.jp