共用方式為


AzureFileCopy@3 - Azure 檔案複製 v3 工作

將檔案複製到 Azure Blob 記憶體或虛擬機。

此工作已被取代,因為此版本的 AzureFileCopy 工作使用的是已停用的 AzCopy 版本。 使用最新版的 AzureFileCopy 工作。 請參閱 AzCopy 移轉指南,以瞭解 v8 至 v10

備註

此工作不支援使用工作流程身分識別同盟 Azure Resource Manager 驗證。

將檔案複製到 Azure Blob 記憶體或虛擬機。

備註

此工作不支援使用工作流程身分識別同盟 Azure Resource Manager 驗證。

語法

# Azure file copy v3
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@3
  inputs:
    SourcePath: # string. Required. Source. 
    azureSubscription: # string. Alias: ConnectedServiceNameARM. Required. Azure Subscription. 
    Destination: # 'AzureBlob' | 'AzureVMs'. Required. Destination Type. 
    storage: # string. Alias: StorageAccountRM. Required. RM Storage Account. 
    #ContainerName: # string. Required when Destination = AzureBlob. Container Name. 
    #BlobPrefix: # string. Optional. Use when Destination = AzureBlob. Blob Prefix. 
    #resourceGroup: # string. Alias: EnvironmentNameRM. Required when Destination = AzureVMs. Resource Group. 
    #ResourceFilteringMethod: 'machineNames' # 'machineNames' | 'tags'. Optional. Use when Destination = AzureVMs. Select Machines By. Default: machineNames.
    #MachineNames: # string. Optional. Use when Destination = AzureVMs. Filter Criteria. 
    #vmsAdminUserName: # string. Required when Destination = AzureVMs. Admin Login. 
    #vmsAdminPassword: # string. Required when Destination = AzureVMs. Password. 
    #TargetPath: # string. Required when Destination = AzureVMs. Destination Folder. 
    #AdditionalArgumentsForBlobCopy: # string. Optional Arguments (for uploading files to blob). 
    #AdditionalArgumentsForVMCopy: # string. Optional. Use when Destination = AzureVMs. Optional Arguments (for downloading files to VM). 
    #enableCopyPrerequisites: false # boolean. Optional. Use when Destination = AzureVMs. Enable Copy Prerequisites. Default: false.
    #CopyFilesInParallel: true # boolean. Optional. Use when Destination = AzureVMs. Copy in Parallel. Default: true.
    #CleanTargetBeforeCopy: false # boolean. Optional. Use when Destination = AzureVMs. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.
  # Output
    #outputStorageUri: # string. Storage Container URI. 
    #outputStorageContainerSasToken: # string. Storage Container SAS Token. 
    #sasTokenTimeOutInMinutes: # string. SAS Token Expiration Period In Minutes.

輸入

SourcePath - 來源
string。 必須的。

指定源資料夾的絕對路徑,或本機計算機上的檔案,或 UNC 共用。 您可以使用預先定義的系統變數,例如 $(Build.Repository.LocalPath)。 不支援包含通配符的名稱,例如 *.zip。 您指定的值或表示式應該會傳回單一資料夾或檔案名。


azureSubscription - Azure 訂用帳戶
輸入別名ConnectedServiceNameARMstring。 必須的。

指定 Azure Resource Manager 服務連線的名稱, 針對目標 Azure 服務、虛擬機或記憶體帳戶所在的訂用帳戶進行設定。 如需詳細資訊,請參閱 Azure Resource Manager 概觀


Destination - 目的地類型
string。 必須的。 允許的值:AzureBlob(Azure Blob)、AzureVMs(Azure VM)。

指定目的地類型。


storage - RM 記憶體帳戶
輸入別名StorageAccountRMstring。 必須的。

指定預先存在的ARM記憶體帳戶。 這是作為將檔案複製到 Azure VM 的媒介使用的記憶體帳戶。


ContainerName - 容器名稱
stringDestination = AzureBlob時為必要項。

要在其中複製檔案的容器名稱。 如果指定的容器不存在於記憶體帳戶中,則會建立它。

