You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps Pipeline上传文件至Azure Storage失败求助

问题分析与解决方案

核心问题总结

  1. 路径语法错误:SourcePath末尾多了多余的右括号),导致路径无效
  2. 路径指向错误:Deploy阶段错误使用$(Build.SourcesDirectory)(源码目录),而工件下载后实际存储在$(Pipeline.Workspace)
  3. 工件发布范围错误:Build阶段发布了整个$(Pipeline.Workspace),而非仅包含产物的$(build.artifactstagingdirectory)

修正后的配置

1. 修正Build.yml的工件发布步骤

原Publish任务错误发布了整个Pipeline.Workspace,应改为发布$(build.artifactstagingdirectory),确保drop工件仅包含需要部署的内容:

jobs:
- job: 
  pool: 
    vmImage: 'ubuntu-latest'
  steps:
  - task: UseRubyVersion@0
    displayName: Use Ruby >= 2.4

  - task: CopyFiles@2
    displayName: Copy Folder Armtemplates
    inputs:
      SourceFolder: 'armtemplates'
      TargetFolder: '$(build.artifactstagingdirectory)/armtemplates'

  - task: CopyFiles@2
    displayName: Copy Folder Pipelines
    inputs:
      SourceFolder: 'pipelines'
      TargetFolder: '$(build.artifactstagingdirectory)/pipelines'

  - task: CopyFiles@2
    displayName: Copy Folder Scripts
    inputs:
      SourceFolder: 'scripts'
      TargetFolder: '$(build.artifactstagingdirectory)/scripts'

  - task: Bash@3
    inputs:
      filePath: '$(Build.SourcesDirectory)/scripts/InstallJekyll.sh'
      workingDirectory: '$(Build.SourcesDirectory)/editor-docs'
    displayName: Install Jekyll and bundler
      

  - task: CopyFiles@2
    displayName: Copy Folder _site
    inputs:
      SourceFolder: 'editor-docs/_site'
      TargetFolder: '$(build.artifactstagingdirectory)/editor-docs'


  - task: PublishPipelineArtifact@1
    displayName: 'Publish Artifact To Pipeline'
    inputs:
      targetPath: '$(build.artifactstagingdirectory)'  # 修正此处,仅发布产物目录
      artifact: 'drop'
      publishLocation: 'pipeline'

2. 修正Deploy.yml的AzureFileCopy配置

  • 移除SourcePath末尾的多余)
  • 替换$(Build.SourcesDirectory)为$(Pipeline.Workspace)(工件下载后的正确路径)
jobs:
  - job: DeployStaticWebsite
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - download: current
      artifact: drop

    - task: AzureFileCopy@5
      displayName: Upload Web Files To Storage
      inputs:
        SourcePath: '$(Pipeline.Workspace)/drop/editor-docs'  # 修正路径,移除多余括号并指向正确目录
        azureSubscription: TestSubscriptionStorageAccount
        Destination: 'AzureBlob'
        storage: '$(StorageAccountNameStaticWebApp)'
        ContainerName: 'test'

额外验证步骤

若仍有路径问题,可在Deploy阶段添加Bash步骤打印路径,确认目录存在:

- task: Bash@3
  displayName: Verify Artifact Path
  inputs:
    targetType: 'inline'
    script: |
      ls -la $(Pipeline.Workspace)/drop/editor-docs

内容的提问来源于stack exchange,提问作者Sergio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:33:38