Skip to main content

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

概要

ビルドを成功させるには、Bitrise がすべてのリポジトリまたはサブモジュールにアクセスする必要があるため、プロジェクトにサブモジュールまたはプライベート リポジトリの依存関係がある場合は、それらへのアクセス権も Bitrise に付与する必要があります。

GitHub アプリの統合

プロジェクトがGitHub Appインストールを使用してリポジトリに接続している場合は、 追加のリポジトリをリンクするこのドキュメントに記載されている回避策は必要ありません。

1 つ以上のサブモジュールまたはその他のプライベート リポジトリ依存関係 (CocoaPods リポジトリなど) を持つプロジェクトがある場合、ビルドを成功させるには、Bitrise がすべてのリポジトリまたはサブモジュールにアクセスできる必要があります。

OAuth接続のプライベートプロジェクトの場合、BitriseはSSHを使用してGitリポジトリにアクセスします。アクセスを許可するには、すべてのリポジトリがパブリックでアクセスできることを確認する必要があります。 SSHキーが生成されました Bitrise プロジェクト用。

これを実現するには、次の2つの方法があります。

  • 同じSSHキーを登録する ビルド中にアクセスする必要があるすべてのリポジトリに対して。

  • SSHキーをボットユーザーに登録し、そのユーザーをすべてのリポジトリに追加します。

すべてのリポジトリに同じ SSH キーを登録するのが最善かつ最も安全な方法ですが、すべてのサービスがこれをサポートしているわけではありません。GitLab と Bitbucket はこれをサポートしていますが、GitHub はサポートしていません。コードが GitHub に保存されていて、OAuth 接続を使用している場合は、読み進めてください。

ボットユーザーまたはマシンユーザー(GitHubではマシンユーザーと呼ばれます)を使用して、もう1つのオプションについて詳しく説明します。簡単に言うと、概念は単純です。Bitrise公開SSHキーをユーザーに登録し、そのユーザーをBitriseビルドでアクセスする必要のあるすべてのリポジトリに追加します。

読み取り専用アクセス権を持つマシンユーザー

特別なボット/マシンユーザーを使用する必要はありません。SSHキーをgitホスティングサービスの自分のアカウントに追加できます。ただし、ベストプラクティスは、ビルド中にアクセスするリポジトリに対して、読み取り専用アクセス権を持つマシンユーザーを使用することです。

GitHubはこの方法を推奨しています 複数のリポジトリにアクセスするため。簡単に例を見てみましょう。

例1 マルチビットプロジェクト

MultiBit という Bitrise プロジェクトがあります。このプロジェクトにはメイン リポジトリがあり、Bitrise ビルド中に他の 2 つのプライベート リポジトリから追加データを取得する必要があります。メイン ユーザーは BitMan と呼ばれ、彼の GitHub アカウントは Bitrise アカウントにリンクされています。ビルド中にプライベート リポジトリにアクセスするために、BitMan は GitHub に BitBot という別のユーザーを作成します。BitBot はマシン ユーザーになります。

今、BitManはにアクセスします アプリの設定 彼のBitriseアプリのページ、およびから公開SSHキーをコピーします 現在のSSH公開鍵 分野。次に、BitManはSSHキーをGitHubのBitBotユーザーに追加し、BitBotを共同作業者として2つのプライベートリポジトリに追加します。これで、BitBotはBitrise公開鍵を持ち、必要に応じてプライベートリポジトリにアクセスできます。 BitManのセットアップが機能するかどうかをテストする時が来ました。

BitManはBitriseにアクセスし、 ワークフローエディター彼は SSHキーを有効化 SSHキーが機能するようにリポジトリにステップインします。BitManは 脚本 プライベートリポジトリをクローンする手順 - Git クローン ステップ メイン リポジトリでのみ機能します。すべてが完了すると、ビルドは期待どおりに機能するはずです。


マシンユーザーを使用してプライベートリポジトリにアクセスする

NS マシンまたはボットユーザー は人間が使用しないGitHubユーザーであり、代わりに自動化にのみ使用されます。これは、プライベートリポジトリにアクセスするための最良の方法です。マシンユーザーを作成し、パブリックSSHキーをユーザーに追加してから、ユーザーにリポジトリへの読み取りアクセスを提供します。

