Udostępnij za pośrednictwem


AzureFileCopy@5 — zadanie kopiowania plików platformy Azure w wersji 5

Kopiowanie plików do Azure Blob Storage lub maszyn wirtualnych.

Składnia

# Azure file copy v5
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@5
  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). 
    #sasTokenTimeOutInMinutes: '240' # string. Optional. Use when Destination = AzureBlob. SAS Token Expiration Period In Minutes. Default: 240.
    #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. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.

Dane wejściowe

SourcePath - Źródła
string. Wymagane.

Lokalizacja plików źródłowych. Obsługiwane wartości obejmują potoki YAML i klasyczne wersje obsługują wstępnie zdefiniowane zmienne systemowe , takie jak Build.Repository.LocalPath.

Zmienne wydania są obsługiwane tylko w wersjach klasycznych. Symbol wieloznaczny (*) jest obsługiwany w dowolnym miejscu w ścieżce pliku lub nazwie pliku.


azureSubscription - Subskrypcja platformy Azure
Alias wejściowy: ConnectedServiceNameARM. string. Wymagane.

Określ nazwę połączenia usługi Azure Resource Manager skonfigurowanego dla subskrypcji, w której znajduje się docelowa usługa platformy Azure, maszyna wirtualna lub konto magazynu. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Resource Manager.


Destination - Typ miejsca docelowego
string. Wymagane. Dozwolone wartości: AzureBlob (Azure Blob), AzureVMs (Maszyny wirtualne platformy Azure).

Określ typ miejsca docelowego.


storage - Konto magazynu menedżera zasobów
Alias wejściowy: StorageAccountRM. string. Wymagane.

Określ istniejące wcześniej konto magazynu usługi ARM. Jest to konto magazynu używane jako pośrednik do kopiowania plików na maszyny wirtualne platformy Azure.


ContainerName - Nazwa kontenera
string. Wymagane, gdy Destination = AzureBlob.

Nazwa kontenera, do którego są kopiowane pliki. Jeśli określony kontener nie istnieje na koncie magazynu, zostanie utworzony.

Aby utworzyć katalog wirtualny wewnątrz kontenera, użyj danych wejściowych prefiksu obiektu blob. Na przykład dla lokalizacji https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/docelowej określ nazwę mycontainer kontenera i prefiks obiektu blob: vd1/vd2.


BlobPrefix - Prefiks obiektów blob
string. Opcjonalny. Użyj polecenia , gdy Destination = AzureBlob.

Określ prefiks docelowego katalogu wirtualnego w kontenerze obiektów blob platformy Azure. Ma to zastosowanie, gdy element SourcePath zawiera symbol wieloznaczny, który może być zgodny z wieloma elementami.

Przykład: numer kompilacji można dołączyć do prefiksu plików ze wszystkich obiektów blob z tym samym numerem kompilacji.

Przykład: Jeśli określisz prefiks myvd1obiektu blob, w kontenerze zostanie utworzony katalog wirtualny. Pliki są kopiowane ze źródła do .https://myaccount.blob.core.windows.net/mycontainer/myvd1/

W przypadku, SourcePath gdy element jest pojedynczym elementem bez symbolu wieloznacznych, ten prefiks obiektu blob będzie działać jako nazwa docelowego obiektu blob.


resourceGroup - Grupa zasobów
Alias wejściowy: EnvironmentNameRM. string. Wymagane, gdy Destination = AzureVMs.

Określ nazwę docelowej grupy zasobów, do której będą kopiowane pliki.


ResourceFilteringMethod - Wybierz maszyny według
string. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs. Dozwolone wartości: machineNames (nazwy maszyn), tags. Wartość domyślna: machineNames.

Określ nazwę lub tag hosta maszyny wirtualnej, który identyfikuje podzbiór maszyn wirtualnych w grupie zasobów. Tagi są obsługiwane tylko dla zasobów utworzonych za pośrednictwem usługi Azure Resource Manager.


