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 |
|---|---|
SourceFolderFolder 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. |
ContentsKonten |
(Diperlukan) Jalur file yang akan disertakan sebagai bagian dari salinan. Mendukung beberapa baris pola pencocokan. Contohnya:
|
TargetFolderFolder Target |
(Diperlukan) Folder target atau file jalur UNC akan disalin. Anda dapat menggunakan variabel. Contoh: $(build.artifactstagingdirectory) |
CleanTargetFolderBersihkan Folder Target |
(Opsional) Hapus semua file yang ada di folder target sebelum menyalin Nilai default: false |
OverWriteTimpa |
(Opsional) Ganti file yang ada di folder target Nilai default: false |
flattenFoldersMeratakan Folder |
(Opsional) Meratakan struktur folder dan menyalin semua file ke dalam folder target yang ditentukan Nilai default: false |
preserveTimestampPertahankan Tanda Waktu Target |
(Opsional) Dengan menggunakan file sumber asli, pertahankan tanda waktu file target. Nilai default: false |
retryCountCoba 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 |
ignoreMakeDirErrorsAbaikan 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:
- Edit alur Anda dan pilih Variabel
- Menambahkan variabel baru dengan nama
System.Debugdan nilaitrue - 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.
Utilitas: Salin File