メインコンテンツまでスキップ

サブモジュールまたはプライベートリポジトリの依存関係を持つアプリ

GitHub Appの連携

プロジェクトで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​

  1. マシンユーザーとして機能する新しいGitHubユーザーアカウントを作成します。

  2. GitHub上の自分のリポジトリに移動し、Settingsタブを選択します。

  3. 左側のメニューでCollaborators & teamsを選択します。

    Can_I_add_projects_with_submodules_or_with_private_repo_dependencies_.png

  4. Collaboratorsウィンドウまで下にスクロールします。

  5. 検索入力欄で、新しく作成したアカウントのユーザー名を検索します。

  6. Add Collaboratorをクリックします。

  7. ユーザー権限をReadに変更します。

    デフォルトでは、招待されたコラボレーターの権限はWriteになっています。そのままにしておいても構いませんが、BitriseにはRead権限で十分です。

マシンユーザーにSSHキーを追加するClick to copy link​

Bitriseがマシンユーザーを使ってリポジトリにアクセスできるようにするには、同じSSHキーを、マシンユーザーとBitrise上のプロジェクトの両方に追加する必要があります。

新しいプロジェクトを追加する場合Click to copy link​

  1. Bitriseでのプロジェクトの追加のプロセスを開始します。

  2. リポジトリへのアクセスを設定するよう求められたら、次の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リポジトリに手動で登録する必要があります。

  3. プロセスを完了します。

  4. プロジェクトに追加したのと同じSSHキーをマシンユーザーにも追加します。

既存のプロジェクトの場合Click to copy link​

  1. プロジェクトに対するAdminのロールを持つユーザー、またはEdit workflow権限を持つカスタムロールを持つユーザーで、Bitrise上のプロジェクトを開きます。

  2. プロジェクトのメインページで、Project settingsボタンをクリックします。

  3. 左側でRepositoryを選択します。

  4. AuthorizationセクションでAuthorization methodカードを見つけ、Copy public keyをクリックします。

    SCR-20260401-pvvq.png

  5. [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 Stepはメインリポジトリでしか機能しません。複数のプライベートリポジトリにアクセスする必要がある場合、複数のGit Clone Stepsを追加しないでください。ScriptStepsを使用して、Bitrise仮想マシン上でこれらのリポジトリをクローンしてください。

ビルド中に追加のプライベートリポジトリをクローンするには:

  1. Bitriseの公開SSHキーを持つユーザーを、すべてのリポジトリに追加していることを確認します。
  2. Activate SSH KeyStepとGit CloneStepが、Workflowの先頭にあることを確認します。
  3. 追加のプライベートリポジトリをビルドにクローンするためのScriptStepsを1つ以上追加します。
  4. ビルドを実行します。
クローンに関する問題

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に対して使用してください。