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

1つ以上のサブモジュールまたは他のプライベートリポジトリの依存関係を持つプロジェクト(CocoaPodsリポジトリなど)がある場合、ビルドを成功させるには、Bitriseがすべてのリポジトリまたはサブモジュールにアクセスする必要があります。 BitriseはSSHを使用してプライベートアプリのGitリポジトリにアクセスします。アクセスを許可するには、Bitriseアプリ用に生成された公開SSHキーを使用してすべてのリポジトリにアクセスできることを確認する必要があります。

アプリのプライバシー

このガイドの範囲は、主にプライベートBitriseアプリを対象としています。 Gitクローン作成サブモジュールとリポジトリの依存関係のセクションでは、パブリックアプリを使用して複数のリポジトリにアクセスする方法について簡単に説明します。プロセスははるかに簡単で、必要なのはすべてのリポジトリにHTTPSgitクローンURLがあることを確認することだけです。公開アプリではSSHキーを使用できないため、SSHキーについて心配する必要はありません。

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

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

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

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

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

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

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

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

例1 マルチビットアプリ

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

今、BitManはに行きます 設定 彼のBitriseアプリのタブをクリックし、公開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がマシンユーザーを使用してリポジトリにアクセスできるようにするには、同じSSHキーをマシンユーザーとBitrise上のアプリに追加する必要があります。

新しいアプリを追加するとき

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

  2. リポジトリアクセスを設定するように求められたら、次のいずれかを選択できます 自動 また 独自のSSHを追加する

    Adding a new app
  3. プロセスを終了します。

アプリがすでに存在する場合

  1. Bitriseでアプリを開きます。

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

  3. 下にスクロールして SSH設定

  4. クリック クリックしてSSH公開鍵を表示 ボタン。

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

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

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

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

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

後者の場合、それらのクローンを作成することを心配する必要はありません。SSHアクセスを正しく設定すると、 Gitクローン ステップはすべての世話をします。

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

パブリックアプリとプライベートアプリ

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

  • プライベートアプリをお持ちの場合:どこでもSSH URLを使用してください!ほとんどのサービスは、SSH URLに対してのみSSHキーベースの認証をサポートしています(たとえば、 git@github.com: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アプリに使用する必要があります。

Gitクローンステップ

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

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

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

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

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

  4. ビルドを実行します。

クローンの問題

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

git submodule update –recursive –remote –merge –force