Sdílet prostřednictvím


CopyFiles@2 - Úloha kopírování souborů v2

Pomocí této úlohy můžete kopírovat soubory ze zdrojové složky do cílové složky pomocí vzorů shody. (Vzory shody budou odpovídat pouze cestám k souborům, nikoli cest ke složkám).

Syntaxe

# 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.

Vstupy

SourceFolder - zdrojové složky
string.

Volitelný. Složka obsahující soubory, které chcete zkopírovat. Pokud je složka prázdná, úloha zkopíruje soubory z kořenové složky úložiště, jako by byla zadána $(Build.SourcesDirectory).

Pokud sestavení vytváří artefakty mimo adresář zdrojů, zadejte $(Agent.BuildDirectory) ke kopírování souborů z adresáře vytvořeného pro kanál.


obsah Contents -
string. Povinné. Výchozí hodnota: **.

Cesty k souborům, které chcete zahrnout jako součást kopie. Tento řetězec podporuje více řádků vzorů shody.

Například:

  • * zkopíruje všechny soubory v zadané zdrojové složce.
  • ** zkopíruje všechny soubory v zadané zdrojové složce a všechny soubory ve všech podsložkách.
  • **\bin\** zkopíruje všechny soubory rekurzivně z libovolné složky přihrádky.

Vzor se používá ke shodě pouze cest k souborům, nikoli cest ke složkám. Zadejte vzory, například **\bin\** místo **\bin.

Zalamování speciálních znaků v [] lze použít k řídicím literálovým znakům v názvu souboru. Například název literálového souboru hello[a-z] může být uchvácený jako hello[[]a-z]. Další informace naleznete v tématu Vzory porovnávání souborů referenční.

Použijte oddělovač cest, který odpovídá vašemu typu agenta sestavení. Například / se musí používat pro agenty Linuxu. Další příklady jsou uvedené níže.


cílové složky TargetFolder -
string. Povinné.

Cílová složka nebo cesta UNC, která bude obsahovat zkopírované soubory. Můžete použít proměnné . Příklad: $(build.artifactstagingdirectory).


CleanTargetFolder - čisté cílové složky
boolean. Výchozí hodnota: false.

Volitelný. Před procesem kopírování odstraní všechny existující soubory v cílové složce.


OverWrite - přepsat
boolean. Výchozí hodnota: false.

Volitelný. Nahradí existující soubory v cílové složce.


flattenFolders - složek s plochou
boolean. Výchozí hodnota: false.

Volitelný. Zploštěná struktura složek a zkopíruje všechny soubory do zadané cílové složky.


preserveTimestamp - Zachovat časové razítko cíle
boolean. Výchozí hodnota: false.

Zachová časové razítko cílového souboru pomocí původního zdrojového souboru.


retryCount - Počet opakování pro zkopírování souboru
string. Výchozí hodnota: 0.

Určuje počet opakování pro zkopírování souboru. Tento řetězec je užitečný pro občasné problémy, jako jsou cílové cesty UNC na vzdáleném hostiteli.


delayBetweenRetries - Zpoždění mezi dvěma opakovanými pokusy.
string. Výchozí hodnota: 1000.

Určuje prodlevu mezi dvěma opakovanými pokusy. Tento řetězec je užitečný pro občasné problémy, jako jsou cílové cesty UNC na vzdáleném hostiteli.


ignoreMakeDirErrors - Ignorujte chyby při vytváření cílové složky.
boolean. Výchozí hodnota: false.

Ignoruje chyby, ke kterým dojde při vytváření cílové složky. Tento řetězec je užitečný, abyste se vyhnuli problémům s paralelním prováděním úloh několika agenty v jedné cílové složce.


Možnosti ovládání úloh

Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace naleznete v tématu Možnosti ovládacího prvku a běžné vlastnosti úloh.

Výstupní proměnné

Žádné.

Poznámky

Pokud se žádné soubory neshoduje, úkol bude stále oznamovat úspěch.

  • Pokud Overwrite v cílové složce již false existuje odpovídající soubor, úloha neohlásí chybu, ale zaznamená do protokolu, že soubor již existuje, a přeskočí ji.
  • Pokud Overwrite v cílové složce již existuje odpovídající true soubor, bude odpovídající soubor přepsán.

Příklady

Zkopírujte soubor do pracovního adresáře artefaktů a publikujte

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

Kopírování spustitelných souborů a souboru readme

Cíl

Chcete zkopírovat pouze soubor Readme a soubory potřebné ke spuštění této konzolové aplikace v jazyce C#:

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

Poznámka:

ConsoleApplication1.sln obsahuje složku bin se soubory .dll a .exe, podívejte se na výsledky níže, abyste viděli, co se přesune!

Na kartě $(BuildConfiguration) Proměnné je nastavena na release.

Příklad s více vzory shody:

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)'

Příklad s podmínkou OR:

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

Příklad s podmínkou 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)'

Příklad s proměnnými v sekci obsahu

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

Výsledky

Tyto soubory se zkopírují do testovacího adresáře:

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

Zkopírujte vše ze zdrojového adresáře kromě složky .git

Příklad s více vzory shody:

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

Požadavky

Požadavek Popis
Typy kanálů YAML, klasické sestavení
Běží na Agent, skupina nasazení
Požadavky Žádné
možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
omezení příkazů Tato úloha se spouští s následujícími omezeními příkazů : omezeno:
nastavitelné proměnné Tento úkol má oprávnění nastavit následující proměnné: Nastavení proměnných je zakázáno.
Verze agenta 2.182.1 nebo vyšší
Kategorie úkolu Užitnost
Požadavek Popis
Typy kanálů YAML, klasické sestavení
Běží na Agent, skupina nasazení
Požadavky Žádné
možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
omezení příkazů Jakýkoliv
nastavitelné proměnné Jakýkoliv
Verze agenta 1.91.0 nebo vyšší
Kategorie úkolu Užitnost

Viz také