BitriseにGitHub OrganizationのRepositoryを連携してみた

2020.06.06

こんにちは、CX事業本部の若槻です。

弊部署で対応している一部のプロジェクトでは、モバイルアプリのCI/CDツールとしてBitriseを利用しています。Bitriseは、iOS、Android、Xamarin、React NativeなどのモバイルアプリケーションのCI/CDに特化したWebサービスです。

今回は、このBitriseにチームで利用しているGitHub OrganizationのRepositoryを連携してチームでCI/CDを利用できるようにするまでの操作を確認してみました。

やってみる

早速BitriseでGitHub OrganizationのRepositoryを連携をしてみます。なお、前提として以下の対応は実施済みです。

  • 操作に使用するアカウントに対して以下実施済みです。
    • GitHub連携によるBitriseへのサインアップ
    • 連携するGitHub Organizationへの所属
  • 今回連携するGitHub Organization上のコードとして、Bitriseが公開している以下のサンプルコード集のうちの一つをCloneをRepositoryとして作成済みです。

Bitrise Organizationを作成する

まず、BitriseにOrganizationを作成します。プランはOrg Standardの14-day Trialを利用します。

Bitriseの[Pricing]ページを開き、[Start 14-day Org trial]をクリックします。 image.png

BitriseにサインインしていなければGitHubのユーザーアカウントでサインインします。Bitrise上にOrganizationが未作成であれば、[Create new Organization]ダイアログが開きます。

ダイアログで[Name of Organization]に任意のBitrise組織名(今回はcx-verify)、[Billing email]に支払い情報送付先のメールアドレスを指定し、[Create]をクリックします。 image.png

支払い情報の入力を求められますが、Trialなので必須ではありません。今回は右上の[skip]を入力します。これでOrg Standard TrialのBitrise Organizationの作成は完了です。 image.png

Bitrise OrganizationへAppを追加する

次に、Bitrise OrganizationへGitHub Organization上のRepositoryをAppとして追加します。

Bitriseの[Dashboard]ページを開き、右上のOwner選択メニューで先ほど作成したBitrise Organizationを選択します。Appはまだ一つも追加されていない状態です。[Add New App]をクリックし、[Add New App on web UI]を選択します。 image.png

[CHOOSE ACCOUNT]で先ほど作成したBitrise Organization、[SET PRIVACY OF THE APP]でPrivateが選択されていることを確認し、[Next]をクリックします。 image.png

画面左の[ORGANIZATIONS' REPOS]欄よりGitHub Organizationアカウントを選択し、画面右よりAppを作成したいRepository(今回はsample-apps-android-sdk22)を選択します。なお、[ORGANIZATIONS' REPOS]欄には操作アカウントが所属しているGitHub Organizationがすべて表示され、Repository一覧には操作アカウントがGitHub側でRead以上の権限を持っているRepositoryのみ表示される動作となりました。 image.png

[Setup repository access]では、自動でRepositoryにSSH Keyを設定するため、[No, auto-add SSH key]をクリックします。 image.png

すると警告が出てSSH Keyの自動追加ができませんでした。 image.png

GitHub Organization側で操作アカウントのアクセス権を確認してみると、sample-apps-android-sdk22Repositoryに対してはWrite権限しか持っていませんでした。 image.png

操作アカウントが所属するTeamのRepositoryに対するアクセス権をAdminに変更します。 image.png

Bitrise側に戻り、設定を再チャレンジしてみます。[No, auto-add SSH key]をクリックします。 image.png

SSH Keyが設定できました。Appで使用するBranch名を入力し(今回はmasterを指定)、[Next]をクリックします。 image.png

Repositoryに対するValidationが開始されます。 image.png

Validationが成功したら、[Specify Module]を指定(今回は既定のapp)して[Next]をクリックします。 image.png

[Specify Valiant]を指定(今回は既定の未指定)して[Next]をクリックします。 image.png

[Confirm]をクリックします。 image.png

[App icon]ではCustomアイコンを指定できます。今回は[Skip for Now]をクリックします。 image.png