若要在容器內建立虛擬目錄,請使用 Blob 前置詞輸入。 例如,針對目標位置 https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/,指定容器名稱 mycontainer 和 blob 前置詞:vd1/vd2


BlobPrefix - Blob 前置詞
string。 選擇性。 Destination = AzureBlob時使用 。

指定可用來篩選檔案的前置詞。

範例:您可以附加組建編號,以篩選所有具有相同組建編號的 Blob 檔案。

範例:如果您指定 blob 前置詞 myvd1,則會在容器內建立虛擬目錄。 檔案會從來源複製到 https://myaccount.blob.core.windows.net/mycontainer/myvd1/


resourceGroup - 資源群組
輸入別名EnvironmentNameRMstringDestination = AzureVMs時為必要項。

指定將複製檔案的目標資源群組名稱。


ResourceFilteringMethod - 選取機器
string。 選擇性。 Destination = AzureVMs時使用 。 允許的值:machineNames (機器名稱),tags。 預設值:machineNames

指定 VM 主機名稱或標記,以識別資源群組中的 VM 子集。 標籤 僅支援透過 Azure Resource Manager 建立的資源。


MachineNames - 篩選準則
string。 選擇性。 Destination = AzureVMs時使用 。

提供 VM 名稱或標籤名稱的清單,以識別工作的目標 VM。 有效的篩選準則包括:

  • Azure 資源群組的名稱
  • 上一個工作的輸出變數。
  • 以逗號分隔的標籤名稱或 VM 名稱清單。
  • 使用以逗號分隔的 FQDN 或 IP 位址清單格式化 VM 名稱。
  • 將篩選的標籤名稱格式化為 {TagName}:{Value}。 範例:Role:DB;OS:Win8.1ffwebffdb或標籤,例如 Role:DBWebOS:Win8.1

注意:卷標的有效分隔符包括 、(逗號)、:(號)和 ;(semicolon)。 提供多個標記時,工作只會在包含指定標籤的 VM 中執行。 根據預設,工作會在所有 VM 中執行。


vmsAdminUserName - 系統管理員登入
stringDestination = AzureVMs時為必要項。

為所有目標 VM 提供具有系統管理許可權的帳戶用戶名稱。

  • 支援的格式包括:usernamedomain\usernamemachine-name\username.\username
  • 不支援 UPN 格式,包括 [email protected] 和內建系統帳戶,例如 NT Authority\System

vmsAdminPassword - 密碼
stringDestination = AzureVMs時為必要項。

提供 VM 的系統管理員密碼。

有效的輸入包含建置或發行管線中定義的變數,例如 $(passwordVariable)。 若要保護密碼,請將密碼標示為 secret


TargetPath - 目的地資料夾
stringDestination = AzureVMs時為必要項。

指定將複製檔案之 Azure VM 中資料夾的路徑。

支援 $env:windir$env:systemroot 等環境變數。 範例:$env:windir\FabrikamFiber\Webc:\FabrikamFiber


AdditionalArgumentsForBlobCopy - 選擇性自變數
string

提供其他自變數給上傳至 Blob 時可套用的 AzCopy.exe,例如 /NC:10

如果未指定選擇性自變數,預設會新增下列自變數。

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S - 當容器名稱未 $root時新增。
  • 當指定的記憶體帳戶是進階帳戶時,/BlobType:page -Added。
  • /Pattern - 當來源路徑為檔案時新增。 隨附於任何其他指定的選擇性自變數。

AdditionalArgumentsForVMCopy - 選擇性自變數 (用於將檔案下載至 VM)
string。 選擇性。 Destination = AzureVMs時使用 。

將其他自變數提供給 AzCopy.exe,這些自變數可在下載至 vm 時套用,例如 /NC:10

如果未指定選擇性自變數,預設會新增下列專案。

  • /Y
  • /S
  • /Z
  • /V

enableCopyPrerequisites - 啟用複製必要條件
boolean。 選擇性。 Destination = AzureVMs時使用 。 預設值:false

