GitHub連携したUnity Build Automationで、最小限のpermissionを与えた「Fine-grained personal access tokens」を使ってビルドする

この投稿では、GitHubと連携するUnity Build Automation環境において「Fine-grained personal access tokens」でAuthorizeする際、tokenに必要な最小限のpermissionsを説明します。

本投稿の情報は、2024年2月16日現在のものです。

執筆時点に、この情報は公式ドキュメントに記載がありません。公式フォーラム内の投稿、および執筆者の環境で試した結果を元に執筆しています。

執筆時点、公式フォーラムで確認、および公式ドキュメントへの記載を依頼中です。

# 先に結論

GitHub連携したUnity Build Automationにおいて、

指定したブランチにプッシュしたことをトリガーにビルドを開始したい場合、次に示す3つのpermissionをもつ「Fine-grained personal access tokens」が必要です。

* WebhooksへのRead and write access
* ContentsへのRead-only access
* MetadataへのRead-only access(これは、ContentsへのRead-only accessを付与すると自動で付与されます)

Unity Build Automationのダッシュボードでマニュアル操作でビルドを開始するだけで良い(特定のブランチへのプッシュをトリガーとしなくて良い)ならば、次に示す2つのpermissionをもつ「Fine-grained personal access tokens」が必要です。

* ContentsへのRead-only access
* MetadataへのRead-only access(これは、ContentsへのRead-only accessを付与すると自動で付与されます)

# Unity Build Automationとは？

Unity Build Automationは、Unity公式のCI/CDサービスです。クラウド上でUnityプロジェクトをビルドすることができます。かつてあったUnity Cloud Buildの後継サービスです。

Unityプロジェクトの連携先（ソースコード・プロジェクトの置き場）として、Unity Version Control、GitHub、Bitbucket、Gitlabなどがあります。

# GitHubとの連携

Unity Build AutomationでGitHubと連携するためには、「Unity Build AutomationがGitHubにあるリポジトリにアクセスできる」ようにする必要があります。そのために「personal access token」を使います。詳しくは次のUnity Build AutomationとGitHubの公式ドキュメントを参照してください。

* https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
* https://docs.unity.com/ugs/en-us/manual/devops/manual/build-automation-settings
* https://forum.unity.com/threads/changes-to-bitbucket-and-github-authentication-flows.1514087/

なお、GitHubの「personal access token」には次の2つがあります。

* personal access token (classic)
* fine-grained personal access token

[GitHubの公式ドキュメント](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)に、次のように書かれています。

> Note: Your personal access token (classic) can access every repository that you can access. GitHub recommends that you use fine-grained personal access tokens instead, which you can restrict to specific repositories. Fine-grained personal access tokens also enable you to specify fine-grained permissions instead of broad scopes.

「personal access token (classic)」は、トークン作成者のすべてのプライベートリポジトリにアクセスできてしまいます（リポジトリの指定はできません）。
一方で、「fine-grained personal access token」はリポジトリの指定したアクセス制御が可能です。
Unity Build Automationに対して、利用しないリポジトリへのアクセス権限を与えるのは避けたいですね。そのため、「fine-grained personal access token」を利用することをオススメします。

# 必要なpermissionを付与してFine-grained personal access tokensを作成

さて、Unity Build Automationを利用するリポジトリのアクセス権を持つ「fine-grained personal access token」を作成します。必要最小限のpermissonsを付与したトークンを作成したいですね。残念ながら、現時点でUnity Build Automationのドキュメントに最小限必要なpermissionsの記載はありませんでした。

公式フォーラムでの[投稿](https://forum.unity.com/threads/changes-to-bitbucket-and-github-authentication-flows.1514087/#post-9529822)、および投稿者が投稿時点で試したところ、GitHub連携したUnity Build Automationにおいて、

指定したブランチにプッシュしビルドを開始したい場合、次に示す3つのpermissionをもつ「Fine-grained personal access tokens」が必要です。

* WebhooksへのRead and write access
* ContentsへのRead-only access
* MetadataへのRead-only access(これは、ContentsへのRead-only accessを付与すると自動で付与されます)

Unity Build Automationのダッシュボードにおいてマニュアルでビルドを開始するだけで良い(特定のブランチへのプッシュをトリガーとしなくて良い)ならば、次に示す2つのpermissionをもつ「Fine-grained personal access tokens」が必要です。

* ContentsへのRead-only access
* MetadataへのRead-only access(これは、ContentsへのRead-only accessを付与すると自動で付与されます)

# まとめ

対象のリポジトリ、必要な最小限に絞ったpermissionsを持つ「Fine-grained personal access tokens」を使って、ガンガンUnity Build Automation、活用していきましょう！

# 補足

公式フォーラムで必要なpermissionsの確認と、公式ドキュメントへの記載の提案をしておきました。

「いいね」と思ったら、「Like」をお願いします。

https://forum.unity.com/threads/changes-to-bitbucket-and-github-authentication-flows.1514087/#post-9635924