MachineNames - Kryteria filtrowania
string. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs.

Podaj listę nazw maszyn wirtualnych lub nazw tagów, które identyfikują maszyny wirtualne, których dotyczy zadanie podrzędne. Prawidłowe kryteria filtrowania obejmują:

  • Nazwa grupy zasobów platformy Azure.
  • Zmienna wyjściowa z poprzedniego zadania.
  • Rozdzielana przecinkami lista nazw tagów lub nazw maszyn wirtualnych.
  • Formatuj nazwy maszyn wirtualnych przy użyciu rozdzielanej przecinkami listy nazw FQDN lub adresów IP.
  • Formatuj nazwy tagów filtru jako {TagName}:{Value} Przykład: Role:DB;OS:Win8.1

vmsAdminUserName - logowanie Administracja
string. Wymagane, gdy Destination = AzureVMs.

Podaj nazwę użytkownika konta z uprawnieniami administracyjnymi na wszystkich docelowych maszynach wirtualnych.

  • Obsługiwane formaty to: username, , machine-name\usernamedomain\usernamei .\username.
  • Formaty nazwy UPN, w tym username@domain.com wbudowane konta systemowe, takie jak NT Authority\System , nie są obsługiwane.

vmsAdminPassword - Hasło
string. Wymagane, gdy Destination = AzureVMs.

Podaj hasło dla parametru Admin Login .

Aby znaleźć zmienną, znajdź Admin Login parametr . Wybierz ikonę kłódki dla zmiennej zdefiniowanej na Variables karcie, aby chronić wartość i wstawić tutaj nazwę zmiennej.


TargetPath - Folder docelowy
string. Wymagane, gdy Destination = AzureVMs.

Określ ścieżkę do folderu na maszynach wirtualnych platformy Azure, do których będą kopiowane pliki.

Obsługiwane są zmienne środowiskowe, takie jak $env:windir i $env:systemroot . Przykłady: $env:windir\FabrikamFiber\Web i c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Opcjonalne argumenty (na potrzeby przekazywania plików do obiektu blob)
string.

Podaj dodatkowe argumenty do AzCopy.exe użycia podczas przekazywania do obiektu blob i pobierania do maszyn wirtualnych. Aby uzyskać szczegółowe informacje, zobacz Transfer danych za pomocą narzędzia azCopy Command-Line .

W przypadku kont usługi Premium Storage, które obsługują tylko stronicowe obiekty blob platformy Azure, są używane --blob-type=PageBlob jako dodatkowy argument.

Domyślne argumenty obejmują --log-level=INFO (wartość domyślna) i --recursive (jeśli nazwa kontenera nie $rootjest ).


AdditionalArgumentsForVMCopy - Opcjonalne argumenty (do pobierania plików na maszynę wirtualną)
string. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs.

Podaj dodatkowe argumenty AzCopy.exe , które zostaną zastosowane podczas pobierania do maszyn wirtualnych, --check-length=truetakich jak .

Jeśli nie określono opcjonalnych argumentów, domyślnie są dodawane następujące elementy:

  • --log-level=INFO
  • --log-level=DEBUG (Jeśli potok jest uruchomiony w zestawie trybu debugowania)
  • --recursive

sasTokenTimeOutInMinutes - Okres wygaśnięcia tokenu SYGNATURy dostępu współdzielonego w minutach
string. Opcjonalny. Użyj polecenia , gdy Destination = AzureBlob. Wartość domyślna: 240.

Określ czas w minutach, po którym token SAS dla kontenera wygaśnie. Domyślnie ten token wygasa po 4 godzinach.


enableCopyPrerequisites - Włączanie wymagań wstępnych kopiowania
boolean. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs. Wartość domyślna: false.

