为什么 Azure Devops 文件复制静态网站不复制到根目录?

Why Azure Devops File Copy static website not copying to root?

我在将 angular 应用程序部署到 Azure 存储静态网站时遇到问题。我去年创建了一个 CI/CD 管道,我用了几个月。前几个月没有部署,今天的部署让我运行遇到了一些问题。

第一个问题是关于身份验证的,但我能够解决它。

第二个是我正在努力解决的问题。我 运行 发布管道,文件被复制,但不在 $web 容器根目录中,但它创建了一个 'prod' 文件夹,并在那里复制文件。因此,我无法打开该网站,因为它在 $web 根文件夹中搜索 'index.html' 文件,但显然没有找到它,因为它在 $web/prod 文件夹中。我可以打开转到 /prod URL 的文件,但随后它会尝试从根目录加载所有资源(因此不是 prod 文件夹),显然文件不存在。

我看了一些关于部署到静态网站存储帐户的文章,它们都显示了与我正在使用的类似的 yaml。

这是我的构建管道,它在构建后发布工件:

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)/dist/prod'
    ArtifactName: 'prod'
    publishLocation: 'Container'
    displayName: 'publish prod'

这里是文件复制任务:

- task: AzureFileCopy@4
  displayName: 'AzureBlob File Copy'
  inputs:
    SourcePath: '$(System.DefaultWorkingDirectory)/_angularApp CI/prod'
    azureSubscription: '***'
    Destination: AzureBlob
    storage: angularApp
    ContainerName: '$web'

文件在 'PublishBuildArtifact' 任务之后存在,它们被复制,只是不在正确的文件夹($web root)中。有人有想法吗?

谢谢

通常情况下,不指定Blob Prefix,默认将指定文件夹中的内容复制到容器根目录。

我这边测试过,效果很好:

您可以检查您的发布源目录是否包含名为prod的文件夹,并将此文件夹复制到容器中。

另外,我这里使用的AzureFileCopy@3版本,大家可以尝试使用V3 azure copy file task