啟用時,使用自我簽署憑證在埠 5986 上設定 Windows 遠端管理 (WinRM) 接聽程式,而不是 HTTPS 通訊協定。 在 Azure VM 上執行複製作業的必要專案。 如果目標 VM 使用負載平衡器,請設定目標埠 (5986) 的輸入 NAT 規則。 僅適用於 ARM VM。 在與網路安全組相關聯的目標 VM 上,設定輸入安全性規則以允許在埠 5986 上存取。


平行複製 CopyFilesInParallel -
boolean。 選擇性。 Destination = AzureVMs時使用 。 預設值:true

指定 true 以平行的方式將檔案複製到目標 VM。 使用此值可減少執行動作的整體時間。


CleanTargetBeforeCopy - 清除目標
boolean。 選擇性。 Destination = AzureVMs時使用 。 預設值:false

將此值設定為 true 會先清除目的地資料夾,再執行複製動作。


skipCACheck - 測試憑證
boolean。 選擇性。 Destination = AzureVMs時使用 。 預設值:true

在透過 HTTPS 連線之前,預設值不會驗證伺服器證書是否由受信任的 CA 簽署。


outputStorageUri - 記憶體容器 URI
string

指定用於複製檔案之記憶體容器 URI 的變數名稱。 只有在選取的目的地是 Azure Blob 時才有效。


outputStorageContainerSasToken - 記憶體容器 SAS 令牌
string

指定記憶體容器 SAS 令牌所使用的變數名稱,以存取已複製的檔案。 使用此變數做為後續工作的輸入。 根據預設,SAS 令牌會在 4 小時後到期。


sasTokenTimeOutInMinutes - SAS 令牌到期期間,以分鐘為單位
string

指定SAS令牌到期的分鐘數。 只有在選取的目的地是 Azure Blob 時才有效。


工作控制選項

除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性

輸出變數

沒有。

備註

版本AzureFileCopy@3的新功能

  • AzureFileCopy@3支援 Az Module,並停止支援 Azure 傳統服務端點。

  • 此工作可用來複製安裝應用程式所需的應用程式檔和其他成品,例如PowerShell腳本、PowerShell-DSC 模組等等。

  • 當目標為 Azure VM 時,檔案會先複製到自動產生的 Azure Blob 容器,然後下載到 VM。 成功將檔案複製到 VM 之後,就會刪除容器。

  • 此工作會使用 AzCopy,這是命令行公用程式,其建置用來快速將數據從 Azure 記憶體帳戶複製並複製到 Azure 記憶體帳戶中。 工作第 3 版或更新版本使用 AzCopy V7。

  • 若要動態部署包含虛擬機的 Azure 資源群組,請使用 Azure 資源群組部署 工作。 此工作具有範例範本,可執行必要的作業,以在 VM 上設定 WinRM HTTPS 通訊協定、在防火牆中開啟埠 5986,以及安裝測試憑證。

備註

如果您要將 Azure 靜態網站部署為 Blob 記憶體中的容器,請使用 第 2 版 或更高版本,以保留 $web 容器名稱。

常見問題

使用這項工作的 Azure PowerShell 必要條件為何?

工作需要在執行自動化代理程式的計算機上安裝 Azure PowerShell。 建議的版本是 1.0.2,但工作適用於 0.9.8 版和更新版本。 使用 Azure PowerShell Installer v1.0.2 來取得建議的版本。

此工作的 WinRM 必要條件為何?

此工作會使用 WinRM HTTPS 通訊協定,將檔案從記憶體 Blob 容器複製到 Azure VM。 必須在 VM 上設定 WinRM HTTPS 服務,並安裝適當的憑證。

如果在未開啟 WinRM HTTPS 連接埠的情況下建立 VM,請遵循下列步驟:

  1. 設定輸入存取規則,以允許每個 VM 連接埠 5986 上的 HTTPS。
  2. 停用 UAC 遠端限制。
  3. 指定工作認證,以使用格式化為 用戶名稱的系統管理員層級登入來存取 VM,而不需要任何網域參考。
  4. 在執行自動化代理程式的電腦上安裝憑證。
  5. 為自我簽署憑證設定工作 測試憑證 參數。

我應該選擇哪種類型的服務連線?

