TF401019:名称或标识符为 public 的 Git 存储库不存在,或者您没有执行正在尝试的操作的权限

问题描述 投票:0回答:6

我有两个名为

private2
public2
的 ADO 存储库。
private2
引用
public2
作为子模块:

enter image description here

我还添加了一个用于构建的 yaml 文件(vsts-cicd.yml),如下所示:

resources:
  repositories:
  - repository: test
    type: git
    name: <ProjectName>/public2
    ref: master

stages:

- template: build1.yml@test
  parameters:
    repoToCheckout: test
    checkoutPath: '$(Build.BuildNumber)'

- template: build2.yml@test
  parameters:
    repoToCheckout: test
    checkoutPath: '$(Build.BuildNumber)'
    
- template: yaml/build3.yml

运行构建时,我看到前两个模板已成功完成。到达

- template: yaml/build3.yml
时,它失败并出现以下错误:

enter image description here

我错过了什么?

更新:

我按照这篇文章(https://www.timschaeps.be/post/dealing-with-error-tf401019-submodules-azure-pipelines/)解决了这个问题,但是我在项目设置中没有看到这个选项:“将作业授权范围限制为引用的 Azure DevOps 存储库”。我错过了什么?

enter image description here

git azure-devops yaml repository git-submodules
6个回答
13
投票

正如您在更新中提到的,使用 Repo 的项目需要在项目设置中禁用设置

Limit job authorization scope to current project for non-release pipelines

注意:请记住,这会将构建标识更改为集合范围。这可能会导致使用 Auzure DevOps Artifacts 时出现问题。请参阅范围构建标识

Azure DevOps Project Pipeline Settings


9
投票

您可能还需要将正确的构建服务帐户添加到上游存储库的贡献者中。

请参阅(https://cloudopszone.com/azure-devops-how-to-solve-remote-tf401019-the-git-repository-with-name-or-identifier/)。

换句话说,转到上游项目 -> 设置(齿轮图标) -> 权限 -> 贡献者 -> 成员,然后添加适当的“XXX Build Service (yyy)”。


5
投票

我不知道为什么它呈灰色,但我认为您还需要禁用“保护对 YAML 管道中存储库的访问”。为我工作。


2
投票

我最近遇到了这个问题。对我来说,它使用了 Windows 凭据管理器中的错误凭据。我的存储库上存储的凭据的权限已被撤销。所以我删除了过时的凭据并再次克隆。这对我有用。


1
投票

我在这里找到了非常有用的故障排除指南。

就我而言,我需要做两件事才能跨另一个项目检查存储库。

  1. 配置项目访问同一项目集合中另一个项目的权限
  2. 配置权限以访问同一项目集合中的另一个存储库

希望有帮助!


0
投票

在 Azure DevOps 上更改存储库名称后,您也可能会收到此错误。

假设存储库名称为

repo-x
,并且您一直在本地处理它。如果将存储库的名称更改为
repo-y
,您将收到此错误,因为您的本地 Git 存储库仍然指向旧的存储库名称 (
repo-x
),但您在 Azure DevOps 中将名称更改为
repo-y

在这种情况下,您可以通过运行

git remote -v
来检查本地存储库的远程 URL。

你会看到类似这样的东西:

origin  https://dev.azure.com/organization-name/project-name/_git/repo-x (fetch)
origin  https://dev.azure.com/organization-name/project-name/_git/repo-x (push)

您需要更新本地存储库中的远程 URL 以匹配新的存储库名称。因此,您需要根据新的存储库名称运行此命令。

git remote set-eurl origin https://dev.azure.com/organization/project-name/_git/repo-y

进行此更改后,您不应再收到错误。

© www.soinside.com 2019 - 2024. All rights reserved.