Menentukan sumber daya dalam YAML

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Sumber daya dalam YAML mewakili sumber alur, build, repositori, kontainer, paket, dan webhook. Sumber daya juga memberi Anda keterlacakan penuh dari layanan yang digunakan dalam alur Anda termasuk versi, artefak, penerapan terkait, dan item kerja. Saat ditentukan, sumber daya dapat digunakan di mana saja di alur Anda. Dan, Anda dapat sepenuhnya mengotomatiskan alur kerja DevOps dengan berlangganan untuk memicu peristiwa pada sumber daya Anda.

Untuk informasi selengkapnya, lihat Tentang sumber daya dan definisi skema YAML sumber daya.

Skema

resources:
  pipelines: [ pipeline ]  
  builds: [ build ]
  repositories: [ repository ]
  containers: [ container ]
  packages: [ package ]
  webhooks: [ webhook ]

Variabel

Saat sumber daya memicu alur, variabel berikut diatur:

resources.triggeringAlias
resources.triggeringCategory

Nilai-nilai ini kosong jika sumber daya tidak memicu eksekusi alur. Variabel Build.Reason harus agar ResourceTrigger nilai-nilai ini diatur.

pipelines Menentukan sumber daya

Jika Anda memiliki alur yang menghasilkan artefak, Anda dapat menggunakan artefak dengan menentukan pipelines sumber daya. pipelines adalah sumber daya khusus hanya untuk Azure Pipelines. Anda juga dapat mengatur pemicu pada sumber daya alur untuk alur kerja CD Anda.

Dalam definisi sumber daya Anda, pipeline adalah nilai unik yang dapat Anda gunakan untuk mereferensikan sumber daya alur nanti. source adalah nama alur yang menghasilkan artefak. Gunakan label yang ditentukan oleh pipeline untuk mereferensikan sumber daya alur dari bagian lain dari alur, seperti saat menggunakan variabel sumber daya alur atau mengunduh artefak.

Untuk cara alternatif untuk mengunduh alur, lihat tugas di Artefak Alur.

resources:        # types: pipelines | builds | repositories | containers | packages
  pipelines:
  - pipeline: string  # identifier for the resource used in pipeline resource variables
    project: string # project for the source; optional for current project
    source: string  # name of the pipeline that produces an artifact. If it is in a different pipelines folder, it needs to be the full path, e.g. MyTeam/MyPipeline
    version: string  # the pipeline run number to pick the artifact, defaults to latest pipeline successful across all stages; Used only for manual or scheduled triggers
    branch: string  # branch to pick the artifact, optional; defaults to all branches; Used only for manual or scheduled triggers
    tags: [ string ] # list of tags required on the pipeline to pickup default artifacts, optional; Used only for manual or scheduled triggers
    trigger:     # triggers aren't enabled by default unless you add trigger section to the resource
      branches:  # branch conditions to filter the events, optional; Defaults to all branches.
        include: [ string ]  # branches to consider the trigger events, optional; Defaults to all branches.
        exclude: [ string ]  # branches to discard the trigger events, optional; Defaults to none.
      tags: [ string ]  # list of tags to evaluate for trigger event, optional
      stages: [ string ] # list of stages to evaluate for trigger event, optional

Penting

Saat Anda menentukan pemicu sumber daya, jika sumber daya alurnya berasal dari repositori yang sama (katakanlah sendiri) sebagai alur saat ini, pemicu mengikuti cabang dan penerapan yang sama tempat peristiwa dinaikkan. Tetapi, jika sumber daya alur berasal dari repositori yang berbeda, alur saat ini memicu pada cabang default repositori mandiri.

Evaluasi versi artefak

Versi artefak alur sumber daya tergantung pada bagaimana alur Anda dipicu.

Jika alur Anda berjalan karena Anda memicunya secara manual atau karena eksekusi terjadwal, versi versi artefak ditentukan oleh nilai versionproperti , , branchdan tags .

Properti yang ditentukan Versi artefak
version Artefak dari build yang memiliki nomor eksekusi yang ditentukan
branch Artefak dari build terbaru yang dilakukan pada cabang yang ditentukan
tags Daftar Artefak dari build terbaru yang memiliki semua tag yang ditentukan
branch dan tags daftar Artefak dari build terbaru yang dilakukan pada cabang yang ditentukan dan memiliki semua tag yang ditentukan
Tidak Artefak dari build terbaru di semua cabang