マシンユーザーをリポジトリに追加する

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

  2. GitHubのリポジトリに移動し、 設定 タブ。

  3. 左側のメニューで、 共同編集者とチーム

    Can I add projects with submodules or with private repo dependencies?
  4. 下にスクロールして 共同編集者 窓。

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

  6. クリック 共同編集者を追加

  7. ユーザー権限をに変更します 読んだ

    デフォルトでは、招待された共同編集者の許可は 書く。もちろん、そのままにしておくこともできますが、Bitriseには読み取り権限で十分です。

マシンユーザーへのSSHキーの追加

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

新しいプロジェクトを追加するとき

  1. のプロセスを開始します Bitriseにアプリを追加する

  2. リポジトリ アクセスを設定するように求められたら、次の 3 つのオプションから選択できます。

    • 生成されたSSHキーをリポジトリに自動追加する: Bitrise は GitHub リポジトリに公開 SSH キーを自動的に登録します。

    • 生成されたSSHキーをGitプロバイダーに手動でコピーする: Bitrise は SSH キーペアを生成するので、公開キーを手動で Git リポジトリに登録する必要があります。

    • 独自のSSHキーを追加する: 認証用に独自の SSH キーペアを提供し、公開キーを Git リポジトリに手動で登録する必要があります。

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

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

プロジェクトがすでに存在する場合

  1. Bitriseでアプリを開くには、 管理者 アプリチームでの役割

  2. に移動します 設定 タブ。

    project-settings-button.png
  3. 左側で、 統合 そして Git プロバイダー タブ。

  4. クリック 公開鍵をコピー

    ssh_keypair.png
  5. SSH公開鍵をコピーして GitHubマシンユーザーに追加します

Gitクローン作成サブモジュールとリポジトリの依存関係

Bitrise ビルド中に複数のリポジトリにアクセスする場合、次の 3 つのオプションがあります。

  • 仮想マシン上のすべてのリポジトリのクローンを作成し、必要に応じてそれらにアクセスします。

  • 追加のリポジトリをサブモジュールとしてメインリポジトリに追加します。

  • 使用方法 GitHub アプリの統合 そして 追加のリポジトリへのリンク

後者の場合、クローン作成について心配する必要はありません。 SSHアクセス 正確には、 Git クローン Step がすべてを処理します。

リポジトリの依存関係をサブモジュールとして追加したくない、または追加できない場合は、以下をお読みください。それらのクローンを作成する方法について説明します。

Gitクローンステップ

NS Gitクローン ステップはメインリポジトリでのみ機能します。複数のプライベートリポジトリにアクセスする必要がある場合は、複数追加しないでください Gitクローン ステップ。使用する 脚本 Bitrise仮想マシンでこれらのリポジトリのクローンを作成する手順。

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

  1. BitriseパブリックSSHキーを持つユーザーをすべてのリポジトリに追加したことを確認してください。

  2. あなたが持っていることを確認してください SSHキーをアクティブ化する ステップと Gitクローン ワークフローの開始時にステップします。

  3. 1つ以上追加する 脚本 追加のプライベートリポジトリをビルドに複製する手順。

    clone-private.png
  4. ビルドを実行します。

クローンの問題

gitのクローン作成で問題が発生した場合(たとえば、すべてのサブモジュールがクローンされているわけではない場合)、クローン作成後に次のコマンドを試してください。

git submodule update –recursive –remote –merge –force

公共プロジェクトと民間プロジェクト

アプリのすべてのサブモジュールまたはプライベートリポジトリの依存関係へのアクセスを許可する場合に留意すべき重要な詳細が1つあります。それは、アプリのプライバシー設定によって何が決まるかです。 gitURLを使用する必要があります

  • プライベートアプリをお持ちの場合:どこでもSSH URLを使用してください!ほとんどのサービスは、SSH URLに対してのみSSHキーベースの認証をサポートしています(たとえば、 [email protected]:bitrise-io/bitrise.git)。したがって、使用するすべてのプライベートリポジトリはSSHURLでアドレス指定する必要があります。 CocoaPods Podfileに直接プライベートgitリポジトリ参照がある場合は、そこでもSSHURLを使用する必要があります。同じことがサブモジュールとあなたが使用したい他のすべてのプライベートgitリポジトリURLにも当てはまります 登録したSSHキー オン bitrise.io

  • パブリック プロジェクトがある場合: どこでも HTTPS URL を使用してください。リポジトリがパブリックであっても、SSH URL には SSH キーが必要です。セキュリティ上の理由から、パブリック プロジェクトは SSH キーを持つことができません。パブリック リポジトリの場合、HTTPS git clone URL は認証を必要としないため、パブリック Bitrise プロジェクトに使用する必要があります。