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.

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

Viz také