Azure DevOps の「VS800075: The project with id '…' does not exist, or you do not have permission to access it.」
「その ID のプロジェクトは存在しないか、アクセスの権限が無い」という意味です。Azure DevOps は、呼んだアカウントからプロジェクトが見えないときにこの VS800075 で答え、プロジェクトが無いのか、そのアカウントから隠れているだけなのかは教えてくれません。公開の報告でいちばん多いのは、パイプラインが別のプロジェクトのフィードやリポジトリに手を伸ばし、そのビルド サービスに向こうの権限が無いときです。次が、az devops・Terraform・スクリプトの裏のユーザーやサービス プリンシパルが、プロジェクトのメンバーでないときです。
答えの全体
2021年〜2026年10月の公開の報告が引いている形です。REST API、Azure CLI(az devops・az repos)、Terraform のプロバイダー、パッケージを取ってくる・出すパイプラインのタスクから出ます:
VS800075: The project with id 'vstfs:///Classification/TeamProject/<GUID>' does not exist, or you do not have permission to access it.
- JSON の答えでは
typeKeyがProjectDoesNotExistExceptionです。報告では、呼び出しによって HTTP 400・403・404 のどれかと一緒に出ています。 - パイプラインの Azure Artifacts のタスクは
An error occurred on the service. VS800075: …と包んで出します。 - プロジェクトが要る呼び出しにプロジェクトが無かったときは
The project with id 'No project was specified.'になります。
出るのはサインインしたアカウントだけです。10月24日にトークンなしで、公開組織の無いプロジェクトを名前でも GUID でも聞くと、dev.azure.com は代わりに HTTP 401 と TF400813 で答えました:そちらの意味。
だれの権限か
- パイプラインは、ビルド サービスのアカウントとして動きます。Limit job authorization scope to current project for non-release pipelines が入なら
<プロジェクト> Build Service (<組織>)、切ならProject Collection Build Service (<組織>)です(Microsoft のジョブのアクセス トークン)。プロジェクト単位のアカウントは、ほかのプロジェクトが入れてくれるまで自分のプロジェクトしか見えません。 - ユーザーやサービス プリンシパル(個人用アクセス トークン・
az login・Terraform・スクリプト)は、Readers や Contributors などのグループを通じてメンバーになっているプロジェクトだけが見えます。
権限を付ける
- 別のプロジェクトに手を伸ばすパイプライン。相手のプロジェクトで Project settings → Permissions を開き、Users でビルド サービスのアカウントを探して(出てこなければ Expand search)、View project-level information を許可します。Microsoft の例では、そのために新しいグループを作ってアカウントを入れています。そのうえで、向こうで使うものの権限を付けます(たとえばリポジトリの Read)。
- 別のプロジェクトの Azure Artifacts のフィード。フィードの歯車(Feed settings)→ Permissions → Add users/groups で、ビルド サービスのアカウントを Feed and Upstream Reader (Collaborator)、出すなら Feed Publisher (Contributor) で足します。Microsoft のフィードの権限のページには、プロジェクト単位のアカウントで別のプロジェクトのフィードを使うなら、そのプロジェクトが少なくとも Edit project-level information を与える必要がある、とも書かれています。
- ユーザーやサービス プリンシパル。プロジェクトの管理者が、プロジェクトのグループ(読むだけなら Readers、変えるなら Contributors)に足します。
- ワークロード ID フェデレーションのサービス接続。Microsoft のワークロード ID のページは、サービス接続の ID がプロジェクトに入っていないときの答えとして VS800075 を挙げています。サービス接続のページで View access in the current organization → Member of から Readers などのグループに足すか、Organization settings → Users でその ID を開き → Manage access でプロジェクトを選びます。組織にまったく入っていない ID には、先に TF401444 が返ります。
ほかに確かめる所
- 呼び出しが使った組織とプロジェクト。メッセージの GUID はプロジェクトの ID です。Azure CLI なら、
--orgと--projectを渡さないときに使われる既定の組織とプロジェクトをaz devops configure --listで見られます。 - 作ったばかりのプロジェクト。2023年の報告では、
az devops project createが、プロジェクトは作られたのに VS800075 で終わることがありました。Azure DevOps は依頼を受け付けてから後でプロジェクトを用意するので、その前に読むとこの答えになります。少し待ってから読み直します。
IntelliJ IDEA と Rider で Azure DevOps のプルリクエストを
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。組織・プロジェクト・リポジトリを git のリモートから読み、自分のレビューを待っているプルリクエストを IDE のツールウィンドウに並べます。Azure DevOps Services でも Azure DevOps Server でも使えます。1.0.35 からは、Azure DevOps が VS800075 と答えたとき、プロジェクトの名前を出し、git のリモートのプロジェクト名とアカウントがメンバーかを確かめるよう案内します(別のトークンを求めません)。公開プロジェクトはトークンなしで読めます。レビューの受け箱は無料、投票・コメント・完了は Pro(30日間の無料試用つき)です。画面は日本語です。
Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:TF200016:その名前のプロジェクトが無い · TF401019:リポジトリが無いか、権限が無い · TF401027:Git の許可が無い · TF401444:組織がまだアカウントを知らない · English