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:

  1. Hanya file untuk artefak tertentu yang diunduh. Jika artefak tidak ada, tugas akan gagal.

  2. 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:

  1. Beberapa artefak dapat diunduh dan tugas tidak gagal jika tidak ada file yang ditemukan.

  2. Subdirektori dibuat untuk setiap artefak.

  3. Pola pencocokan file harus mengasumsikan segmen pertama pola adalah (atau cocok) nama artefak. Misalnya, WebApp/** mencocokkan WebApp 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'

Screenshot showing the PowerShell task output

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:

  1. Secara default, tugas Unduh Artefak Alur mengunduh file ke $(Pipeline.Workspace). Ini adalah jalur default dan direkomendasikan untuk semua jenis artefak.

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