4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Netlifyで他のPrivateリポジトリをsubmoduleで使う方法

Posted at

はじめに

Netlifyでホスティングしているリポジトリにsubmoduleで他のプライベートリポジトリを使おうと思ったら一手間必要だったので、その時のメモ

問題発生

Netlifyでホスティングしているリポジトリにsubmoduleで他のプライベートリポジトリを使おうと思い、ふつうにpush & buildしようとしたらbuildでこけた

Deploy logでは下記のようなError messageが

Preparing Git Reference refs/heads/master
Error fetching branch: https://github.com/owner/project refs/heads/master
Failing build: Failed to prepare repo
Failed during stage 'preparing repo': exit status 1
Finished processing build request in 6.873688521s

念のため、Clear cache and deploy siteを試みたが、

Preparing Git Reference refs/heads/master
Error checking out submodules: Submodule 'path/to/submodule' (https://github.com/owner/project) registered for path 'path/to/submodule'

などと言われて、通らず

どうして?

冷静に考えたら、自分以外の人(今回はNetlify)が特に認証なども行わずにプライベートリポジトリをクローンできたら問題だなぁと思った

対処法

Netilfy公式のdocsにあるRepository permissions and linkingをみるとしっかりと対処法が明記されていました。

If a submodule repository is public, you can use https format (for example, https://github.com/owner/project) to link it in your submodule configuration. If the repository is private, or if you prefer to use ssh format (for example, git@github.com:owner/project.git), you will need to follow the instructions below to generate a deploy key in Netlify and add it to the submodule repository settings.

ざっくり翻訳すると、
「submoduleがpublicであれば、submoduleのconfigにhttpsのurlを書けばOK
submoduleがprivate(またはsshを使いたい)であれば、Netlify内でdeploy keyを生成してsubmodule repositoryに設定しましょう」
ってな感じなので

つまり、deploy keyで設定してsshでアクセスを試みればよさそう

Deploy Keyの生成とGitHubへの追加

これも上記の公式のdocsをみれば書いてあるが、
Netlifyのサイト内でSettings -> Build & deploy -> Continuous deployment -> Deploy keyまでいきGenerate public keyを押す
すると

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDOG2pzIItUQ1IWKqQSN8pAB4VeHwHDFSw0M3ASVMj6sv+09zpBgA+bM0yf6x733q0hOPZASWf8IhmB8NINxz8d+DPndY6ORipQr3ROEhFS5gOfQZEEF6W9VO2ics3XwPczNT9E........

ってな感じの公開鍵が生成されるので、これをGitHubのsubmoduleリポジトリのSettings -> Deploy keysまでいき、Add depoloy keyを押して、適当な名前を入力し、その下に生成された公開鍵をコピペし、Add keyを押します

.gutmodulesの修正

ホスティングしてるリポジトリの.gitmodulesをエディタでひらき、submoduleで使おうとしてるprivateリポジトリのurlを

https://github.com/owner/project

というhttps形式のものから

git@github.com:owner/project.git

というsshの形式のものに修正し、保存

submoduleをsyncして再push

その後、

$ git submodule sync

を実行し、.git/configのsubmoduleセクションを更新

最後に、.gitmodulesの差分をpushしたらbuildが通るようになった

参考

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?