Po włączeniu tej opcji jest używany certyfikat z podpisem własnym do konfigurowania odbiornika zdalnego zarządzania systemem Windows (WinRM) za pośrednictwem protokołu HTTPS na porcie 5986. Ta konfiguracja jest wymagana do wykonywania operacji kopiowania na maszynach wirtualnych platformy Azure. Dotyczy tylko maszyn wirtualnych usługi ARM.

  • Jeśli docelowe maszyny wirtualne są dostępne za pośrednictwem modułu równoważenia obciążenia, skonfiguruj regułę nat dla ruchu przychodzącego, aby zezwolić na dostęp na porcie 5986.
  • Jeśli docelowe maszyny wirtualne są skojarzone z sieciową grupą zabezpieczeń, skonfiguruj regułę zabezpieczeń dla ruchu przychodzącego, aby zezwolić na dostęp na porcie 5986.

CopyFilesInParallel - Kopiowanie równolegle
boolean. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs. Wartość domyślna: true.

Określ true , aby skopiować pliki równolegle do docelowych maszyn wirtualnych.


CleanTargetBeforeCopy - Czysty obiekt docelowy
boolean. Wartość domyślna: false.

Określ true , aby wyczyścić folder docelowy przed skopiowaniem plików.


skipCACheck - Certyfikat testowy
boolean. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs. Wartość domyślna: true.

Usługa WinRM wymaga certyfikatu transferu HTTPS podczas kopiowania plików z pośredniego obiektu blob magazynu do maszyn wirtualnych platformy Azure.

Jeśli używasz certyfikatu z podpisem własnym, określ true , aby uniemożliwić proces weryfikacji certyfikatu z zaufanym urzędem certyfikacji.


Opcje sterowania zadania

Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań. Aby uzyskać więcej informacji, zobacz Opcje sterowania i typowe właściwości zadań.

Zmienne wyjściowe

To zadanie definiuje następujące zmienne wyjściowe, które można używać w krokach podrzędnych, zadaniach i etapach.

StorageContainerUri
Identyfikator URI kontenera, do którego zostały skopiowane pliki. Prawidłowe tylko wtedy, gdy wybrane miejsce docelowe to Azure Blob.

StorageContainerSasToken
SasToken dla kontenera, do którego zostały skopiowane pliki. Prawidłowe tylko wtedy, gdy wybrane miejsce docelowe to Azure Blob.

Uwagi

AzureFileCopy@5 obsługuje AzCopy.exe w wersji 10.12.2.

Uwaga

Możesz zablokować użycie kluczy konta magazynu i tokenów SAS na kontach magazynu. W takich sytuacjach nie można użyć zadania AzureFileCopy@5 , które opiera się na tokenach SAS.

Zadanie AzureFileCopy@6 używa kontroli dostępu opartej na rolach platformy Azure do uzyskiwania dostępu do magazynu obiektów blob. Wymaga to tożsamości połączenia usługi używanego do posiadania odpowiedniej roli RBAC, np. współautora danych obiektu blob usługi Storage. Zobacz Przypisywanie roli platformy Azure w celu uzyskania dostępu do danych obiektów blob.

Zadanie AzureFileCopy@6 obsługuje również połączenia usług korzystające z federacji tożsamości obciążenia.

Uwaga

To zadanie jest napisane w programie PowerShell i działa tylko w przypadku uruchamiania na agentach systemu Windows. Jeśli potoki wymagają agentów systemu Linux i muszą skopiować pliki na konto usługi Azure Storage, rozważ uruchomienie az storage blob poleceń w zadaniu interfejsu wiersza polecenia platformy Azure jako alternatywę.

Zadanie służy do kopiowania plików aplikacji i innych artefaktów wymaganych do zainstalowania aplikacji; takich jak skrypty programu PowerShell, moduły PowerShell-DSC i inne.

Gdy obiektem docelowym są maszyny wirtualne platformy Azure, pliki są najpierw kopiowane do automatycznie wygenerowanego kontenera obiektów blob platformy Azure, a następnie pobierane do maszyn wirtualnych. Kontener zostanie usunięty po pomyślnym skopiowaniu plików do maszyn wirtualnych.