[Webhook setup]で[Register a Webhook for me!]をクリックします。この設定によりGitHub上のReposigory側で行われたPushなどの操作によりBitrise側でAppのBuildをトリガーさせることができるようになります。(この時、特にGitHub側での承認などは不要です。) image.png

RepositoryへのWebhookの登録が完了すると以下のような画面となり、Appの最初のBuildがキックされます。 image.png

App作成画面を一番上までスクロールして、右上の[Finish]をクリックします。 image.png

ダッシュボードページに戻ります。[All owners]が選択されているので個人およびすべてのOrganizationが表示されています。 image.png

cx-verifyを選択すると、cx-verifyに追加済みのAppの一覧やBuild履歴のみをフィルター表示できます。 image.png

これでGitHub Organization上のRepositoryをBitrise OrganizationにAppとして追加できました。

Bitrise OrganizationおよびGroupへMemberを追加する

次に、MemberアカウントをBitrise OrganizationおよびGroupへ追加します。この操作によりBitriseのMemberアカウントを同じBitrise Organizationの課金体系上で管理できるようになります。

ダッシュボードページで右上のアイコンをクリックして[Account settings]をクリックします。 image.png

ページ左下で[ORGANIZATIONS]欄よりメンバーを追加したいBitrise Organizationを選択します。 image.png

[Groups]タブを選択して[Create new Group]欄でGroup名(今回はhoge-prg-group)を指定して、[Create]をクリックします。 image.png

Groupに追加したい同じGitHub Organizationに属するアカウントのGitHubユーザーネームを指定して[Done]をクリックします。 image.png

指定されたアカウントがどのBitrise Organizationにも未参加の場合は、そのアカウント宛にOrganization invitation - <Organization名>というタイトルの招待メールが届きます。招待されたアカウントはメールに記載されたリンクを参考に、cx-verifyOrganizationとhoge-prg-groupGroupに参加します。

※ここから、招待した側のユーザーを「Ownerアカウント」、された側のユーザーを「Memberアカウント」と呼ぶことにします。

Ownerアカウントでcx-verifyOrganizationのページにて[Group]タブを開くと、招待されたMemberアカウントがhoge-prg-groupに参加できているのが確認できます。 image.png

AppにGroupをアサインする

次に、AppをGroupにアサインします。この操作によりGroupに所属するMemberアカウントは同じAppをBitrise上で共有して利用できるようになります。

MemberアカウントでBitriseにサインインしてダッシュボードを開いてみると、先ほどOwnerアカウントがcx-verifyOrganizationに追加したAppが表示されていません。(キャプチャ内に表示されているのはMemberアカウントが自分でcx-verifyに追加したAppです。) image.png

[Assigning groups to apps - bitrise:DOCS]を確認してみると、Appを利用させたいアカウントのGroupをAppへ明示的にアサインする必要があり、アサインの仕方には以下の2つの方法があるとのことです。今回は後者の方法を取ってみます。

  • Assigning a group from the Groups menu
  • Assigning a group from the Team tab.

Ownerアカウントでダッシュボードページを開き、のApp一覧より追加したいAppを選択します。
image.png

[Team]タブで[Add member or group]をクリックします。 image.png

追加したいGroupで[+]をクリックします。 image.png

付与するRoleの種類を聞かれるので選択します。(今回はDEVELOPERSとしました) image.png

※AppにGroupやMemberをアサインする際のRoleの種類の詳細は以下ドキュメントで確認できます。

AppのDEVELOPERSRoleを持つGroupとしてhgoe-prg-groupが追加されました。 image.png

再度MemberアカウントでBitriseのダッシュボードを開いてみると、DEVELOPERRoleが付与されたAppやそのBuild履歴が表示されるようになりました。 image.png

MemberアカウントでBitrise画面よりAppのBuidを実行することもできました。 image.png

おわりに

BitriseでGitHub OrganizationのRepositoryを連携してみました。

わたしはサーバーサイド寄りのエンジニアであるためアプリ開発は経験がなく、Bitriseにもまったくと言って良いほど縁が無かったのですが、今回四苦八苦しながらガッツリ触ることによりBitriseとの距離感をぐっと縮めることができました。

参考

以上