复制文件任务未拾取文件

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

在数据库项目构建和发布管道中使用 Azure DevOps YAML

这段代码正确地获取了我的四个 dacpac 文件,我可以看到这些文件被复制到控制台中

    - task: CopyFiles@2
      displayName: Copy build output to artifacts staging
      inputs:
        SourceFolder: "$(Build.SourcesDirectory)"
        flattenFolders: true
        Contents: '**\bin\**\*.dacpac'
        TargetFolder: "$(Build.ArtifactStagingDirectory)"

这段代码正确地获取了我的发布文件,我可以看到这些文件被复制到控制台中

    - task: CopyFiles@2
      displayName: Copy build output to artifacts staging
      inputs:
        SourceFolder: "$(Build.SourcesDirectory)"
        flattenFolders: true
        Contents: '**\PublishProfile\*.publish.xml'
        TargetFolder: "$(Build.ArtifactStagingDirectory)"

这段代码报告“找到零个文件”

    - task: CopyFiles@2
      displayName: Copy build output to artifacts staging
      inputs:
        SourceFolder: "$(Build.SourcesDirectory)"
        flattenFolders: true
        Contents: |
          '**\bin\**\*.dacpac'
          '**\PublishProfile\*.publish.xml'
        TargetFolder: "$(Build.ArtifactStagingDirectory)"

这个管道多行语法遍布示例 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml#examples

我还使用 Get-ChildItem 来双重确认文件存在。

看起来像| / 多行不能按描述工作。

azure-devops azure-pipelines-yaml azure-pipelines-tasks
2个回答
12
投票

像往常一样,当我写这篇文章时,我详细检查了我的代码和示例之间的一个区别是单引号。

因此,如果删除单引号,它就会起作用。

有人对这个东西进行QA吗?

    - task: CopyFiles@2
      displayName: Copy build output to artifacts staging
      inputs:
        SourceFolder: "$(Build.SourcesDirectory)"
        flattenFolders: true
        Contents: |
          # NOTE THESE PATHS ARE NOT SURROUNDED BY SINGLE QUOTES
          # EVEN THOUGH THIS WORKS IN THE SINGLE LINE VERSION
          **\bin\**\*.dacpac
          **\PublishProfile\*.publish.xml
        TargetFolder: "$(Build.ArtifactStagingDirectory)"

其他节省您时间的热门提示:

  • 使用它来列出文件以帮助解决丢失文件的问题

    - task: Bash@3
      inputs:
        targetType: inline
        workingDirectory: $(PIPELINE.WORKSPACE)
        script: ls -R
    
  • 记住 Linux 是区分大小写的 - 如果大小写错误,它将找不到您的文件

  • 截至目前,您无法参数化服务连接。也许将来会改变

  • YAML 中可能会出现缩进错误,并且它不会给您任何线索

此代码使变量组中的所有变量

TST
可用(这些变量位于“库”而不是“环境”下 - 见图)

variables:
- group: TST

这段代码(带有额外的缩进)不会抛出错误或提供任何线索,它只是不提供任何可用的变量。所有变量(如

$(MyVariable)
)都将被视为文字

variables:
  - group: TST

0
投票

我也遇到了这个问题,在看到你的帖子后我意识到了这个错误 - 它与 copyfiles 任务无关,与 yaml 语法有关。

管道被认为是标量值的“文字”样式,并且不会解释任何内容 - 所有字符和中断都被保留而不进行任何解析(这就是为什么它经常用于多行值)。

有关更多信息,请参阅:https://yaml.org/spec/1.2.2/#literal-style

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