Zadanie używa narzędzia AzCopy, narzędzia wiersza polecenia utworzonego do szybkiego kopiowania danych z i do kont usługi Azure Storage. W wersji 5 zadania kopiowania plików platformy Azure jest używane narzędzie AzCopy V10.

Kopiowanie plików platformy Azure w wersji 3 i niższej spowoduje pobranie klucza usługi Azure Storage w celu zapewnienia dostępu. Kopiowanie plików platformy Azure w wersji 4 lub nowszej wymaga autoryzacji usługi Azure Storage za pośrednictwem Tożsamość Microsoft Entra lub tokenu SAS. Dostępne są uwierzytelnianie przy użyciu jednostki usługi i tożsamości zarządzanej. W przypadku tożsamości zarządzanych obsługiwana jest tylko tożsamość zarządzana w całej systemie. Poziom wymaganej autoryzacji jest wyświetlany w opcji 1: Użyj Tożsamość Microsoft Entra.

Aby dynamicznie wdrażać grupy zasobów platformy Azure zawierające maszyny wirtualne, użyj zadania Wdrażania grupy zasobów platformy Azure . To zadanie zawiera przykładowy szablon, który może wykonywać wymagane operacje, aby skonfigurować protokół HTTPS usługi WinRM na maszynach wirtualnych, otworzyć port 5986 w zaporze i zainstalować certyfikat testowy.

Uwaga

Jeśli wdrażasz w usłudze Azure Static Websites jako kontener w usłudze Blob Storage, użyj wersji 2 lub nowszej zadania, aby zachować nazwę kontenera $web .

Jakie są Azure PowerShell wymagania wstępne dotyczące korzystania z tego zadania?

Zadanie wymaga zainstalowania Azure PowerShell na maszynie z uruchomionym agentem automatyzacji. Zalecana wersja to 1.0.2, ale zadanie będzie działać z wersją 0.9.8 lub nowszą. Aby to uzyskać, możesz użyć instalatora Azure PowerShell w wersji 1.0.2.

Jakie są wymagania wstępne usługi WinRM dla tego zadania?

Zadanie używa protokołu HTTPS zdalnego zarządzania systemem Windows (WinRM) do kopiowania plików z kontenera obiektów blob magazynu do maszyn wirtualnych platformy Azure. Wymaga to skonfigurowania usługi Https usługi WinRM na maszynach wirtualnych i zainstalowania odpowiedniego certyfikatu.

Konfigurowanie usługi WinRM po utworzeniu maszyny wirtualnej

Jeśli maszyny wirtualne zostały utworzone bez otwierania portów HTTPS usługi WinRM, wykonaj następujące czynności:

  1. Skonfiguruj regułę dostępu przychodzącego, aby zezwolić na protokół HTTPS na porcie 5986 każdej maszyny wirtualnej.
  2. Wyłącz ograniczenia zdalne kontroli dostępu użytkownika.
  3. Określ poświadczenia dla zadania, aby uzyskać dostęp do maszyn wirtualnych przy użyciu logowania na poziomie administratora w prostej nazwie użytkownika formularza bez żadnej części domeny.
  4. Zainstaluj certyfikat na maszynie z uruchomionym agentem automatyzacji.
  5. Jeśli używasz certyfikatu z podpisem własnym, ustaw parametr Test Certificate zadania.

Jakiego typu połączenie z usługą należy wybrać?

  • W przypadku kont magazynu usługi Azure Resource Manager i maszyn wirtualnych platformy Azure Resource Manager użyj typu połączenia usługi Azure Resource Manager. Zobacz Automatyzowanie wdrażania grupy zasobów platformy Azure przy użyciu jednostki usługi.

  • Podczas korzystania z typu połączenia usługi Azure Resource Manager zadanie automatycznie filtruje odpowiednie nowsze konta magazynu Resource Manager platformy Azure i inne pola. Na przykład grupa zasobów lub usługa w chmurze oraz maszyny wirtualne.