Mari lihat contohnya. Katakanlah alur Anda berisi definisi sumber daya berikut.

resources:
  pipelines:
  - pipeline: MyCIAlias
    project: Fabrikam
    source: Farbrikam-CI
    branch: main      ### This branch input cannot have wild cards. It is used for evaluating default version when pipeline is triggered manually or scheduled.
    tags:               ### These tags are used for resolving default version when the pipeline is triggered manually or scheduled
    - Production        ### Tags are AND'ed
    - PreProduction

Saat Anda secara manual memicu alur untuk dijalankan, versi artefak MyCIAlias alur adalah salah satu build terbaru yang dilakukan pada main cabang dan yang memiliki Production tag dan PrepProduction .

Ketika alur Anda dipicu karena salah satu alur sumber dayanya selesai, versi artefak adalah salah satu alur pemicu. versionNilai properti , branch, dan tags diabaikan.

Pemicu yang ditentukan Hasil
branches Eksekusi baru alur saat ini dipicu setiap kali alur sumber daya berhasil menyelesaikan eksekusi pada include cabang
tags Eksekusi baru alur saat ini dipicu setiap kali alur sumber daya berhasil menyelesaikan eksekusi yang ditandai dengan semua tag yang ditentukan
stages Eksekusi baru alur saat ini dipicu setiap kali alur sumber daya berhasil menjalankan yang ditentukan stages
branches, tags, dan stages Eksekusi baru alur saat ini dipicu setiap kali eksekusi alur sumber daya memenuhi semua kondisi cabang, tag, dan tahapan
trigger: true Eksekusi baru alur saat ini dipicu setiap kali alur sumber daya berhasil menyelesaikan eksekusi
Tidak ada Tidak ada eksekusi baru dari alur saat ini yang dipicu ketika alur sumber daya berhasil menyelesaikan eksekusi

Mari lihat contohnya. Katakanlah alur Anda berisi definisi sumber daya berikut.

