サブモジュールまたはプライベートリポジトリの依存関係を持つアプリ
プロジェクトでGitHub Appのインストールを使用してリポジトリに接続している場合は、追加のリポジトリをリンクするだけで済みます。このドキュメントで説明されている回避策は一切必要ありません。
プロジェクトに1つ以上のサブモジュールやその他のプライベートリポジトリの依存関係がある場合(たとえばCocoaPodsリポジトリなど)、ビルドを成功させるにはBitriseがall repositoriesまたはサブモジュールにアクセスできる必要があります。
OAuth接続を使用するプライベートプロジェクトの場合、BitriseはGitリポジトリへのアクセスにSSHを使用します。アクセスを許可するには、生成されたSSHキーがBitrise プロジェクトの公開鍵であることを確認し、すべてのリポジトリでアクセスできるようにする必要があります。
これを実現するには2つの方法があります。
- アクセスする必要があるすべてのリポジトリに、同じSSHキーを登録する。
- SSHキーをbotユーザーに登録し、そのユーザーをall repositoriesに追加する。
すべてのリポジトリに同じSSHキーを登録する方法が最も安全でお すすめですが、すべてのサービスがこれをサポートしているわけではありません。GitLabとBitbucketはこれをサポートしていますが、GitHubはサポートしていません。コードがGitHubに保存されていて、OAuth接続を使用している場合は、このまま読み進めてください。
もう一つの方法である、botユーザーまたはマシンユーザー(GitHubではマシンユーザーと呼ばれています)について詳しく見ていきましょう。要するに、考え方はシンプルです。Bitriseの公開SSHキーをユーザーに登録し、そのユーザーを、アクセスする必要があるall repositories(Bitriseビルド用)に追加します。
特別なbot/マシンユーザーを使用する必要はありません。gitホスティングサービス上の自分自身のアカウントにSSHキーを追加することもできます。ただし、ベストプラクティスとしては、ビルド中にアクセスしたいリポジトリに対して、読み取り専用アクセス権を持つマシンユーザーを使用することです。
複数のリポジトリにアクセスする方法として、GitHubはこの方法を推奨しています。簡単な例を見てみましょう。
MultiBitプロジェクトMultiBitと呼ぶBitrise projectがあるとします。メインリポジトリを1つ持ち、Bitriseビルド中に他の2つのプライベートリポジトリから追加のデータを取得する必要があります。メインユーザーはBitManという名前で、そのGitHubアカウントはBitriseアカウントにリンクされています。ビルド中にプライベートリポジトリへアクセスできるようにするため、BitManはGitHub上に別のユーザーを作成し、これをBitBotと呼びます。BitBotがマシンユーザーになります。
次に、BitManはProject settingsページ(Bitrise project)にアクセスし、公開SSHキーをコピーします。続いてBitManは、SSHキーをGitHub上のBitBotユーザーに追加し、BitBotを2つのプライベートリポジトリにコラボレーターとして追加します。これでBitBotはBitriseの公開鍵を持ち、必要に応じてプライベートリポジトリにアクセスできるようになります。あとは、BitManの設定が機能するかどうかをテストするだけです。
BitManはBitriseにアクセスし、Workflow Editorを開きます。リポジトリにはActivate SSH KeyのStepが設定されているため、SSHキーは機能します。BitManは、プライベートリポジトリをクローンするためにScript Stepを追加します。Git Clone Stepはメインリポジトリでしか機能しないためです。これですべての設定が完了し、ビルドは期待どおりに動作するはずです。
マシンユーザーを使用してプライベートリポジトリにアクセスするClick to copy link
マシンユーザーまたはbotユーザーとは、人間ではなく自動化専用に使用されるGitHubユーザーのことです。これはプライベートリポジトリにアクセスするための最良の方法です。マシンユーザーを作成し、そのユーザーに公開SSHキーを追加してから、リポジトリへの読み取りアクセス権を付与します。
リポジトリにマシンユーザーを追加するClick to copy link
-
マシンユーザーとして機能する新しいGitHubユーザーアカウントを作成します。
-
GitHub上の自分のリポジトリに移動し、Settingsタブを選択します。
-
左側のメニューでCollaborators & teamsを選択します。