Jak mogę utworzyć konto szkolne lub służbowe do użycia z tym zadaniem?

Odpowiednie konto można utworzyć do użycia w połączeniu z usługą:

  1. Użyj Azure Portal, aby utworzyć nowe konto użytkownika w usłudze Azure Active Directory.
  2. Dodaj konto użytkownika usługi Azure Active Directory do grupy współadministratorów w subskrypcji platformy Azure.
  3. Zaloguj się do Azure Portal przy użyciu tego konta użytkownika i zmień hasło.
  4. Użyj poświadczeń tego konta w połączeniu usługi. Wdrożenia są następnie przetwarzane przy użyciu tego konta.

Jeśli zadanie zakończy się niepowodzeniem, czy kopiowanie zostanie wznowione?

Ponieważ program AzCopy w wersji 10 nie obsługuje plików dziennika, zadanie nie może wznowić kopiowania. Aby skopiować wszystkie pliki, należy ponownie uruchomić zadanie.

Czy pliki dziennika i pliki planu są czyszczone po skopiowaniu?

Pliki dziennika i planu nie są usuwane przez zadanie. Aby jawnie wyczyścić pliki, dodaj krok interfejsu wiersza polecenia w przepływie pracy przy użyciu polecenia azcopy jobs clean.

Jak mogę użyć zadania kopiowania plików platformy Azure, aby skopiować plik na maszynę wirtualną platformy Azure, która nie ma publicznego adresu IP?

Upewnij się, że używasz wersji 5 zadania kopiowania plików platformy Azure. Jeśli zadanie zakończy się niepowodzeniem, możesz dodać krok kompilacji, aby uruchomić polecenie azcopy cp "source-file-path" "destination-file-path" w celu zastąpienia wartości źródłowych i docelowych.

Błąd zabroniony: "AzCopy.exe została zakończona z kodem zakończenia bez zera podczas przekazywania plików do magazynu obiektów blob" podczas korzystania z zadania kopiowania plików platformy Azure

Hostowani agenci są przypisywani losowo za każdym razem, gdy kompilacja zostanie wyzwolona, adresy IP agenta będą różne w każdym uruchomieniu. Jeśli te adresy IP nie znajdują się na liście dozwolonych adresów IP, komunikacja między usługą Azure DevOps a kontem magazynu zakończy się niepowodzeniem. W takich scenariuszach wykonaj kroki opisane:

  1. Dodaj krok kompilacji przy użyciu interfejsu wiersza polecenia platformy Azure, aby zidentyfikować adres IP agenta Microsoft Hosted Build w czasie wykonywania. Spowoduje to dodanie adresu IP do reguły sieci na koncie usługi Azure Storage.
  2. Uruchom krok kompilacji dla konta usługi Azure Storage.
  3. Dodaj kolejny krok kompilacji przy użyciu interfejsu wiersza polecenia platformy Azure, aby usunąć adres IP agenta kompilacji z reguły sieciowej konta usługi Azure Storage.

Przykłady

trigger:
- main

pool:
  vmImage: windows-latest

steps:
- task: AzureFileCopy@5
  inputs:
    SourcePath: 'Readme.md'
    azureSubscription: 'MyAzureSubscription'
    Destination: 'AzureBlob'
    storage: 'MyStorage'
    ContainerName: 'MyContainerName'
  name: AzureFileCopy
  
- script: | 
    echo $(AzureFileCopy.StorageContainerUri)
    echo $(AzureFileCopy.StorageContainerSasToken)

Wymagania

Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja, wersja klasyczna
Działa w Agent, DeploymentGroup
Wymagania Agenci hostowani samodzielnie muszą mieć możliwości zgodne z następującymi wymaganiami dotyczącymi uruchamiania zadań korzystających z tego zadania: azureps
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
Ograniczenia poleceń Dowolne
Zmienne ustawialne Dowolne
Wersja agenta 1.103.0 lub nowsza
Kategoria zadania Wdrażanie