はじめに
仕事でもプライベートでもHerokuを使い続けている須貝です。
Herokuユーザーの方ならおそらく使っていると思うReview Appsですが、すこし前に新バージョンが登場しました。
Review Apps (New) | Heroku Dev Center
私はGAになる前に個人で運用しているアプリケーションのReview Appsを新バージョンにしてしばらく運用していました。その時の所感をまとめた記事はこちら。特に問題なさそうだったので仕事でHeroku上で運用しているアプリケーションのほうも対応しようとReview Apps(New)にしたら思わぬ落とし穴(?)があったので共有します。
先に結論
Review Apps(New)はユーザーの権限がmember以上でないとデフォでReviewAppの管理画面にアクセスできません。言い換えるとcollaborator権限のユーザーはReview Appsの管理画面にアクセスできないんです。
管理画面にアクセスできないと何が困るかというとReview App単位で環境変数を変えたいときとか、アドオンを追加したいときに結構困ります。Private SpacesというかEnterpriseTeamだけの話かなと思ったらCommon Runtimeもその対象でした。
これは不便だ…と思っていたらpipelineのAccessタブからユーザーを追加すると解決できるようです。
右のAdd Memberボタンを押下して追加したいユーザーのメールアドレスを入力するだけです。
すでに作成済みのreview appの管理画面にはアクセスできないのですが、Add Memberされた後に新規に作成したreview appにはアクセスできました。アドオンも追加できましたし、cliから環境変数をチェックしたりできたのでおそらく大丈夫だと思います。
もうすこし詳しく説明
自分の調査が甘かっただけで普通にドキュメントに書いてありました。
ドキュメントのここです。
Users with “Collaborator” permission on an app within a Pipeline can not access Review Apps automatically. To give collaborators access to Review Apps and CI Apps, please add them to the new permission table in the pipeline’s access tab.
うちはPrivate SpacesとCommon Runtimeを併用しておりまして、本番環境のアプリケーションはPrivate Spaces上で動作しているのですが、Review AppsはCommon Runtime上で運用しています。
さらにCommon Runtime上のReview AppsはEnterpriseTeamに移しておらず、Personal(こういう呼び方でいいのかはわからない)です。
これには理由がありまして、Enterprise TeamでもCommon RuntimeのReview Appsを利用することはできるのですが、有料dynoしか使えないのです。Personalはfreeのdynoが選べます。なのですこしややこしい感じになっております。
で、PersonalのCommon Runtimeだとユーザーの権限(Role)はownerとcollaboratorしかありません。なのでowner権限のアカウントしかReview Appの管理画面にアクセスできないのです。なので普通にEnterpriseTeamでReview Apps(New)使ってますわという方々にはそんなに問題にならないはずです。
なお、今回私が選択した解決策はpipelinesのEphemeral app permissionsという機能らしいです。EnterpriseTeamだともっと細かく権限を設定できるようです。
終わりに
最初はEnterpriseTeamに移動する解決策しかないと思っていたのでちょっと困っていたのですが、dynoを無料にしたままこれまで通りの運用ができそうで良かったです。今回の件でいろいろと調べていく中で、自分がHerokuアカウントの権限周りをあまり理解できていないなという反省があったのでもう少し詳しくなっていこうかなと思いました。