CopyFiles@2 — kopiowanie plików w wersji 2

To zadanie służy do kopiowania plików z folderu źródłowego do folderu docelowego przy użyciu wzorców dopasowania. (Wzorce dopasowania będą zgodne tylko ze ścieżkami plików, a nie ścieżkami folderów).

Składnia

# Copy files v2
# Copy files from a source folder to a target folder using patterns matching file paths (not folder paths).
- task: CopyFiles@2
  inputs:
    #SourceFolder: # string. Source Folder. 
    Contents: '**' # string. Required. Contents. Default: **.
    TargetFolder: # string. Required. Target Folder. 
  # Advanced
    #CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
    #OverWrite: false # boolean. Overwrite. Default: false.
    #flattenFolders: false # boolean. Flatten Folders. Default: false.
    #preserveTimestamp: false # boolean. Preserve Target Timestamp. Default: false.
    #retryCount: '0' # string. Retry count to copy the file. Default: 0.
    #delayBetweenRetries: '1000' # string. Delay between two retries. Default: 1000.
    #ignoreMakeDirErrors: false # boolean. Ignore errors during creation of target folder. Default: false.
# Copy files v2
# Copy files from a source folder to a target folder using patterns matching file paths (not folder paths).
- task: CopyFiles@2
  inputs:
    #SourceFolder: # string. Source Folder. 
    Contents: '**' # string. Required. Contents. Default: **.
    TargetFolder: # string. Required. Target Folder. 
  # Advanced
    #CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
    #OverWrite: false # boolean. Overwrite. Default: false.
    #flattenFolders: false # boolean. Flatten Folders. Default: false.
    #preserveTimestamp: false # boolean. Preserve Target Timestamp. Default: false.
# Copy Files v2
# Copy files from source folder to target folder using match patterns (The match patterns will only match file paths, not folder paths).
- task: CopyFiles@2
  inputs:
    #SourceFolder: # string. Source Folder. 
    Contents: '**' # string. Required. Contents. Default: **.
    TargetFolder: # string. Required. Target Folder. 
  # Advanced
    #CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
    #OverWrite: false # boolean. Overwrite. Default: false.
    #flattenFolders: false # boolean. Flatten Folders. Default: false.

Dane wejściowe

SourceFolder - Folder źródłowy
string.

Opcjonalny. Folder zawierający pliki, które chcesz skopiować. Jeśli folder jest pusty, zadanie kopiuje pliki z folderu głównego repozytorium tak, jakby $(Build.SourcesDirectory) zostało określone.

Jeśli kompilacja tworzy artefakty poza katalogiem źródeł, określ $(Agent.BuildDirectory) , aby skopiować pliki z katalogu utworzonego dla potoku.


Contents - Zawartość
string. Wymagane. Wartość domyślna: **.

Ścieżki plików do uwzględnienia w ramach kopii. Ten ciąg obsługuje wiele wierszy wzorców dopasowania.

Na przykład:

  • * kopiuje wszystkie pliki w określonym folderze źródłowym.
  • ** kopiuje wszystkie pliki w określonym folderze źródłowym i wszystkie pliki we wszystkich podfolderach.
  • **\bin\** kopiuje wszystkie pliki cyklicznie z dowolnego folderu bin.

Wzorzec służy do dopasowywania tylko ścieżek plików, a nie ścieżek folderów. Określ wzorce, takie jak **\bin\** zamiast **\bin.

Użyj separatora ścieżki zgodnego z typem agenta kompilacji. Na przykład / należy użyć dla agentów systemu Linux. Poniżej przedstawiono więcej przykładów.


TargetFolder - Folder docelowy
string. Wymagane.

Folder docelowy lub ścieżka UNC, która będzie zawierać skopiowane pliki. Możesz użyć zmiennych. Przykład: $(build.artifactstagingdirectory).


CleanTargetFolder - Wyczyść folder docelowy
boolean. Wartość domyślna: false.

Opcjonalny. Usuwa wszystkie istniejące pliki w folderze docelowym przed procesem kopiowania.


OverWrite - Zastąpić
boolean. Wartość domyślna: false.

Opcjonalny. Zastępuje istniejące pliki w folderze docelowym.


flattenFolders - Spłaszczać foldery
boolean. Wartość domyślna: false.

Opcjonalny. Spłaszcza strukturę folderów i kopiuje wszystkie pliki do określonego folderu docelowego.


preserveTimestamp - Zachowaj znacznik czasu docelowego
boolean. Wartość domyślna: false.

Zachowuje znacznik czasu pliku docelowego przy użyciu oryginalnego pliku źródłowego.


