Udostępnij za pośrednictwem


CopyFiles@2 — zadanie kopiowania 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.

Dane wejściowe

folderu źródłowego SourceFolder -
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 zostało określone $(Build.SourcesDirectory).

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


Contents - zawartość
string. To jest wymagane. Wartość domyślna: **.

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

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.

Zawijanie znaków specjalnych w [] może służyć do ucieczki znaków globu literału w nazwie pliku. Na przykład nazwę pliku literału hello[a-z] można stosować jako hello[[]a-z]. Aby uzyskać więcej informacji, zobacz Odwołania do wzorców dopasowywania plików.

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


folder docelowy TargetFolder -
string. To jest 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ępowanie
boolean. Wartość domyślna: false.

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


flattenFolders - folderów spłaszczanych
boolean. Wartość domyślna: false.

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


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

Zachowuje sygnaturę czasową pliku docelowego przy użyciu oryginalnego pliku źródłowego.


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

Określa liczbę ponownych prób skopiowania pliku. 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 dwiema ponownymi 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, które wystąpiły podczas tworzenia folderu docelowego. Ten ciąg jest przydatny do unikania 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ń podrzędnych. Aby uzyskać więcej informacji, zobacz opcje kontroli i typowe właściwości zadań.

Zmienne wyjściowe

Żaden.

Uwagi

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

  • Jeśli Overwrite tak jest false , a dopasowany plik już istnieje w folderze docelowym, zadanie nie zgłosi błędu, ale zarejestruje, że plik już istnieje i pominie go.
  • Jeśli Overwrite tak jest true , a dopasowany plik już istnieje w folderze docelowym, dopasowany plik zostanie nadpisany.

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 / Notatka

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

Na karcie $(BuildConfiguration) Zmienne jest ustawiona na 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 treści

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

Wyniki

Te pliki są kopiowane do katalogu pomostowego:

`-- 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, klasyczna kompilacja
Działa na Agent, grupa wdrożeniowa
Wymagania Żaden
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 ustawiane To zadanie ma uprawnienia do ustawić następujące zmienne: Ustawienie zmiennych jest wyłączone
Wersja agenta 2.182.1 lub nowsza
Kategoria zadań Użyteczność
Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja
Działa na Agent, grupa wdrożeniowa
Wymagania Żaden
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
ograniczenia poleceń Jakikolwiek
zmienne ustawiane Jakikolwiek
Wersja agenta 1.91.0 lub nowsza
Kategoria zadań Użyteczność

Zobacz także