Azure DevOps 构建 yaml : "No repository found by name templates" even though it is displayed

标签 azure azure-devops azure-pipelines azure-pipelines-yaml

我创建了一个新的 OneBuild Pipeline 并将 OneBuild.Buddy.yml 与其关联。但是当尝试在这里运行验证时:

enter image description here

我们得到:

Validation: /.pipelines/OneBranch.Buddy.yml: No repository found by name templates

Build validation error

但是该文件存在 - 这很清楚,因为内容就显示在那里。那么这个错误意味着什么?

注意:此问题与类似名称的问题不同 ADO YAML failing: No repository found by name templates因为那个有语法错误,但我的通过了独立的 yml 验证器

这是管道 yaml

# Pipeline that builds whl file

trigger:
  - feature/*

variables:
  CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning
  ENABLE_PRS_DELAYSIGN: 1
  ROOT: $(Build.SourcesDirectory)
  REPOROOT: $(Build.SourcesDirectory)
  OUTPUTROOT: $(REPOROOT)\out
  NUGET_XMLDOC_MODE: none
  WindowsContainerImage: 'cdpxwin1809.azurecr.io/global/vse2019:latest' # Docker image which is used to build the project https://aka.ms/obpipelines/containers
  BLACK_OPTS: '-vv --diff -t py38 --check'

pool:
  vmImage: ubuntu-latest

extends:
  template: v2/OneBranch.Official.CrossPlat.yml@templates # https://aka.ms/obpipelines/templates
  parameters:
    cloudvault: # https://aka.ms/obpipelines/cloudvault
      enabled: false
    globalSdl: # https://aka.ms/obpipelines/sdl
      tsa:
        enabled: false # onebranch publish all sdl results to TSA. If TSA is disabled all SDL tools will forced into 'break' build mode.
      # credscan:
      #   suppressionsFile: $(Build.SourcesDirectory)\.config\CredScanSuppressions.json
      binskim:
        break: true # always break the build on binskim issues in addition to TSA upload
      policheck:
        break: true # always break the build on policheck issues. You can disable it by setting to 'false'
      # suppression:
      #   suppressionFile: $(Build.SourcesDirectory)\.gdn\global.g

      stages:
        - stage: test
          jobs:
          - job: Run Tests
            steps:
              - script: |
                  python -m pip install --upgrade pip    
                  python -m pip install pytest
                displayName: "Install dependencies"

              # this runs the unit tests
              - script: |
                  make test
                displayName: "Run unit tests"

              - task: Bash@3
                inputs:
                  filePath: $(Build.SourcesDirectory)/src/framework/scripts/run-unit-tests-report
        - stage: build
          jobs:
          - job: Build Wheel
            steps:
            # This builds the whl from the code repo using the path defined in workingDirectory
            - task: Bash@3
              inputs:
                targetType: 'inline'
                workingDirectory: $(Build.SourcesDirectory)/src/framework
                script: |
                  make dist
              displayName: Make the whl

        - stage: publish
          jobs:
          - job: Copy Wheel Artifact
            steps:
            # This copies the whl generated in the previous step to the artifact staging directory
            - task: CopyFiles@2
              inputs:
                SourceFolder: $(Build.SourcesDirectory)/src/framework/dist
                Contents: '**.whl'
                targetFolder: $(Build.ArtifactStagingDirectory)
              displayName: Copy to artifact staging

          - job: Publish Wheel
            steps:
            # Publishes the whl artifact to the artifact feed
            - task: PublishBuildArtifacts@1
              inputs:
                PathtoPublish: '$(Build.ArtifactStagingDirectory)'
                ArtifactName: 'dist'
              displayName: Publish to artifact feed

最佳答案

在您的管道中,您有这部分:

extends:
  template: v2/OneBranch.Official.CrossPlat.yml@templates

事实是,v2/OneBranch.Official.CrossPlat.yml@templates 的意思是:

Take file v2/OneBranch.Official.CrossPlat.yml from the resource templates

但我根本没有看到资源模板和任何其他资源的任何定义。

<小时/>

如果我们引用文档:

Azure Pipelines | Template types & usage

# File: azure-pipelines.yml
resources:
  repositories:
    - repository: templates # That is how you define resource `templates`
      type: git
      name: Contoso/BuildTemplates
      ref: refs/tags/v1 # You might want to pin it to a specific tag to avoid surprises.

jobs:
- template: v2/OneBranch.Official.CrossPlat.yml@templates  # Then you use resource `templates` here
<小时/>

所以,您需要:

  1. 使用名称templates定义资源(存储库)。
  2. 稍后使用模板:v2/OneBranch.Official.CrossPlat.yml@templates引用该文件。

关于Azure DevOps 构建 yaml : "No repository found by name templates" even though it is displayed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75666491/

相关文章:

azure - 具有多个分区键的 Cosmos DB

azure - PowerShell 通过 Azure 管道打开所有网络

azure - 找到有针对我的评论的工作项目?

azure - 为什么我无法在 azure devops yaml 模板中的 if 条件中传递运行时变量

azure - 将文件名存储在变量中

Azure 网站 WebMatrix 添加现有文件呈灰色

azure - 有没有办法以编程方式更改 cosmos db 表上的 TTL

azure - 如何防止 Azure Devops 中的下一个发布管道在上一个发布管道完全完成之前启动?

angular - NX Monorepo 的 Azure 静态 Web 应用程序部署管道错误

azure - 使用 Terraform 实现 Azure 应用程序安全组