Udostępnij przez


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.

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ść

Zobacz także