Bagikan melalui


CopyFiles@2 - Menyalin file tugas v2

Gunakan tugas ini untuk menyalin file dari folder sumber ke folder target menggunakan pola pencocokan. (Pola pencocokan hanya akan cocok dengan jalur file, bukan jalur folder).

Sintaks

# 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.
# Copy Files v2
# Copy files from source folder to target folder using match patterns (The match patterns will only match 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.

Input

SourceFolder - Folder Sumber
string.

Pilihan. Folder yang berisi file yang ingin Anda salin. Jika folder kosong, maka tugas menyalin file dari folder akar repositori seolah-olah $(Build.SourcesDirectory) ditentukan.

Jika build Anda menghasilkan artefak di luar direktori sumber, tentukan $(Agent.BuildDirectory) untuk menyalin file dari direktori yang dibuat untuk alur.


Contents - Isi
string. Wajib diisi. Nilai default: **.

Jalur file yang akan disertakan sebagai bagian dari salinan. String ini mendukung beberapa baris pola pencocokan.

Contohnya:

  • * menyalin semua file dalam folder sumber yang ditentukan.
  • ** menyalin semua file dalam folder sumber yang ditentukan dan semua file di semua sub-folder.
  • **\bin\** menyalin semua file secara rekursif dari folder bin apa pun.

Pola ini digunakan untuk mencocokkan hanya jalur file, bukan jalur folder. Tentukan pola, seperti **\bin\** alih-alih **\bin.

Gunakan pemisah jalur yang cocok dengan jenis agen build Anda. Misalnya, / harus digunakan untuk agen Linux. Contoh lainnya ditunjukkan di bawah ini.


TargetFolder - Target Folder
string. Wajib diisi.

Folder target atau jalur UNC yang akan berisi file yang disalin. Anda dapat menggunakan variabel. Contoh: $(build.artifactstagingdirectory).


CleanTargetFolder - Bersihkan Folder Target
boolean. Nilai default: false.

Pilihan. Menghapus semua file yang ada di folder target sebelum proses penyalinan.


OverWrite - Menimpa
boolean. Nilai default: false.

Pilihan. Menggantikan file yang ada di folder target.


flattenFolders - Meratakan Folder
boolean. Nilai default: false.

Pilihan. Meratakan struktur folder dan menyalin semua file ke dalam folder target yang ditentukan.


preserveTimestamp - Pertahankan Tanda Waktu Target
boolean. Nilai default: false.

Pertahankan tanda waktu file target dengan menggunakan file sumber asli.


retryCount - Coba lagi hitungan untuk menyalin file
string. Nilai default: 0.

Menentukan jumlah coba lagi untuk menyalin file. String ini berguna untuk masalah terputus-terputus, seperti jalur target UNC pada host jarak jauh.


delayBetweenRetries - Penundaan antara dua percobaan ulang.
string. Nilai default: 1000.

Menentukan penundaan antara dua percobaan ulang. String ini berguna untuk masalah terputus-terputus, seperti jalur target UNC pada host jarak jauh.


ignoreMakeDirErrors - Abaikan kesalahan selama pembuatan folder target.
boolean. Nilai default: false.

Mengabaikan kesalahan yang terjadi selama pembuatan folder target. String ini berguna untuk menghindari masalah dengan eksekusi tugas paralel oleh beberapa agen dalam satu folder target.


Opsi kontrol tugas

Semua tugas memiliki opsi kontrol selain input tugas mereka. Untuk informasi selengkapnya, lihat Opsi kontrol dan properti tugas umum.

Variabel output

Tidak ada.

Keterangan

Jika tidak ada file yang cocok, tugas akan tetap melaporkan keberhasilan.

  • Jika Overwrite adalah false dan file yang cocok sudah ada di folder target, tugas tidak akan melaporkan kegagalan tetapi mencatat bahwa file sudah ada dan melewatinya.
  • Jika Overwrite adalah true dan file yang cocok sudah ada di folder target, file yang cocok akan ditimpa.

Contoh

Menyalin file ke direktori penahapan artefak dan menerbitkan

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

Menyalin file executable dan readme

Tujuan

Anda hanya ingin menyalin readme dan file yang diperlukan untuk menjalankan aplikasi konsol C# ini:

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

Catatan

ConsoleApplication1.sln berisi folder bin dengan file .dll dan .exe, lihat Hasil di bawah ini untuk melihat apa yang akan dipindahkan!

Pada tab Variabel, $(BuildConfiguration) diatur ke release.

Contoh dengan beberapa pola kecocokan:

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

Contoh dengan kondisi OR:

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

Contoh dengan kondisi 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)'

Contoh dengan variabel di bagian konten

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

Hasil

File-file ini disalin ke direktori penahapan:

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

Salin semuanya dari direktori sumber kecuali folder .git

Contoh dengan beberapa pola kecocokan:

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

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Tugas ini berjalan menggunakan pembatasan perintah berikut: dibatasi
Variabel yang dapat diatur Tugas ini memiliki izin untuk mengatur variabel berikut: Pengaturan variabel dinonaktifkan
Versi agen 2.182.1 atau lebih tinggi
Kategori tugas Utilitas
Persyaratan Deskripsi
Jenis alur YAML, Build klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen 1.91.0 atau lebih tinggi
Kategori tugas Utilitas

Lihat juga