Condividi tramite


CopyFiles@2 - Attività Copia file v2

Usare questa attività per copiare i file da una cartella di origine a una cartella di destinazione usando modelli di corrispondenza. I modelli di corrispondenza corrispondono solo ai percorsi dei file, non ai percorsi delle cartelle.

Sintassi

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

Ingressi dati

cartella di origine SourceFolder -
string.

Opzionale. Cartella contenente i file da copiare. Se la cartella è vuota, l'attività copia i file dalla cartella radice del repository come se fosse stato specificato $(Build.SourcesDirectory).

Se la compilazione produce artefatti all'esterno della directory di origini, specificare $(Agent.BuildDirectory) per copiare i file dalla directory creata per la pipeline.


Contents - contenuto
string. Obbligatorio. Valore predefinito: **

Percorsi di file da includere come parte della copia. Questa stringa supporta più righe di modelli di corrispondenza.

Per esempio:

  • * copia tutti i file nella cartella di origine specificata.
  • ** copia tutti i file nella cartella di origine specificata e tutti i file in tutte le sottocartelle.
  • **\bin\** copia tutti i file in modo ricorsivo da qualsiasi cartella bin.

Il modello viene usato per corrispondere solo ai percorsi di file, non ai percorsi delle cartelle. Specificare modelli, ad esempio **\bin\** anziché **\bin.

Il wrapping di caratteri speciali in [] può essere usato per eseguire l'escape dei caratteri glob letterali in un nome file. Ad esempio, il nome di file letterale hello[a-z] può essere preceduto da un carattere di escape come hello[[]a-z]. Per altre informazioni, vedere Informazioni di riferimento sui modelli di corrispondenza dei file.

Usare il separatore di percorso corrispondente al tipo di agente di compilazione. Ad esempio, / deve essere usato per gli agenti Linux. Di seguito sono riportati altri esempi.


TargetFolder - cartella di destinazione
string. Obbligatorio.

Cartella di destinazione o percorso UNC che conterrà i file copiati. È possibile usare variabili. Esempio: $(build.artifactstagingdirectory).


CleanTargetFolder - pulisci cartella di destinazione
boolean. Valore predefinito: false

Opzionale. Elimina tutti i file esistenti nella cartella di destinazione prima del processo di copia.


OverWrite - Sovrascrivere
boolean. Valore predefinito: false

Opzionale. Sostituisce i file esistenti nella cartella di destinazione.


flattenFolders - flat folders
boolean. Valore predefinito: false

Opzionale. Appiattisce la struttura di cartelle e copia tutti i file nella cartella di destinazione specificata.


preserveTimestamp - Mantieni timestamp di destinazione
boolean. Valore predefinito: false

Mantiene il timestamp del file di destinazione utilizzando il file di origine originale.


retryCount - Conteggio tentativi per copiare il file
string. Valore predefinito: 0

Specifica il numero di tentativi per copiare il file. Questa stringa è utile per problemi intermittenti, ad esempio i percorsi di destinazione UNC in un host remoto.


delayBetweenRetries - Ritardo tra due tentativi.
string. Valore predefinito: 1000

Specifica il ritardo tra due tentativi. Questa stringa è utile per problemi intermittenti, ad esempio i percorsi di destinazione UNC in un host remoto.


ignoreMakeDirErrors - Ignora gli errori durante la creazione della cartella di destinazione.
boolean. Valore predefinito: false

Ignora gli errori che si verificano durante la creazione della cartella di destinazione. Questa stringa è utile per evitare problemi con l'esecuzione parallela di attività da parte di diversi agenti all'interno di una cartella di destinazione.


Opzioni di controllo delle attività

Tutte le attività hanno opzioni di controllo oltre ai relativi input di attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.

Variabili di uscita

Nessuno.

Osservazioni:

Se nessun file corrisponde, l'attività continuerà a segnalare l'esito positivo.

  • Se Overwrite è false e nella cartella di destinazione esiste già un file corrispondente, l'attività non segnalerà l'errore, ma registrerà che il file esiste già e lo ignorerà.
  • Se Overwrite è true e nella cartella di destinazione esiste già un file corrispondente, il file corrispondente verrà sovrascritto.

Esempi

Copiare il file nella directory di gestione temporanea degli artefatti e pubblicarlo

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

Copiare file eseguibili e un file Leggimi

Obiettivo

Si vuole copiare solo il file Leggimi e i file necessari per eseguire questa app console C#:

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

Annotazioni

ConsoleApplication1.sln contiene una cartella bin con .dll e .exe file, guarda i risultati qui sotto per vedere cosa viene spostato!

Nella scheda Variabili, $(BuildConfiguration) è impostato su release.

Esempio con più modelli di corrispondenza:

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

Esempio con condizione OR:

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

Esempio con condizione 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)'

Esempio con variabili nella sezione del contenuto

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

Risultati

Questi file vengono copiati nella directory di gestione temporanea:

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

Copia tutto dalla directory di origine tranne la cartella .git

Esempio con più modelli di corrispondenza:

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

Requisiti

Requisito Descrizione
Tipi di pipeline YAML, build classica
Viene eseguito in Agente, DeploymentGroup
Richieste Nessuno
Funzionalità Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Questa attività viene eseguita usando le restrizioni del comando seguenti: con restrizioni
variabili impostabili Questa attività dispone dell'autorizzazione per impostare le variabili seguenti: L'impostazione delle variabili è disabilitata
Versione agente 2.182.1 o versione successiva
Categoria attività Utilità
Requisito Descrizione
Tipi di pipeline YAML, build classica
Viene eseguito in Agente, DeploymentGroup
Richieste Nessuno
Funzionalità Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Qualunque
variabili impostabili Qualunque
Versione agente 1.91.0 o versione successiva
Categoria attività Utilità

Vedere anche