使用 Azure Devops Pipeline 将文件上传到 Azure 存储。由于错误而无法启动作业:无法扫描路径 \?\D: \s\drop ditor-docs

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

我使用 AzureFileCopy@5 / 6 任务配置了 Azure Devops Pipeline。我正在尝试将 Pipeline.Workspace/drop/folder name/ 上传到存储帐户。

日志让我困惑: 将文件从源路径:'D:\s\drop ditor-docs)'上传到存储帐户:storageaccountname

但在下一行中,我收到错误无法启动作业,因为错误:无法扫描路径 \?\D: \s\drop ditor-docs。

我也使用 Powershell 进行了尝试,但是使用 Powershell,我无法将路径作为参数传递,这导致脚本失败并出现错误“参数...未被识别为 cmdlet”。

如何将工件上传到 Azure 存储? 将虚拟机更改为 Windows 对我没有帮助。

构建.yml

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: '$(Pipeline.Workspace)'
      artifact: 'drop'
      publishLocation: 'pipeline'

Deploy.yml我也尝试过:

SourcePath: '$(Pipeline.Workspace)/drop/editor-docs/)'

jobs:
  - job: DeployStaticWebsite
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - download: current
      artifact: drop

    - task: AzureFileCopy@5
      displayName: Upload Web Files To Storage
      inputs:
        SourcePath: '$(Build.SourcesDirectory)/drop/editor-docs/)'
        azureSubscription: TestSubscriptionStorageAccount
        Destination: 'AzureBlob'
        storage: '$(StorageAccountNameStaticWebApp)'
        ContainerName: 'test'
azure-devops yaml azure-pipelines azure-storage azure-pipelines-yaml
1个回答
0
投票

错误无法启动作业,因为错误:无法扫描路径?\D:\s\drop ditor-docs

根据错误消息和yaml示例,问题的原因是您在AzureFileCopy任务中使用了错误的路径变量。

$(Build.SourcesDirectory)
将指向路径:
D:\a\1\s
。但工件将下载到
$(Pipeline.Workspace)
(
D:\a\1
)。

要解决此问题,您需要使用Azurefilecopy任务中的路径

$(Pipeline.Workspace)/drop/editor-docs/

例如:

- task: AzureFileCopy@5
  displayName: Upload Web Files To Storage
  inputs:
    SourcePath: '$(Pipeline.Workspace)/drop/editor-docs/'
    azureSubscription: TestSubscriptionStorageAccount
    Destination: 'AzureBlob'
    storage: '$(StorageAccountNameStaticWebApp)'
    ContainerName: 'test'

另一方面,如果构建和部署管道是两个独立的管道,则需要在下载工件任务中指定具体的构建信息。

例如:

jobs:
  - job: DeployStaticWebsite
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - task: DownloadPipelineArtifact@2
      inputs:
        buildType: 'specific'
        project: 'projectname'
        definition: 'definitionname'
        buildVersionToDownload: 'latest'
        artifactName: 'drop'
        targetPath: '$(Pipeline.Workspace)'

    - task: AzureFileCopy@5
      displayName: Upload Web Files To Storage
      inputs:
        SourcePath: '$(Build.SourcesDirectory)/drop/editor-docs/'
        azureSubscription: TestSubscriptionStorageAccount
        Destination: 'AzureBlob'
        storage: '$(StorageAccountNameStaticWebApp)'
        ContainerName: 'test'

更详细的信息,您可以参考文档:使用预定义变量

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