在数据库项目构建和发布管道中使用 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)"
我还使用 Get-ChildItem 来双重确认文件存在。
看起来像| / 多行不能按描述工作。
像往常一样,当我写这篇文章时,我详细检查了我的代码和示例之间的一个区别是单引号。
因此,如果删除单引号,它就会起作用。
有人对这个东西进行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
我也遇到了这个问题,在看到你的帖子后我意识到了这个错误 - 它与 copyfiles 任务无关,与 yaml 语法有关。
管道被认为是标量值的“文字”样式,并且不会解释任何内容 - 所有字符和中断都被保留而不进行任何解析(这就是为什么它经常用于多行值)。
有关更多信息,请参阅:https://yaml.org/spec/1.2.2/#literal-style