retryCount - Liczba ponownych prób w celu skopiowania pliku
string. Wartość domyślna: 0.

Określa liczbę ponownych prób, aby skopiować plik. Ten ciąg jest przydatny w przypadku sporadycznych problemów, takich jak ścieżki docelowe UNC na hoście zdalnym.


delayBetweenRetries - Opóźnienie między dwoma ponownych próbami.
string. Wartość domyślna: 1000.

Określa opóźnienie między dwoma ponownymi próbami. Ten ciąg jest przydatny w przypadku sporadycznych problemów, takich jak ścieżki docelowe UNC na hoście zdalnym.


ignoreMakeDirErrors - Ignoruj błędy podczas tworzenia folderu docelowego.
boolean. Wartość domyślna: false.

Ignoruje błędy występujące podczas tworzenia folderu docelowego. Ten ciąg jest przydatny w celu uniknięcia problemów z równoległym wykonywaniem zadań przez kilku agentów w jednym folderze docelowym.


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

Brak.

Uwagi

Jeśli żadne pliki nie są zgodne, zadanie będzie nadal zgłaszać powodzenie.

  • Jeśli Overwrite plik jest false i plik pasujący już istnieje w folderze docelowym, zadanie nie zgłosi niepowodzenia, ale zarejestruje, że plik już istnieje i pominąć go.
  • Jeśli Overwrite plik jest true i dopasowany plik już istnieje w folderze docelowym, dopasowany plik zostanie zastąpiony.

Przykłady

Kopiowanie pliku do katalogu przejściowego artefaktów i publikowanie

steps:
- task: CopyFiles@2
  inputs:
    contents: '_buildOutput/**'
    targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: $(Build.ArtifactStagingDirectory)
    artifactName: MyBuildOutputs

Kopiowanie plików wykonywalnych i pliku readme

Cel

Chcesz skopiować tylko plik readme i pliki potrzebne do uruchomienia tej aplikacji konsolowej języka C#:

`-- ConsoleApplication1
    |-- ConsoleApplication1.sln
    |-- readme.txt
    `-- ClassLibrary1
        |-- ClassLibrary1.csproj
    `-- ClassLibrary2
        |-- ClassLibrary2.csproj
    `-- ConsoleApplication1
        |-- ConsoleApplication1.csproj

Uwaga

ConsoleApplication1.sln zawiera folder bin z plikami .dll i .exe, zobacz wyniki poniżej, aby zobaczyć, co zostanie przeniesione!

Na karcie $(BuildConfiguration) Zmienne ustawiono wartość release.

Przykład z wieloma wzorcami dopasowania:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\ConsoleApplication1\bin\**\*.exe
      ConsoleApplication1\ConsoleApplication1\bin\**\*.dll
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Przykład z warunkiem OR:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\ConsoleApplication1\bin\**\?(*.exe|*.dll)
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Przykład z warunkiem NOT:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\**\bin\**\!(*.pdb|*.config)
      !ConsoleApplication1\**\ClassLibrary*\**
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Przykład ze zmiennymi w sekcji zawartości

- task: CopyFiles@2
  inputs:
    Contents: '$(Build.Repository.LocalPath)/**' 
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Wyniki

Te pliki są kopiowane do katalogu przejściowego:

`-- ConsoleApplication1
    |-- readme.txt
    `-- ConsoleApplication1
        `-- bin
            `-- Release
                | -- ClassLibrary1.dll
                | -- ClassLibrary2.dll
                | -- ConsoleApplication1.exe

Skopiuj wszystko z katalogu źródłowego z wyjątkiem folderu .git

Przykład z wieloma wzorcami dopasowania:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: |
      **/*
      !.git/**/*
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Wymagania

Wymaganie Opis
Typy potoków YAML, kompilacja klasyczna
Działa na Agent, DeploymentGroup
Wymagania Brak
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
Ograniczenia poleceń To zadanie jest uruchamiane przy użyciu następujących ograniczeń poleceń: ograniczone
Zmienne w formie tabeli settable To zadanie ma uprawnienia do ustawiania następujących zmiennych: Ustawienie zmiennych jest wyłączone
Wersja agenta 2.182.1 lub nowsza
Kategoria zadania Narzędzie
Wymaganie Opis
Typy potoków YAML, kompilacja klasyczna
Działa na Agent, DeploymentGroup
Wymagania Brak
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
Ograniczenia poleceń Dowolne
Zmienne w formie tabeli settable Dowolne
Wersja agenta 1.91.0 lub nowszy
Kategoria zadania Narzędzie

Zobacz też