AzurePipeline错误:找不到与模板文件模式匹配的任何文件

时间:2020-07-07 11:07:33

标签: azure azure-devops azure-pipelines

我有以下管道

variables:
  azureSubscription: ...

stages:
- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()

  jobs:
  - deployment: Deploy
    displayName: Deploy
    environment: 'development'

    strategy:
      runOnce:
        deploy:

          steps:
            - task: AzureResourceGroupDeployment@2
              inputs:
                action: 'Create Or Update Resource Group'
                resourceGroupName: '...'
                location: '...'
                templateLocation: 'Linked artifact'
                csmFile: '$(Pipeline.Workspace)/azure-deploy.json'
                deploymentMode: 'Incremental'

回购包含以下文件(在根目录中)

azure-pipelines.yaml
azure-deploy.json

只有一个主分支。

我尝试过:

azure-deploy.json
**azure-deploy.json
**/*azure-deploy.json
$(Build.SourcesDirectory)/azure-deploy.json
$(Pipeline.Workspace)/azure-deploy.json
$(System.DefaultWorkingDirectory)/azure-deploy.json

已阅读:

无济于事。有什么想法吗?

更新:我已经添加了@ShaykiAbramczyk建议的发布管道 现在,我得到一个模板文件模式,该模式与目录而不是文件匹配:/home/vsts/work/1/azure-deploy.json

- stage: Build
  displayName: Build stage

  jobs:
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)

    steps:
    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Pipeline.Workspace)'
        artifact: 'azure-deploy.json'
        publishLocation: 'pipeline'

3 个答案:

答案 0 :(得分:1)

对于您正在做的事情来说,采用多阶段管道是一个好策略。

  • 构建用于合成工件。
  • 部署作业用于发布部分。 所以您走在正确的轨道上。

如果在部署作业期间需要源,则使用签出步骤来获取源。 ref. Repo Checkout docs

只有我的两分钱

答案 1 :(得分:1)

“部署作业不会自动克隆源存储库。您可以使用 checkout: self 在您的作业中检出源存储库。” 来源:https://docs.microsoft.com/en-us/azure/devops/pipelines/process/deployment-jobs?view=azure-devops

我的设置示例,我将 checkout: self 作为第一步,现在在执行 Azure PowerShell 之前克隆了我的存储库:

    strategy:
      runOnce:
        deploy:
          steps:
          - checkout: self
          - task: AzurePowerShell@5
            displayName: Setup Network
            inputs:

答案 2 :(得分:0)

因为您使用deployment作业,所以master分支中的源没有下载到代理中。

您需要在构建阶段发布文件,并在部署中使用它们-使用pipeline artifacts

或者,只需在常规作业中运行AzureResourceGroupDeployment,便会在代理中插入.json文件。