【问题标题】:Azure DevOps Pipeline AZ CLI upload-batch not pushing filesAzure DevOps Pipeline AZ CLI 上传批量不推送文件
【发布时间】:2020-11-30 16:45:42
【问题描述】:

我正在尝试为我们的单页 React 应用程序建立一个简单的 CI/CD 流程。 CI 已设置为 npm 构建 React 应用程序并将构建存档 (.zip) 发布到 $(Build.ArtifactStagingDirectory)。

然后触发 CD 进程以从工件 .zip 文件中提取构建,并利用 AZ CLI 任务将文件推送到托管静态网站的 Azure Blob 存储帐户。

部署成功完成,但没有文件发布到 blob 存储帐户。我假设它与 AZ CLI 命令的 --source 标志有关,并尝试使用 $(Build.DefaultWorkingDirectory)/$(Build.BuildId) 环境变量作为源。

然而,这会导致部署失败并出现以下错误。

The term 'Build.DefaultWorkingDirectory' is not recognized as the name of a cmdlet

我不确定 DevOps 目录的结构或 AZ CLI 如何通过 --source 标志与它们交互,但任何提示或建议将不胜感激。

【问题讨论】:

标签: azure azure-devops pipeline azure-blob-storage azure-cli


【解决方案1】:

术语“Build.DefaultWorkingDirectory”未被识别为 cmdlet 的名称

由于您使用 CD 进程启动 azure cli 部署,因此您似乎正在使用 Release Pipeline

根据我的测试,我可以在 Release Pipeline 中重现此问题。

这个问题的根本原因是变量Build.DefaultWorkingDirectory不能在Release Pipeline中使用。

此变量只能在构建管道(CI 流程)中使用。

要解决此问题,您可以尝试使用变量:$(system.DefaultWorkingDirectory)

提取文件任务

Azure CLI 脚本示例:

az storage blob upload-batch --account-name $(Name) --account-key $(key) -s $(system.DefaultWorkingDirectory)/$(build.buildid) --pattern * -d xxx

这是一个关于the variables in Release Pipeline的文档。

另一方面,除了 Azure Cli 脚本,您还可以直接使用Azure file copy task。会更方便。

【讨论】:

  • 您确定我们不能在发布管道中使用Build.DefaultWorkingDirectory
  • 这是构建管道中的预定义变量。在发布管道中,它不会被识别。如果可能的话,你可以试试。
  • i.stack.imgur.com/ns5o1.jpg 这在我的发布管道中有效...
  • 你使用的是system.DefaultWorkingDirectory而不是Build.DefaultWorkingDirectory,对吧?
  • 提供的两个选项都有效,但我选择了 Azure 文件复制任务,因为它更方便,如您所说。感谢您的及时回复。这对我帮助很大!
【解决方案2】:

第一:参考the DevOps directories structure

第二:您可以在 DevOps 中检查工件: 您将看到如下所示的页面。将工件下载到本地以查看详细信息:

最后,如果您对此非常陌生,请关注有关deploy React apps to Azure 的视频。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多