-
Collaboratorsウィンドウまで下にスクロールします。
-
検索入力欄で、新しく作成したアカウントのユーザー名を検索します。
-
Add Collaboratorをクリックします。
-
ユーザー権限をReadに変更します。
デフォルトでは、招待されたコラボレーターの権限はWriteになっています。そのままにしておいても構いませんが、BitriseにはRead権限で十分です。
マシンユーザーにSSHキーを追加するClick to copy link
Bitriseがマシンユーザーを使ってリポジトリにアクセスできるようにするには、同じSSHキーを、マシンユーザーとBitrise上のプロジェクトの両方に追加する必要があります。
新しいプロジェクトを追加する場合Click to copy link
-
Bitriseでのプロジェクトの追加のプロセスを開始します。
-
リポジトリへのアクセスを設定するよう求められたら、次の3つのオプションから選択できます。
Auto-add a generated SSH key to your repository: Bitriseが自動的に公開SSHキーをGitHubリポジトリに登録します。
Copy a generated SSH key to your Git provider manually: BitriseがSSHキーペアを生成し、公開鍵をGitリポジトリに手動で登録する必要があります。
Add独自のSSH key: 独自のSSHキーペアを認証用に用意し、公開鍵をGitリポジトリに手動で登録する必要があります。
-
プロセスを完了します。
-
プロジェクトに追加したのと同じSSHキーをマシンユーザーにも追加します。
既存のプロジェクトの場合Click to copy link
-
プロジェクトに対するAdminのロールを持つユーザー、またはEdit workflow権限を持つカスタムロールを持つユーザーで、Bitrise上のプロジェクトを開きます。
-
プロジェクトのメインページで、Project settingsボタンをクリックします。
-
左側でRepositoryを選択します。
-
AuthorizationセクションでAuthorization methodカードを見つけ、Copy public keyをクリックします。

-
[GitHubマシンユーザーへの追加https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-accountを行います。
サブモジュールとリポジトリの依存関係をgitクローンするClick to copy link
Bitriseビルド中に複数のリポジトリにアクセスする方法には、3つの選択肢があります。
- 仮想マシン上にすべてのリポジトリをクローンし、必要に応じてアクセスする。
- 追加のリポジトリをメインリポジトリのサブモジュールとして追加する。
- GitHub App連携と追加のリポジトリのリンクを使用する。
後者の場合、クローンについて心配する必要はありません。SSHアクセスを正しく設定していれば、Git CloneStepがすべてを処理します。
リポジトリの依存関係をサブモジュールとして追加したくない、または追加できない場合は、このまま 読み進めてください。ここでは、それらをクローンする方法について説明します。
Git Clone Stepはメインリポジトリでしか機能しません。複数のプライベートリポジトリにアクセスする必要がある場合、複数のGit Clone Stepsを追加しないでください。ScriptStepsを使用して、Bitrise仮想マシン上でこれらのリポジトリをクローンしてください。
ビルド中に追加のプライベートリポジトリをクローンするには:
- Bitriseの公開SSHキーを持つユーザーを、すべてのリポジトリに追加していることを確認します。
- Activate SSH KeyStepとGit CloneStepが、Workflowの先頭にあることを確認します。
- 追加のプライベートリポジトリをビルドにクローンするためのScriptStepsを1つ以上追加します。
- ビルドを実行します。
gitクローンで問題が発生した場合(たとえば、一部のサブモジュールがクローンされないなど)、クローン後に次のコマンドを試してください。
git submodule update –recursive –remote –merge –force
パブリックプロジェクトとプライベートプロジェクトClick to copy link
Bitrise projectに対して、すべてのサブモジュールやプライベート リポジトリの依存関係へのアクセスを許可する際に、覚えておくべき重要なポイントが1つあります。それは、プロジェクトの公開設定によって使用すべきgit URLが決まるという点です。
- プライベートプロジェクトの場合: どこでもSSH URLを使用してください。ほとんどのサービスは、SSHキーによる認証をSSH URL(たとえば
[email protected]:bitrise-io/bitrise.git)に対してのみサポートしています。そのため、使用したいすべてのプライベートリポジトリはSSH URLで指定する必要があります。CocoaPods Podfile内にプライベートなgitリポジトリへの直接参照がある場合、そこでもSSH URLを使用する必要があります。同じことは、URLのサブモジュールや他のすべてのプライベートgitリポジトリにも当てはまり、登録するSSHキーを使ってbitrise.io上で利用します。 - パブリックプロジェクトの場合: どこでもHTTPS URLを使用してください。SSH URLは、リポジトリが公開されている場合でもSSHキーを必要とします。セキュリティ上の理由から、パブリックプロジェクトにはSSHキーを設定できません。HTTPS git clone URLはパブリックリポジトリの場合認証を必要としないため、パブリックなBitrise projectに対して使用してください。