resources:
  pipelines:
  - pipeline: SmartHotel
    project: DevOpsProject
    source: SmartHotel-CI
    trigger:
      branches:
        include:
        - releases/*
        - main
        exclude:
        - topic/*
      tags: 
      - Verified
      - Signed
      stages:
      - Production
      - PreProduction
      

Alur Anda akan berjalan setiap kali SmartHotel-CI alur berjalan di salah releases satu cabang atau di main cabang, ditandai dengan dan SignedVerified , dan menyelesaikan tahap Production dan PreProduction .

download untuk alur

Semua artefak dari alur saat ini dan dari semua pipeline sumber daya diunduh secara otomatis dan tersedia di awal setiap deployment pekerjaan. Anda dapat mengambil alih perilaku ini. Untuk informasi selengkapnya, lihat Artefak Alur. Artefak 'pekerjaan' reguler tidak diunduh secara otomatis. Gunakan download secara eksplisit saat diperlukan.

steps:
- download: [ current | pipeline resource identifier | none ] # disable automatic download if "none"
  artifact: string ## artifact name, optional; downloads all the available artifacts if not specified
  patterns: string # patterns representing files to include; optional

Artefak dari pipeline sumber daya diunduh ke $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier> folder.

Variabel sumber daya alur

Dalam setiap proses, metadata untuk sumber daya alur tersedia untuk semua pekerjaan dalam bentuk variabel yang telah ditentukan sebelumnya. <Alias> adalah pengidentifikasi yang Anda berikan untuk sumber daya alur Anda. Variabel sumber daya alur hanya tersedia saat runtime.

Untuk mempelajari selengkapnya tentang sintaks variabel, lihat Menentukan variabel.

resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID

Untuk informasi selengkapnya, lihat Metadata sumber daya alur sebagai variabel yang telah ditentukan sebelumnya.

builds Menentukan sumber daya

Jika Anda memiliki sistem build CI eksternal yang menghasilkan artefak, Anda dapat menggunakan artefak dengan builds sumber daya. Sumber builds daya dapat berupa sistem CI eksternal seperti Jenkins, TeamCity, CircleCI, dan sebagainya.

resources:        # types: pipelines | builds | repositories | containers | packages
  builds:
  - build: string   # identifier for the build resource
    type: string   # the type of your build service like Jenkins, circleCI etc.
    connection: string   # service connection for your build service.
    source: string   # source definition of the build
    version: string   # the build number to pick the artifact, defaults to Latest successful build
    trigger: boolean    # Triggers aren't enabled by default and should be explicitly set

builds adalah kategori yang dapat diperluas. Anda dapat menulis ekstensi untuk menggunakan artefak dari layanan build Anda dan memperkenalkan jenis layanan baru sebagai bagian buildsdari . Jenkins adalah jenis sumber daya di builds.

Penting

Pemicu hanya didukung untuk Jenkins yang dihosting di mana Azure DevOps memiliki garis pandang dengan server Jenkins.

downloadBuild tugas untuk build

Anda dapat menggunakan artefak dari build sumber daya sebagai bagian dari pekerjaan Anda menggunakan tugas.downloadBuild Berdasarkan jenis build sumber daya yang ditentukan, tugas ini secara otomatis diselesaikan ke tugas unduhan yang sesuai untuk layanan selama run time.

Artefak dari build sumber daya diunduh ke $(PIPELINE.WORKSPACE)/<build-identifier>/ folder.

Penting

build artefak sumber daya tidak diunduh secara otomatis dalam pekerjaan/pekerjaan penyebaran Anda. Anda perlu secara eksplisit menambahkan downloadBuild tugas untuk mengonsumsi artefak.

- downloadBuild: string # identifier for the resource from which to download artifacts
  artifact: string # artifact to download; if left blank, downloads all artifacts associated with the resource provided
  patterns: string | [ string ] # a minimatch path or list of [minimatch paths](tasks/file-matching-patterns.md) to download; if blank, the entire artifact is downloaded

repositories Menentukan sumber daya

Jika alur Anda memiliki templat di repositori lain, atau jika Anda ingin menggunakan cek keluar multi-repo dengan repositori yang memerlukan koneksi layanan, Anda harus memberi tahu sistem tentang repositori tersebut. Kata repository kunci memungkinkan Anda menentukan repositori eksternal.

resources:
    repositories:
    - repository: string # Required as first property. Alias for the repository.
      endpoint: string # ID of the service endpoint connecting to this repository.
      trigger: none | trigger | [ string ] # CI trigger for this repository, no CI trigger if skipped (only works for Azure Repos).
      name: string # repository name (format depends on 'type'; does not accept variables).
      ref: string # ref name to checkout; defaults to 'refs/heads/main'. The branch checked out by default whenever the resource trigger fires.
      type: string # Type of repository: git, github, githubenterprise, and bitbucket.

Jenis

Alur mendukung nilai berikut untuk jenis repositori: git, , githubgithubenterprise, dan bitbucket. Jenisnya git mengacu pada repositori Azure Repos Git.

Jenis yang ditentukan Hasil Contoh
type: git Nilai name mengacu pada repositori lain dalam proyek yang sama. name: otherRepo Untuk merujuk ke repositori di proyek lain dalam organisasi yang sama, awali nama dengan nama proyek tersebut. Contohnya name: OtherProject/otherRepo.
type: github Nilainya name adalah nama lengkap repositori GitHub dan menyertakan pengguna atau organisasi. name: Microsoft/vscode
type: githubenterprise name nilainya adalah nama lengkap repositori GitHub Enterprise dan menyertakan pengguna atau organisasi. name: Microsoft/vscode
type: bitbucket Nilainya name adalah nama lengkap repositori Bitbucket Cloud dan menyertakan pengguna atau organisasi. name: MyBitbucket/vscode

Repositori GitHub Enterprise memerlukan koneksi layanan GitHub Enterprise untuk otorisasi.

Repositori Bitbucket Cloud memerlukan koneksi layanan Bitbucket Cloud untuk otorisasi.

Variabel

Dalam setiap eksekusi, metadata untuk sumber daya repositori tersedia untuk semua pekerjaan dalam bentuk variabel runtime. <Alias> adalah pengidentifikasi yang Anda berikan untuk sumber daya repositori Anda.

resources.repositories.<Alias>.name
resources.repositories.<Alias>.ref
resources.repositories.<Alias>.type
resources.repositories.<Alias>.id
resources.repositories.<Alias>.url

Variabel

Dalam setiap eksekusi, metadata untuk sumber daya repositori tersedia untuk semua pekerjaan dalam bentuk variabel runtime. <Alias> adalah pengidentifikasi yang Anda berikan untuk sumber daya repositori Anda.

resources.repositories.<Alias>.name
resources.repositories.<Alias>.ref
resources.repositories.<Alias>.type
resources.repositories.<Alias>.id
resources.repositories.<Alias>.url
resources.repositories.<Alias>.version

Gunakan checkout untuk mengonsumsi repositori

Gunakan checkout kata kunci untuk menggunakan repositori Anda yang didefinisikan sebagai bagian repository dari sumber daya.

Skema

steps:
- checkout: string # Required as first property. Configures checkout for the specified repository.
  clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
  fetchDepth: string # Depth of Git graph to fetch.
  fetchTags: string # Set to 'true' to sync tags when fetching the repo, or 'false' to not sync tags. See remarks for the default behavior.
  lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
  persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
  submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
  path: string # Where to put the repository. The default is $(Build.SourcesDirectory).
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  target: string | target # Environment in which to run this task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
  retryCountOnTaskFailure: string # Number of retries if the task fails.

Repositori dari repository sumber daya tidak disinkronkan secara otomatis dalam pekerjaan Anda. Gunakan checkout untuk mengambil repositori Anda sebagai bagian dari pekerjaan Anda.

Untuk informasi selengkapnya, lihat Melihat beberapa repositori di alur Anda.

containers Menentukan sumber daya

Jika Anda perlu menggunakan gambar kontainer sebagai bagian dari alur integrasi berkelanjutan/pengiriman berkelanjutan (CI/CD), Anda dapat mencapainya menggunakan containers. Sumber daya kontainer dapat berupa Docker Registry publik atau privat, atau Azure Container Registry.

Jika Anda perlu menggunakan gambar dari registri Docker sebagai bagian dari alur Anda, Anda dapat menentukan sumber daya kontainer generik (tidak type diperlukan kata kunci).

resources:
  containers:
  - container: string  # identifier (A-Z, a-z, 0-9, and underscore)
    image: string  # container image name
    options: string  # arguments to pass to container at startup
    endpoint: string  # reference to a service connection for the private registry
    env: { string: string }  # list of environment variables to add
    ports: [ string ] # ports to expose on the container
    volumes: [ string ] # volumes to mount on the container
    mapDockerSocket: bool # whether to map in the Docker daemon socket; defaults to true
    mountReadOnly:  # volumes to mount read-only - all default to false
      externals: boolean  # components required to talk to the agent
      tasks: boolean  # tasks required by the job
      tools: boolean  # installable tools like Python and Ruby
      work: boolean # the work directory

Anda dapat menggunakan sumber daya kontainer generik sebagai gambar yang digunakan sebagai bagian dari pekerjaan Anda, atau juga dapat digunakan untuk pekerjaan Kontainer. Jika alur Anda memerlukan dukungan satu atau beberapa layanan, Anda harus membuat dan menyambungkan ke kontainer layanan. Anda dapat menggunakan volume untuk berbagi data antar layanan.

Anda dapat menggunakan jenis sumber daya kontainer kelas satu untuk Azure Container Registry (ACR) untuk menggunakan gambar ACR Anda. Jenis sumber daya ini dapat digunakan sebagai bagian dari pekerjaan Anda dan juga untuk mengaktifkan pemicu alur otomatis. Anda harus memiliki izin Kontributor atau Pemilik untuk ACR untuk menggunakan pemicu alur otomatis. Untuk informasi selengkapnya, lihat Peran dan izin Azure Container Registry.

resources:          # types: pipelines | repositories | containers | builds | packages
  containers:
  - container: string # identifier for the container resource      
    type: string # type of the registry like ACR, GCR etc. 
    azureSubscription: string # Azure subscription (ARM service connection) for container registry;
    resourceGroup: string # resource group for your ACR
    registry: string # registry for container images
    repository: string # name of the container image repository in ACR
    trigger: # Triggers aren't enabled by default and need to be set explicitly
      enabled: boolean # set to 'true' to trigger on all image tags if 'tags' is unset.
      tags:
        include: [ string ]  # image tags to consider the trigger events, optional; defaults to any new tag
        exclude: [ string ]  # image tags on discard the trigger events, optional; defaults to none

Catatan

Sintaks yang digunakan untuk mengaktifkan pemicu kontainer untuk semua tag gambar (enabled: 'true') berbeda dari sintaks yang digunakan untuk pemicu sumber daya lainnya. Perhatikan lebih dekat untuk menggunakan sintaks yang benar untuk sumber daya tertentu.

Catatan

Koneksi layanan yang menggunakan federasi identitas Beban Kerja tidak didukung di azureSubscription.

Variabel sumber daya kontainer

Setelah Anda menentukan kontainer sebagai sumber daya, metadata gambar kontainer akan diteruskan ke alur dalam bentuk variabel. Informasi seperti gambar, registri, dan detail koneksi dapat diakses di semua pekerjaan yang akan digunakan dalam tugas penyebaran kontainer Anda.

Variabel sumber daya kontainer berfungsi dengan Docker dan Azure Container Registry. Anda tidak dapat menggunakan variabel sumber daya kontainer untuk kontainer gambar lokal.

resources.container.<Alias>.type
resources.container.<Alias>.registry
resources.container.<Alias>.repository
resources.container.<Alias>.tag 
resources.container.<Alias>.digest
resources.container.<Alias>.URI
resources.container.<Alias>.location

Variabel lokasi hanya berlaku untuk ACR jenis sumber daya kontainer.

packages Menentukan sumber daya

Anda dapat menggunakan paket NuGet dan npm GitHub sebagai sumber daya dalam alur YAML.

Saat Anda menentukan package sumber daya, atur paket sebagai NuGet atau npm. Anda juga dapat mengaktifkan pemicu alur otomatis saat versi paket baru dirilis.

Untuk menggunakan paket GitHub, gunakan autentikasi berbasis token akses pribadi (PAT) dan buat koneksi layanan GitHub yang menggunakan PATs.

Secara default, paket tidak diunduh secara otomatis ke dalam pekerjaan. Untuk mengunduh, gunakan getPackage.

resources:
  packages:
    - package: myPackageAlias # alias for the package resource
      type: Npm # type of the package NuGet/npm
      connection: GitHubConnectionName # GitHub service connection with the PAT type
      name: nugetTest/nodeapp # <Repository>/<Name of the package>
      version: 1.0.1 # Version of the package to consume; Optional; Defaults to latest
      trigger: true # To enable automated triggers (true/false); Optional; Defaults to no triggers

webhooks Menentukan sumber daya

Catatan

Webhook dirilis di Azure DevOps Server 2020.1.

Dengan sumber daya lain (seperti alur, kontainer, build, dan paket), Anda dapat menggunakan artefak dan mengaktifkan pemicu otomatis. Namun, Anda tidak dapat mengotomatiskan proses penyebaran berdasarkan peristiwa atau layanan eksternal lainnya. Sumber daya memungkinkan webhooks Anda mengintegrasikan alur Anda dengan layanan eksternal apa pun dan mengotomatiskan alur kerja. Anda dapat berlangganan peristiwa eksternal apa pun melalui webhook-nya (GitHub, GitHub Enterprise, Nexus, Artifactory, dan sebagainya) dan memicu alur Anda.

Lakukan langkah-langkah berikut untuk mengonfigurasi pemicu webhook.

  1. Siapkan webhook di layanan eksternal Anda. Saat membuat webhook, Anda perlu memberikan info berikut:

    • Url Permintaan

      https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
      
    • Rahasia - Opsional. Jika Anda perlu mengamankan payload JSON Anda, berikan nilai Rahasia .

  2. Buat koneksi layanan "Webhook Masuk" baru. Koneksi ini adalah Jenis Koneksi Layanan baru yang memungkinkan Anda menentukan informasi penting berikut:

    • Nama Webhook: Nama webhook harus cocok dengan webhook yang dibuat di layanan eksternal Anda.
    • Header HTTP - Nama header HTTP dalam permintaan yang berisi nilai hash HMAC-SHA1 payload untuk verifikasi permintaan. Misalnya, untuk GitHub, header permintaan adalah "X-Hub-Signature".
    • Rahasia - Rahasia digunakan untuk memverifikasi hash HMAC-SHA1 payload yang digunakan untuk verifikasi permintaan masuk (opsional). Jika menggunakan rahasia saat membuat webhook, Anda harus memberikan kunci rahasia yang sama.

    Koneksi Layanan Webhook Masuk

  3. Jenis sumber daya baru yang disebut webhooks diperkenalkan di alur YAML. Untuk berlangganan peristiwa webhook, tentukan sumber daya webhook di alur Anda dan arahkan ke koneksi layanan webhook Masuk. Anda juga dapat menentukan lebih banyak filter pada sumber daya webhook, berdasarkan data payload JSON, untuk menyesuaikan pemicu untuk setiap alur. Gunakan data payload dalam bentuk variabel dalam pekerjaan Anda.

  4. Setiap kali koneksi layanan Webhook Masuk menerima peristiwa webhook, eksekusi baru akan dipicu untuk semua alur yang berlangganan peristiwa webhook. Anda dapat menggunakan data payload JSON dalam pekerjaan Anda menggunakan format ${{ parameters.<WebhookAlias>.<JSONPath>}}

resources:
  webhooks:
    - webhook: MyWebhookTriggerAlias           ### Webhook alias
      connection: IncomingWebhookConnection    ### Incoming webhook service connection
      filters:                                 ### List of JSON parameters to filter; Parameters are AND'ed
        - path: JSONParameterPath              ### JSON path in the payload
          value: JSONParameterExpectedValue    ### Expected value in the path provided

Webhook mengotomatiskan alur kerja Anda berdasarkan peristiwa webhook eksternal apa pun yang tidak didukung oleh sumber daya kelas satu, seperti alur, build, kontainer, dan paket. Selain itu, untuk layanan lokal di mana Azure DevOps tidak memiliki visibilitas ke dalam proses, Anda dapat mengonfigurasi webhook pada layanan dan untuk memicu alur Anda secara otomatis.

Pemilih versi manual untuk sumber daya dalam dialog buat eksekusi

Saat Anda memicu alur YAML CD secara manual, kami secara otomatis mengevaluasi versi default untuk sumber daya yang ditentukan dalam alur, berdasarkan input yang disediakan. Namun, Anda dapat memilih untuk memilih versi yang berbeda dari pemilih versi sumber daya saat membuat eksekusi.

  1. Di panel Buat eksekusi , pilih Sumber Daya. Anda melihat daftar sumber daya yang digunakan dalam alur ini.

  2. Pilih sumber daya dan pilih versi tertentu dari daftar versi yang tersedia. Pemilih versi sumber daya didukung untuk sumber daya alur, build, repositori, kontainer, dan paket.

    Pemilih Versi Alur

Untuk sumber daya alur, Anda dapat melihat semua eksekusi yang tersedia di semua cabang. Cari berdasarkan nomor atau cabang alur. Dan, pilih eksekusi yang berhasil, gagal, atau sedang berlangsung. Fleksibilitas ini memastikan bahwa Anda dapat menjalankan alur CD jika Anda yakin itu menghasilkan semua artefak yang Anda butuhkan. Anda tidak perlu menunggu eksekusi CI selesai atau dijalankan ulang karena kegagalan tahap yang tidak terkait dalam eksekusi CI. Namun, kami hanya mempertimbangkan berhasil menyelesaikan eksekusi CI saat kami mengevaluasi versi default untuk pemicu terjadwal, atau jika Anda tidak menggunakan pemilih versi manual.

Untuk sumber daya di mana Anda tidak dapat mengambil versi yang tersedia, seperti paket GitHub, kami menampilkan kotak teks sebagai bagian dari pemilih versi sehingga Anda dapat menyediakan versi untuk dijalankan untuk dipilih.

Mengotorisasi alur YAML

Sumber daya harus diotorisasi sebelum dapat digunakan. Pemilik sumber daya mengontrol pengguna dan alur yang dapat mengakses sumber daya tersebut. Alur harus diotorisasi untuk menggunakan sumber daya. Lihat cara berikut untuk mengotorisasi alur YAML.

  • Buka pengalaman administrasi sumber daya. Misalnya, grup variabel dan file aman dikelola di halaman Pustaka di bawah Alur. Kumpulan agen dan koneksi layanan dikelola di pengaturan Proyek. Di sini Anda dapat mengotorisasi semua alur untuk mengakses sumber daya tersebut. Otorisasi ini nyaman jika Anda tidak perlu membatasi akses ke sumber daya - misalnya, sumber daya pengujian.

  • Saat Anda membuat alur untuk pertama kalinya, semua sumber daya yang direferensikan dalam file YAML secara otomatis diotorisasi untuk digunakan oleh alur, jika Anda adalah anggota peran Pengguna untuk sumber daya tersebut. Jadi, sumber daya yang dirujuk dalam file YAML saat Anda membuat alur diotorisasi secara otomatis.

  • Saat Anda membuat perubahan pada file YAML dan menambahkan sumber daya, build gagal dengan kesalahan yang mirip dengan kesalahan berikut: Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.

    Dalam hal ini, Anda akan melihat opsi untuk mengotorisasi sumber daya pada build yang gagal. Jika Anda adalah anggota peran Pengguna untuk sumber daya, Anda dapat memilih opsi ini. Setelah sumber daya diotorisasi, Anda dapat memulai build baru.

  • Verifikasi bahwa peran keamanan kumpulan agen untuk proyek Anda sudah benar.

Mengatur pemeriksaan persetujuan untuk sumber daya

Anda dapat mengontrol secara manual saat sumber daya berjalan dengan pemeriksaan persetujuan dan templat. Dengan pemeriksaan persetujuan templat yang diperlukan, Anda dapat memerlukan alur apa pun menggunakan sumber daya atau lingkungan juga diperluas dari templat YAML tertentu. Mengatur persetujuan templat yang diperlukan meningkatkan keamanan. Pastikan sumber daya Anda hanya digunakan dalam kondisi tertentu dengan templat. Pelajari selengkapnya tentang cara meningkatkan keamanan alur dengan templat dan sumber daya.

Ketertelusuran

Kami menyediakan keterlacakan penuh untuk sumber daya apa pun yang digunakan pada tingkat pekerjaan alur atau penyebaran.

Keterlacakan alur

Untuk setiap eksekusi alur, kami menampilkan informasi berikut.

  • Sumber daya yang telah memicu alur, jika dipicu oleh sumber daya.

    Pemicu sumber daya dalam alur

  • Versi sumber daya dan artefak yang digunakan.

    Artefak yang digunakan dalam eksekusi alur

  • Menerapkan yang terkait dengan setiap sumber daya.

    Penerapan dalam eksekusi alur

  • Item kerja yang terkait dengan setiap sumber daya.

Keterlacakan lingkungan

Setiap kali alur disebarkan ke lingkungan, Anda dapat melihat daftar sumber daya yang digunakan. Tampilan berikut mencakup sumber daya yang digunakan sebagai bagian dari pekerjaan penyebaran dan penerapan terkait dan item kerjanya.

Penerapan di lingkungan

Perlihatkan informasi alur CD terkait dalam alur CI

Untuk memberikan keterlacakan end-to-end, Anda dapat melacak alur CD mana yang menggunakan alur CI pemberian. Anda dapat melihat daftar alur YAML CD berjalan di mana eksekusi alur CI dikonsumsi melalui pipeline sumber daya. Jika alur lain menggunakan alur CI Anda, Anda akan melihat tab "Alur terkait" dalam tampilan eksekusi. Di sini Anda dapat menemukan semua eksekusi alur yang mengonsumsi alur dan artefak Anda darinya.

Informasi alur CD dalam alur CI

Dukungan dan ketertelusuran masalah pemicu sumber daya YAML

Ini bisa membingungkan ketika pemicu alur gagal dijalankan. Kami telah menambahkan item menu baru di halaman definisi alur yang disebut Masalah Pemicu, tempat Anda dapat mempelajari mengapa pemicu tidak dijalankan. Untuk mengakses halaman ini, buka riwayat alur Anda. Masalah Pemicu hanya tersedia untuk sumber daya non-repositori.

Pilih Pemicu Masalah dari navigasi.

Pemicu sumber daya dapat gagal dijalankan karena alasan berikut.

  • Jika sumber koneksi layanan yang disediakan tidak valid, atau jika ada kesalahan sintaks dalam pemicu, pemicu tidak dikonfigurasi, mengakibatkan kesalahan.

  • Jika kondisi pemicu tidak cocok, pemicu tidak akan dijalankan. Peringatan muncul sehingga Anda dapat memahami mengapa kondisi tidak cocok.

    Memicu masalah dukungan

Langkah berikutnya

FAQ

Mengapa saya harus menggunakan alur alih-alih resourcesdownload pintasan?

pipelines Menggunakan sumber daya adalah cara untuk menggunakan artefak dari alur CI dan juga mengonfigurasi pemicu otomatis. Sumber daya memberi Anda visibilitas penuh ke dalam proses dengan menampilkan versi yang digunakan, artefak, penerapan, dan item kerja. Saat Anda menentukan sumber daya alur, artefak terkait diunduh secara otomatis dalam pekerjaan penyebaran.

Anda dapat memilih untuk mengunduh artefak dalam pekerjaan build atau untuk mengambil alih perilaku pengunduhan dalam pekerjaan penyebaran dengan download. Untuk informasi selengkapnya, lihat steps.download.

Mengapa saya harus menggunakan resources alih-alih tugas Unduh Artefak Alur?

Saat Anda menggunakan tugas Unduh Artefak Alur secara langsung, Anda melewatkan keterlacakan dan pemicu. Terkadang masuk akal untuk menggunakan tugas Unduh Artefak Alur secara langsung. Misalnya, Anda mungkin memiliki tugas skrip yang disimpan dalam templat yang berbeda dan tugas skrip memerlukan artefak dari build untuk diunduh. Atau, Anda mungkin tidak tahu apakah seseorang yang menggunakan templat ingin menambahkan sumber daya alur. Untuk menghindari dependensi, Anda dapat menggunakan tugas Unduh Artefak Alur untuk meneruskan semua informasi build ke tugas.

Bagaimana cara memicu eksekusi alur saat gambar Docker Hub saya diperbarui?

Anda harus menyiapkan alur rilis klasik karena pemicu sumber daya kontainer tidak tersedia untuk Docker Hub untuk alur YAML.

  1. Buat koneksi layanan Docker Hub baru.

  2. Buat alur rilis klasik dan tambahkan artefak Docker Hub. Atur koneksi layanan Anda. Pilih namespace, repositori, versi, dan alias sumber.

    Tambahkan artefak Docker Hub.

  3. Pilih pemicu dan alihkan pemicu penyebaran berkelanjutan ke Aktifkan. Anda akan membuat rilis setiap kali dorongan Docker terjadi ke repositori yang dipilih.

  4. Buat tahap dan pekerjaan baru. Tambahkan dua tugas, masuk Docker dan Bash:

  • Tugas Docker memiliki login tindakan dan mencatat Anda ke Docker Hub.

  • Tugas Bash berjalan docker pull <hub-user>/<repo-name>[:<tag>]. Ganti hub-user, repo-name, dan tag dengan nilai Anda.

    Tambahkan tugas masuk Docker dan Bash.

Bagaimana cara memvalidasi dan memecahkan masalah webhook?

  1. Membuat koneksi layanan.

  2. Referensikan koneksi layanan Anda dan beri nama webhook Anda di bagian .webhooks

    resources:
      webhooks:
        - webhook: MyWebhookTriggerAlias
          connection: MyServiceConnection
    
  3. Jalankan alur Anda. Saat Anda menjalankan alur, webhook akan dibuat di Azure sebagai tugas terdistribusi untuk organisasi Anda.

  4. POST Lakukan panggilan API dengan JSON yang valid dalam isi ke https://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}. Jika Anda menerima respons kode status 200, webhook Anda siap dikonsumsi oleh alur Anda. Jika Anda menerima respons kode status 500 dengan kesalahan Cannot find webhook for the given webHookId ..., kode Anda mungkin berada di cabang yang bukan cabang default Anda.

    1. Buka alur Anda.
    2. Pilih Edit.
    3. Pilih menu Pilih menu tindakan lainnya tindakan lainnya .
    4. Pilih Pemicu>YAML>Dapatkan Sumber.
    5. Buka Cabang default untuk build manual dan terjadwal untuk memperbarui cabang fitur Anda.
    6. Pilih Simpan & antrekan.
    7. Setelah alur ini berhasil dijalankan, lakukan POST panggilan API dengan JSON yang valid dalam isi ke https://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}. Anda sekarang akan menerima respons kode status 200.