Salin tugas File

| Azure DevOps Services Azure DevOps Server 2020 | | Azure DevOps Server 2019 TFS 2018

Gunakan tugas ini untuk menyalin file dari folder sumber ke folder target menggunakan pola pencocokan.

Catatan

Di Microsoft Team Foundation Server (TFS) 2018 dan versi sebelumnya, alur build dan rilis disebut definisi, eksekusi disebut build, koneksi layanan disebut titik akhir layanan, tahapan disebut lingkungan, dan pekerjaan disebut fase.

Permintaan

Tidak ada

Cuplikan YAML

# Copy files
# Copy files from a source folder to a target folder using patterns matching file paths (not folder paths)
- task: CopyFiles@2
  inputs:
    #sourceFolder: # Optional
    #contents: '**' 
    targetFolder: 
    #cleanTargetFolder: false # Optional
    #overWrite: false # Optional
    #flattenFolders: false # Optional
    #preserveTimestamp: false # Optional
    #retryCount: 0 # Optional
    #ignoreMakeDirErrors: false # Optional

Argumen

Argumen Deskripsi
SourceFolder
Folder sumber
(Opsional) Folder yang berisi file yang ingin Anda salin. Jika Anda membiarkannya kosong, penyalinan dilakukan dari folder akar repositori (sama seperti jika Anda telah menentukan $(Build.SourcesDirectory)).
Jika build Anda menghasilkan artefak di luar direktori sumber, tentukan $(Agent.BuildDirectory) untuk menyalin file dari direktori yang dibuat untuk alur.
Contents
Konten
(Diperlukan) Jalur file yang akan disertakan sebagai bagian dari salinan. 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. Jadi Anda harus menentukan pola seperti **\bin\** alih-alih **\bin.
    Anda harus menggunakan pemisah jalur yang cocok dengan jenis agen build Anda. Contoh, / harus digunakan untuk agen Linux. Contoh lainnya ditunjukkan di bawah ini.
    Nilai default: **
TargetFolder
Folder Target
(Diperlukan) Folder target atau file jalur UNC akan disalin. Anda dapat menggunakan variabel.
Contoh: $(build.artifactstagingdirectory)
CleanTargetFolder
Bersihkan Folder Target
(Opsional) Hapus semua file yang ada di folder target sebelum menyalin
Nilai default: false
OverWrite
Timpa
(Opsional) Ganti file yang ada di folder target
Nilai default: false
flattenFolders
Meratakan Folder
(Opsional) Meratakan struktur folder dan menyalin semua file ke dalam folder target yang ditentukan
Nilai default: false
preserveTimestamp
Pertahankan Tanda Waktu Target
(Opsional) Dengan menggunakan file sumber asli, pertahankan tanda waktu file target.
Nilai default: false
retryCount
Coba lagi hitungan untuk menyalin file
(Opsional) Tentukan jumlah coba lagi untuk menyalin file. Ini mungkin membantu mengatasi masalah terputus-terputus misalnya dengan jalur target UNC pada host jarak jauh.
Nilai default: 0
ignoreMakeDirErrors
Abaikan kesalahan selama pembuatan folder target
(Opsional) Ini bisa berguna untuk menghindari masalah dengan eksekusi tugas paralel oleh beberapa agen dengan satu folder target.
Nilai default: false

Catatan

Jika tidak ada file yang cocok, tugas akan tetap melaporkan keberhasilan. Jika file yang cocok sudah ada di target, tugas akan melaporkan kegagalan kecuali Timpa diatur ke true.

Contoh

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

Contoh

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

Build YAML belum tersedia di TFS.

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

Build YAML belum tersedia di TFS.

Sumber terbuka

Tugas ini sumber terbuka pada GitHub. Umpan balik dan kontribusi dipersilakan.

FAQ

Di mana saya dapat mempelajari selengkapnya tentang pola pencocokan file?

Referensi pola pencocokan file

Bagaimana cara menggunakan tugas ini untuk menerbitkan artefak?

Lihat Artefak di Azure Pipelines.

T: Saya mengalami masalah dengan menerbitkan artefak saya. Bagaimana cara melihat log terperinci?

Untuk mengaktifkan log terperinci untuk alur Anda:

  1. Edit alur Anda dan pilih Variabel
  2. Menambahkan variabel baru dengan nama System.Debug dan nilai true
  3. Simpan

T: Variabel mana yang tersedia untuk saya?

A: $(Build.SourcesDirectory) dan $(Agent.BuildDirectory) hanya beberapa variabel yang dapat Anda gunakan dalam alur Anda. Variabel tersedia sebagai ekspresi atau skrip.

Lihat Menentukan variabel, variabel yang telah ditentukan sebelumnya, dan variabel rilis dan artefak Klasik untuk mempelajari tentang berbagai jenis variabel.

T: Tugas memungkinkan saya menerbitkan artefak dalam pekerjaan penyebaran di alur yaml, tetapi saya tidak dapat menggunakannya dalam alur hilir?

J: Pekerjaan penyebaran tidak memiliki konteks cabang sumber dan karenanya tidak sesuai untuk menerbitkan artefak. Mereka terutama dirancang untuk mengkonsumsi artefak. Solusinya adalah mengisolasi logika tersebut ke dalam pekerjaan terpisah (dengan dependensi pada pekerjaan penyebaran Anda).

Apakah saya memerlukan agen?

Anda memerlukan setidaknya satu agen untuk menjalankan build atau rilis Anda.

Aku mengalami masalah. Bagaimana cara memecahkan masalahnya?

Lihat Memecahkan Masalah Build dan Rilis.

Saya tidak dapat memilih kumpulan agen default dan saya tidak dapat mengantre build atau rilis saya. Bagaimana cara memperbaikinya?

Lihat Kumpulan agen.

Tugas push NuGet saya gagal dengan kesalahan berikut: "Kesalahan: tidak bisa mendapatkan sertifikat penerbit lokal". Bagaimana aku bisa memperbaiki ini?

Ini dapat diperbaiki dengan menambahkan sertifikat akar tepercaya. Anda dapat menambahkan NODE_EXTRA_CA_CERTS=file variabel lingkungan ke agen build, atau Anda dapat menambahkan NODE.EXTRA.CA.CERTS=file variabel tugas di alur Anda. Lihat dokumentasiNode.js untuk detail selengkapnya tentang variabel ini. Lihat Mengatur variabel dalam alur untuk instruksi tentang mengatur variabel di alur Anda.

Saya menggunakan TFS lokal dan saya tidak melihat beberapa fitur ini. Mengapa bukan?

Beberapa fitur ini hanya tersedia di Azure Pipelines dan belum tersedia secara lokal. Beberapa fitur tersedia secara lokal jika Anda telah meningkatkan ke TFS versi terbaru.