下表列出記憶體帳戶類型和相關聯的服務連線。 若要識別記憶體帳戶是以傳統 API 或 Resource Manager API 為基礎,請登入 Azure 入口網站,並搜尋 儲存器帳戶 (傳統)儲存器帳戶

記憶體帳戶類型 TFS/TS 中的 Azure 服務連線
資源管理者 Azure Resource Manager 服務連線
經典 使用學校或公司帳戶搭配憑證型或認證型驗證的 Azure 服務連線
  • 針對 Azure 傳統資源,請使用 Azure 服務連線類型搭配憑證或認證型驗證。 如果您使用認證型驗證,請確定認證適用於 學校或公司帳戶,。 不支援Microsoft [email protected][email protected] 等帳戶。

  • 針對 Azure Resource Manager VM,請使用 Azure Resource Manager 服務連線類型。 如需詳細資訊,請參閱使用服務主體將 Azure 資源群組部署自動化

  • 如果使用 Azure Resource Manager 服務連線類型,或使用憑證型驗證 Azure 服務連線類型,工作會自動篩選適當的傳統記憶體帳戶、較新的 Azure Resource Manager 儲存器帳戶和其他字段。 例如,資源群組或雲端服務,以及虛擬機。

備註

目前 Azure 服務連線類型與認證型驗證不會篩選記憶體、資源群組或雲端服務和虛擬機字段。

如何修正失敗 『403:此要求未獲授權使用此許可權執行此作業」?

當 Azure DevOps 建立並授權服務連線至 Azure 時,它會在訂用帳戶的 Active Directory 中建立應用程式註冊。 此身分識別會自動將 Contributor 角色新增至您選擇授權的資源群組中的所有資源。 為了將 Blob 上傳至記憶體帳戶,Contributor不夠。 您必須手動將 Storage Blob Data Contributor 角色指派給應用程式註冊身分識別

將應用程式身分識別從現有的繼承專案複製為 Contributor,您會在 IAM 窗格中看到,並在 Add role assignment UI 中明確搜尋。 身分識別未列在下拉式清單中,您必須搜尋其標識碼。

如果我的資源群組同時包含傳統和 Resource Manager VM,會發生什麼事?

如果指定的資源群組同時包含 Azure Resource Manager 和傳統 VM,則目標 VM 集合取決於連線類型。

  • 針對憑證型連線和認證型連線,複製作業只會在傳統 VM 上執行。
  • 針對服務主體名稱型連線,複製作業只會在 Resource Manager VM 上執行。

如何建立學校或公司帳戶以用於這項工作?

您可以輕鬆地建立適當的帳戶,以用於服務連線:

  1. 使用 Azure 入口網站在 Azure Active Directory 中建立新的用戶帳戶。
  2. 將 Azure Active Directory 使用者帳戶新增至 Azure 訂用帳戶中的共同管理員群組。
  3. 使用此用戶帳戶登入 Azure 入口網站,並變更密碼。
  4. 在服務連線中使用此帳戶的新認證。 部署將會使用此帳戶進行處理。

範例

# Example: Upload files from Pipeline staging directory to blob storage.
- task: AzureFileCopy@3
  displayName: 'Example Step Name'
  inputs:
    sourcePath: '$(Build.ArtifactStagingDirectory)/BlobsToUpload'
    additionalArgumentsForBlobCopy: |
      '/Y' # Supresses all AZCopy Confirmations. Used here to allow overwrites
      '/Pattern:*' # Pattern of files to copy.
      '/S' # Recursive Copy
    azureSubscription: 'Subscription Name'
    destination: AzureBlob
    storage: storageaccountname
    containerName: storagecontainername
    blobPrefix: targetdirectoryincontainer

需求

要求 說明
管線類型 YAML、傳統組建、傳統版本
執行於 Agent、DeploymentGroup
需求 自我裝載代理程序必須具有 功能, 符合下列 需求, 才能執行使用此工作的工作: azureps
功能 此工作不符合作業中後續工作的任何需求。
命令限制 任意
Settable 變數 任意
代理程式版本 1.103.0 或更新
工作類別 部署