【问题标题】:Copy a file in Azure Devops Artifacts在 Azure Devops Artifacts 中复制文件
【发布时间】:2021-03-16 22:46:05
【问题描述】:

在一个阶段,我正在使用 Azure CLI 将(win、linux 和 mac 代理)的工件下载到我的 Blob 存储中,下载后我在 Azure Blob 容器中拥有类似这样的文件夹结构。在 bin 文件夹中,我有文件和文件夹以及一些 dll。

MyBlobContainer --> Project_x64-linux-->bin
               ---> Project_x64-mac--> bin
               ---> project_x4-win--> bin

通过 YAML AZure Cli 任务中的此内联脚本完成下载:

 inlineScript: az storage blob upload-batch -d "$(BlobContainer)/ProjectName/$(DeploymentVersion)/Project_x64-$(osSuffix)" --account-name "myStorageAccount" -s "$(Build.SourcesDirectory)/Project_x64-$(osSuffix)"
    

在我通过调用 Get-ChildItem $(Build.SourcesDirectory) -Recurse 调试我的 Build.SourceDirectory 的同一阶段

我得到了所有的子目录和文件。我在调试中看到的文件之一是在这个目录中:

Directory: D:\a\1\s\packages\KinectSDK\windows-desktop\amd64\release\bin

-a----        3/16/2021   8:57 PM       24038776 onnxruntime.dll  

我有兴趣将这个 dll 复制到我上面下载的工件的 bin 文件夹中。我该怎么做?

【问题讨论】:

    标签: azure-devops yaml


    【解决方案1】:

    您可以在 Azure Cli 任务前添加 Copy files task 以将 onnxruntime.dll 文件复制到 artfacts 的 bin 文件夹中。见下文:

    steps:
    - task: CopyFiles@2
      displayName: 'Copy Files to: $(Build.SourcesDirectory)/Project_x64-$(osSuffix)/bin'
      inputs:
        SourceFolder: '$(Build.SourcesDirectory)/packages/KinectSDK/windows-desktop/amd64/release/bin'
        Contents: onnxruntime.dll
        TargetFolder: '$(Build.SourcesDirectory)/Project_x64-$(osSuffix)/bin'
        flattenFolders: true
      condition: eq(variables['osSuffix'], 'win')
    

    您还可以使用Copy-Item 命令在 Azure CLI 任务中复制 onnxruntime.dll 文件。见下文:

    - task: AzureCLI@2
      displayName: 'Azure CLI '
      inputs:
        azureSubscription: 'Subscription-Azure'
        scriptType: ps
        scriptLocation: inlineScript
        inlineScript: |
        
         Copy-Item "$(Build.SourcesDirectory)/packages/KinectSDK/windows-desktop/amd64/release/bin/onnxruntime.dll" -Destination "$(Build.SourcesDirectory)/Project_x64-$(osSuffix)/bin"
          
         az storage blob upload-batch ....
    

    您还可以使用 Az Cli 命令将onnxruntime.dll 直接复制到您的 Blob 存储中。

    AzCopy 命令:

    azcopy copy '$(Build.SourcesDirectory)/packages/KinectSDK/windows-desktop/amd64/release/bin/onnxruntime.dll' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/ProjectName/$(DeploymentVersion)/Project_x64-$(osSuffix)/bin/onnxruntime.dll'
    

    【讨论】:

    • 我认为复制文件不适用于 linux 和 mac 代理..不是它_
    • @ZZZSharePoint 我已经测试过了。复制文件任务也可以完美地与 linux 和 mac 代理一起使用。
    • 它在 linux 和 mac 上失败,说文件不存在,而在 windows 上它可以工作。它给出错误为“未找到 SourceFolder:/Users/runner/work/1/s/packages/KinectSDK/windows-desktop/amd64/release/bin”
    • @ZZZSharePoint 您能否在 Linux 和 Mac 代理中调试您的 Build.SourceDirectory,以检查文件夹 s/packages/KinectSDK/windows-desktop/amd64/release/bin 中是否仍然存在 onnxruntime.dll。该文件可能存在于 Linux 和 Mac 代理的不同文件夹中?
    • 我没有得到其他文件夹但是如果我只想在 osSuffix 是 win 而不是 linux 和 mac 时复制怎么办。我怎样才能在这里输入条件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多