Menerbitkan dan mengunduh artefak alur
Azure DevOps
Dengan menggunakan Azure Pipelines, Anda dapat mengunduh artefak dari tahap sebelumnya di alur Anda atau dari alur lain. Anda juga dapat menerbitkan artefak Anda ke berbagi file atau membuatnya tersedia sebagai artefak alur.
Menerbitkan artefak
Anda dapat menerbitkan artefak menggunakan YAML, editor klasik, atau Azure CLI:
Catatan
Menerbitkan artefak alur tidak didukung dalam alur rilis.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Catatan
Kata publish
kunci adalah pintasan untuk tugas Terbitkan Artefak Alur .
Meskipun nama artefak bersifat opsional, ini adalah praktik yang baik untuk menentukan nama yang secara akurat mencerminkan konten artefak Anda. Jika Anda berencana untuk menggunakan artefak dari pekerjaan yang berjalan pada OS yang berbeda, Anda harus memastikan semua jalur file valid untuk lingkungan target. Misalnya, nama file yang berisi karakter \
atau *
akan gagal diunduh di Windows.
Jalur file/folder yang ingin Anda terbitkan diperlukan. Ini bisa menjadi jalur absolut atau relatif ke $(System.DefaultWorkingDirectory)
.
Paket di Artefak Azure tidak dapat diubah. Setelah Anda menerbitkan paket, versinya akan dicadangkan secara permanen. menjalankan ulang pekerjaan yang gagal akan gagal jika paket telah diterbitkan. Cara yang baik untuk mendekati ini jika Anda ingin dapat menjalankan ulang pekerjaan yang gagal tanpa menghadapi paket kesalahan yang sudah ada, adalah dengan menggunakan Kondisi untuk hanya berjalan jika pekerjaan sebelumnya berhasil.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Catatan
Anda tidak akan ditagih untuk menyimpan Artefak Alur. Penembolokan Alur juga dikecualikan dari penagihan penyimpanan. Lihat Artefak mana yang dihitung terhadap total penyimpanan yang ditagih.
Perhatian
Menghapus eksekusi alur akan mengakibatkan penghapusan semua Artefak yang terkait dengan eksekusi tersebut.
Gunakan .artifactignore
.artifactignore
menggunakan sintaks .gitignore
yang mirip dengan (dengan beberapa batasan) untuk menentukan file mana yang harus diabaikan saat menerbitkan artefak. Pastikan bahwa file .artifactignore terletak di dalam direktori yang ditentukan oleh argumen targetPath dari tugas Terbitkan Artefak Alur Anda.
Catatan
Karakter +
tanda plus tidak didukung di jalur URL dan beberapa metadata build untuk jenis paket seperti Maven.
Contoh: abaikan semua file kecuali file .exe :
**/*
!*.exe
Penting
Azure Artifacts secara otomatis mengabaikan jalur folder .git saat Anda tidak memiliki file .artifactignore . Anda dapat melewati ini dengan membuat file .artifactignore kosong.
Mengunduh artefak
Anda dapat mengunduh artefak menggunakan YAML, editor klasik, atau Azure CLI.
steps:
- download: current
artifact: WebApp
- saat ini: unduh artefak yang dihasilkan oleh eksekusi alur saat ini. Opsi: saat ini, spesifik.
Catatan
Daftar artefak yang diterbitkan hanya akan tersedia dalam pekerjaan dependen berikut. Oleh karena itu, gunakan current
opsi hanya dalam pekerjaan terpisah, yang memiliki dependensi pada pekerjaan dengan tugas menerbitkan artefak.
Tip
Anda dapat menggunakan sumber daya Alur untuk menentukan sumber Anda di satu tempat dan menggunakannya di mana saja di alur Anda.
Catatan
Kata download
kunci mengunduh artefak. Untuk informasi selengkapnya, lihat steps.download.
Untuk mengunduh artefak alur dari proyek yang berbeda dalam organisasi Anda, pastikan Anda memiliki izin yang sesuai yang dikonfigurasi untuk proyek hilir dan alur hilir Anda. Secara default, file diunduh ke $(Pipeline.Workspace). Jika nama artefak tidak ditentukan, subdirektori akan dibuat untuk setiap artefak yang diunduh. Anda dapat menggunakan pola yang cocok untuk membatasi file mana yang diunduh. Lihat Pola pencocokan file untuk detail selengkapnya.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Pilihan artefak
Satu langkah unduhan dapat mengunduh satu atau beberapa artefak. Untuk mengunduh beberapa artefak, biarkan bidang nama artefak kosong dan gunakan pola pencocokan file untuk membatasi file mana yang akan diunduh. **
adalah pola pencocokan file default (semua file di semua artefak).
Artefak tunggal
Ketika nama artefak ditentukan:
Hanya file untuk artefak tertentu yang diunduh. Jika artefak tidak ada, tugas akan gagal.
Pola pencocokan file dievaluasi relatif terhadap akar artefak. Misalnya, pola
*.jar
cocok dengan semua file dengan.jar
ekstensi di akar artefak.
Contoh berikut menggambarkan cara mengunduh semua *.js
dari artefak WebApp
:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Beberapa artefak
Ketika tidak ada nama artefak yang ditentukan:
Beberapa artefak dapat diunduh dan tugas tidak gagal jika tidak ada file yang ditemukan.
Subdirektori dibuat untuk setiap artefak.
Pola pencocokan file harus mengasumsikan segmen pertama pola adalah (atau cocok) nama artefak. Misalnya,
WebApp/**
mencocokkanWebApp
semua file dari artefak. Pola*/*.dll
cocok dengan semua file dengan.dll
ekstensi di akar setiap artefak.
Contoh berikut mengilustrasikan cara mengunduh semua .zip
file dari semua artefak:
steps:
- download: current
patterns: '**/*.zip'
Artefak dalam pekerjaan rilis dan penyebaran
Artefak hanya diunduh secara otomatis dalam pekerjaan penyebaran. Secara default, artefak diunduh ke $(Pipeline.Workspace)
. Tugas unduh artefak akan disuntikkan secara otomatis hanya saat menggunakan deploy
kait siklus hidup dalam penyebaran Anda. Untuk menghentikan artefak diunduh secara otomatis, tambahkan download
langkah dan atur nilainya ke tidak ada.
Dalam pekerjaan build reguler, Anda perlu secara eksplisit menggunakan download
kata kunci langkah atau tugas Unduh Artefak Alur. Lihat kait siklus hidup untuk mempelajari lebih lanjut tentang jenis kait lainnya.
steps:
- download: none
Menggunakan Artefak di seluruh tahap
Jika Anda ingin dapat mengakses artefak Anda di berbagai tahap dalam alur Anda, saat ini Anda dapat menerbitkan artefak Anda dalam satu tahap dan kemudian mengunduhnya di tahap berikutnya yang memanfaatkan dependensi. Lihat Dependensi tahapan ke tahapan untuk detail lebih lanjut.
Contoh
Dalam contoh berikut, kami akan menyalin dan menerbitkan folder skrip dari repositori kami ke $(Build.ArtifactStagingDirectory)
. Pada tahap kedua, kami akan mengunduh dan menjalankan skrip kami.
trigger:
- main
stages:
- stage: build
jobs:
- job: run_build
pool:
vmImage: 'windows-latest'
steps:
- task: VSBuild@1
inputs:
solution: '**/*.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: 'Any CPU'
configuration: 'Release'
- task: CopyFiles@2
displayName: 'Copy scripts'
inputs:
contents: 'scripts/**'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- publish: '$(Build.ArtifactStagingDirectory)/scripts'
displayName: 'Publish script'
artifact: drop
- stage: test
dependsOn: build
jobs:
- job: run_test
pool:
vmImage: 'windows-latest'
steps:
- download: current
artifact: drop
- task: PowerShell@2
inputs:
filePath: '$(Pipeline.Workspace)\drop\test.ps1'
Bermigrasi dari artefak build
Artefak alur adalah artefak build generasi berikutnya dan merupakan cara yang direkomendasikan untuk bekerja dengan artefak. Artefak yang diterbitkan menggunakan tugas Terbitkan Artefak Build masih dapat diunduh menggunakan Unduh Artefak Build, tetapi sebaiknya gunakan tugas Unduh Artefak Alur terbaru sebagai gantinya.
Saat bermigrasi dari artefak build ke artefak alur:
Secara default, tugas Unduh Artefak Alur mengunduh file ke
$(Pipeline.Workspace)
. Ini adalah jalur default dan direkomendasikan untuk semua jenis artefak.Pola pencocokan file untuk tugas Unduh Artefak Build diharapkan dimulai dengan (atau cocok) nama artefak, terlepas dari apakah artefak tertentu ditentukan atau tidak. Dalam tugas Unduh Artefak Alur, pola tidak boleh menyertakan nama artefak ketika nama artefak telah ditentukan. Untuk informasi selengkapnya, lihat pilihan artefak tunggal.
Contoh
- task: PublishPipelineArtifact@1
displayName: 'Publish pipeline artifact'
inputs:
targetPath: '$(Pipeline.Workspace)'
${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
artifact: 'prod'
${{ else }}:
artifact: 'dev'
publishLocation: 'pipeline'
targetPath: (Wajib) Jalur file atau direktori yang akan diterbitkan. Bisa absolut atau relatif terhadap direktori kerja default. Dapat menyertakan variabel, tetapi kartubebas tidak didukung. Default: $(Pipeline.Workspace).
publishLocation: (Wajib) Lokasi penerbitan Artefak. Pilih apakah akan menyimpan artefak di Azure Pipelines, atau menyalinnya ke berbagi file yang harus dapat diakses dari agen alur. Opsi:
pipeline
,filepath
. Default: alur.artefak: (Opsional) Nama artefak yang akan diterbitkan. Jika tidak diatur, default ke ID unik yang dilingkup ke pekerjaan.
FAQ
T: Apa itu artefak build?
A: Artefak build adalah file yang dihasilkan oleh build Anda. Lihat Membuat Artefak untuk mempelajari selengkapnya tentang cara menerbitkan dan menggunakan artefak build Anda.
T: Dapatkah saya menghapus artefak alur saat menjalankan kembali pekerjaan yang gagal?
A: Artefak alur tidak dapat dilepas atau dapat ditimpa. Jika Anda ingin meregenerasi artefak saat menjalankan kembali pekerjaan yang gagal, Anda dapat menyertakan ID pekerjaan dalam nama artefak. $(system.JobId)
adalah variabel yang sesuai untuk tujuan ini. Lihat Variabel sistem untuk mempelajari selengkapnya tentang variabel yang telah ditentukan sebelumnya.
T: Bagaimana cara mengakses umpan Artefak di belakang firewall?
A: Jika organisasi Anda menggunakan firewall atau server proksi, pastikan Anda mengizinkan URL dan alamat IP Domain Artefak Azure.