Bagikan melalui


Mengkustomisasi alur Anda

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

Ini adalah panduan langkah demi langkah tentang cara umum untuk menyesuaikan alur Anda.

Prasyarat

Ikuti instruksi di Membuat alur pertama Anda untuk membuat alur yang berfungsi.

azure-pipelines.yml Memahami file

Alur didefinisikan menggunakan file YAML di repositori Anda. Biasanya, file ini diberi nama azure-pipelines.yml dan terletak di akar repositori Anda.

Navigasi ke halaman Alur di Azure Pipelines, pilih alur yang Anda buat, dan pilih Edit di menu konteks alur untuk membuka editor YAML untuk alur.

Catatan

Untuk petunjuk tentang cara melihat dan mengelola alur Anda di portal Azure DevOps, lihat Menampilkan dan mengelola alur Anda.

Periksa konten file YAML.

 trigger:
 - main

 pool:
   vmImage: 'ubuntu-latest'

 steps:
 - task: Maven@4
   inputs:
     mavenPomFile: 'pom.xml'
     mavenOptions: '-Xmx3072m'
     javaHomeOption: 'JDKVersion'
     jdkVersionOption: '1.11'
     jdkArchitectureOption: 'x64'
     publishJUnitResults: false
     testResultsFiles: '**/surefire-reports/TEST-*.xml'
     goals: 'package'

Catatan

Konten file YAML Anda mungkin berbeda tergantung pada repositori sampel yang Anda mulai, atau peningkatan yang dibuat di Azure Pipelines.

Alur ini berjalan setiap kali tim Anda mendorong perubahan ke cabang utama repositori Anda atau membuat permintaan pull. Ini berjalan pada komputer Linux yang dihosting Microsoft. Proses alur memiliki satu langkah, yaitu menjalankan tugas Maven.

Mengubah platform untuk dibangun

Anda dapat membangun proyek di agen yang dihosting Microsoft yang sudah menyertakan SDK dan alat untuk berbagai bahasa pengembangan. Atau, Anda dapat menggunakan agen yang dihost sendiri dengan alat tertentu yang Anda butuhkan.

  • Navigasikan ke editor untuk alur Anda dengan memilih Edit tindakan alur pada build, atau dengan memilih Edit dari halaman utama alur.

  • Saat ini alur berjalan pada agen Linux:

    pool:
      vmImage: "ubuntu-latest"
    
  • Untuk memilih platform lain seperti Windows atau Mac, ubah nilainya vmImage :

    pool:
      vmImage: "windows-latest"
    
    pool:
      vmImage: "macos-latest"
    
  • Pilih Simpan lalu konfirmasi perubahan untuk melihat alur Anda berjalan di platform lain.

Tambahkan langkah-langkah

Anda dapat menambahkan lebih banyak skrip atau tugas sebagai langkah-langkah ke alur Anda. Tugas adalah skrip pra-paket. Anda dapat menggunakan tugas untuk membangun, menguji, menerbitkan, atau menyebarkan aplikasi Anda. Untuk Java, tugas Maven yang kami gunakan menangani hasil pengujian dan penerbitan, namun, Anda dapat menggunakan tugas untuk menerbitkan hasil cakupan kode juga.

  • Buka editor YAML untuk alur Anda.

  • Tambahkan cuplikan berikut ke akhir file YAML Anda.

    - task: PublishCodeCoverageResults@1
      inputs:
        codeCoverageTool: "JaCoCo"
        summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/site/jacoco/jacoco.xml"
        reportDirectory: "$(System.DefaultWorkingDirectory)/**/site/jacoco"
        failIfCoverageEmpty: true
    
  • Pilih Simpan lalu konfirmasi perubahan.

  • Anda dapat melihat hasil cakupan pengujian dan kode dengan memilih build Anda dan masuk ke tab Uji dan Cakupan .

Membangun di beberapa platform

Anda dapat membangun dan menguji proyek Anda di beberapa platform. Salah satu cara untuk melakukannya adalah dengan strategy dan matrix. Anda dapat menggunakan variabel untuk memasukkan data dengan nyaman ke berbagai bagian alur. Untuk contoh ini, kita akan menggunakan variabel untuk meneruskan nama gambar yang ingin kita gunakan.

  • Di file Anda azure-pipelines.yml , ganti konten ini:

    pool:
      vmImage: "ubuntu-latest"
    

    dengan konten berikut:

    strategy:
      matrix:
        linux:
          imageName: "ubuntu-latest"
        mac:
          imageName: "macOS-latest"
        windows:
          imageName: "windows-latest"
      maxParallel: 3
    
    pool:
      vmImage: $(imageName)
    
  • Pilih Simpan lalu konfirmasi perubahan untuk melihat build Anda berjalan hingga tiga pekerjaan di tiga platform yang berbeda.

Setiap agen hanya dapat menjalankan satu pekerjaan pada satu waktu. Untuk menjalankan beberapa pekerjaan secara paralel, Anda harus mengonfigurasi beberapa agen. Anda juga memerlukan pekerjaan paralel yang memadai.

Membangun menggunakan beberapa versi

Untuk membuat proyek menggunakan versi bahasa tersebut yang berbeda, Anda dapat menggunakan matrix versi dan variabel. Dalam langkah ini, Anda dapat membangun proyek Java dengan dua versi Java yang berbeda pada satu platform atau menjalankan versi Java yang berbeda di platform yang berbeda.

Catatan

Anda tidak dapat menggunakan strategy beberapa kali dalam konteks.

  • Jika Anda ingin membangun pada satu platform dan beberapa versi, tambahkan matriks berikut ke file Anda azure-pipelines.yml sebelum tugas Maven dan setelah vmImage.

    strategy:
      matrix:
        jdk10:
          jdkVersion: "1.10"
        jdk11:
          jdkVersion: "1.11"
      maxParallel: 2
    
  • Kemudian ganti baris ini dalam tugas maven Anda:

    jdkVersionOption: "1.11"
    

    dengan baris ini:

    jdkVersionOption: $(jdkVersion)
    
  • Pastikan untuk mengubah $(imageName) variabel kembali ke platform pilihan Anda.

  • Jika Anda ingin membangun di beberapa platform dan versi, ganti seluruh konten dalam file Anda azure-pipelines.yml sebelum tugas penerbitan dengan cuplikan berikut:

    trigger:
    - main
    
    strategy:
      matrix:
        jdk10_linux:
          imageName: "ubuntu-latest"
          jdkVersion: "1.10"
        jdk11_windows:
          imageName: "windows-latest"
          jdkVersion: "1.11"
      maxParallel: 2
    
    pool:
      vmImage: $(imageName)
    
    steps:
    - task: Maven@4
      inputs:
        mavenPomFile: "pom.xml"
        mavenOptions: "-Xmx3072m"
        javaHomeOption: "JDKVersion"
        jdkVersionOption: $(jdkVersion)
        jdkArchitectureOption: "x64"
        publishJUnitResults: true
        testResultsFiles: "**/TEST-*.xml"
        goals: "package"
    
  • Pilih Simpan lalu konfirmasi perubahan untuk melihat build Anda menjalankan dua pekerjaan di dua platform dan SDK yang berbeda.

Menyesuaikan pemicu CI

Pemicu alur menyebabkan alur berjalan. Anda dapat menggunakan trigger: untuk menyebabkan alur berjalan setiap kali Anda mendorong pembaruan ke cabang. Alur YAML dikonfigurasi secara default dengan pemicu CI pada cabang default Anda (yang biasanya main). Anda dapat menyiapkan pemicu untuk cabang tertentu atau untuk validasi permintaan pull. Untuk pemicu validasi permintaan pull, cukup ganti trigger: langkah dengan pr: seperti yang ditunjukkan pada dua contoh di bawah ini. Secara default, alur berjalan untuk setiap perubahan permintaan pull.

  • Jika Anda ingin menyiapkan pemicu, tambahkan salah satu cuplikan berikut di awal file Anda azure-pipelines.yml .

    trigger:
      - main
      - releases/*
    
    pr:
      - main
      - releases/*
    

    Anda dapat menentukan nama lengkap cabang (misalnya, main) atau wildcard yang cocok dengan awalan (misalnya, releases/*).

Pengaturan alur

Anda dapat melihat dan mengonfigurasi pengaturan alur dari menu Tindakan lainnya di halaman detail alur.

Cuplikan layar pengaturan alur dan menu tindakan lainnya.

Pilih Pengaturan untuk mengonfigurasi pengaturan alur berikut.

Cuplikan layar halaman pengaturan alur.

Dari panel Pengaturan alur, Anda dapat mengonfigurasi pengaturan berikut.

  • Pemrosesan permintaan eksekusi baru - Terkadang Anda ingin mencegah eksekusi baru dimulai pada alur Anda.

    • Secara default, pemrosesan permintaan eksekusi baru Diaktifkan. Pengaturan ini memungkinkan pemrosesan standar semua jenis pemicu, termasuk eksekusi manual.
    • Alur yang dijeda memungkinkan permintaan eksekusi diproses, tetapi permintaan tersebut diantrekan tanpa benar-benar dimulai. Saat pemrosesan permintaan baru diaktifkan, jalankan pemrosesan dilanjutkan dimulai dengan permintaan pertama dalam antrean.
    • Alur yang dinonaktifkan mencegah pengguna memulai eksekusi baru. Semua pemicu juga dinonaktifkan saat pengaturan ini diterapkan. Semua kebijakan build yang menggunakan alur yang dinonaktifkan akan menampilkan pesan "Tidak dapat mengantre Build" di samping kebijakan build di jendela gambaran umum PR dan status kebijakan build akan rusak.
  • Jalur file YAML - Jika Anda perlu mengarahkan alur Anda untuk menggunakan file YAML yang berbeda, Anda dapat menentukan jalur ke file tersebut. Pengaturan ini juga dapat berguna jika Anda perlu memindahkan/mengganti nama file YAML Anda.

  • Secara otomatis menautkan item kerja yang disertakan dalam eksekusi ini - Perubahan yang terkait dengan eksekusi alur tertentu mungkin memiliki item kerja yang terkait dengannya. Pilih opsi ini untuk menautkan item kerja tersebut ke eksekusi. Saat Secara otomatis menautkan item kerja yang disertakan dalam eksekusi ini dipilih, Anda harus menentukan cabang tertentu, atau * untuk semua cabang, yang merupakan default. Jika Anda menentukan cabang, item kerja hanya dikaitkan dengan eksekusi cabang tersebut. Jika Anda menentukan *, item kerja dikaitkan untuk semua eksekusi.

    Cuplikan layar pengaturan untuk menautkan item kerja secara otomatis yang disertakan dalam eksekusi ini.

Mengelola keamanan

Anda dapat mengonfigurasi keamanan alur pada tingkat proyek dari tindakan Lainnya di halaman arahan alur, dan pada tingkat alur di halaman detail alur.

Cuplikan layar opsi menu keamanan alur.

Untuk mendukung keamanan operasi alur, Anda dapat menambahkan pengguna ke grup keamanan bawaan, mengatur izin individual untuk pengguna atau grup, atau menambahkan pengguna ke peran yang telah ditentukan sebelumnya. Anda dapat mengelola keamanan untuk Azure Pipelines di portal web, baik dari konteks pengguna atau admin. Untuk informasi selengkapnya tentang mengonfigurasi keamanan alur, lihat Izin alur dan peran keamanan.

Membuat item kerja saat gagal

Alur YAML tidak memiliki pengaturan Buat item kerja pada kegagalan seperti alur build klasik. Alur build klasik adalah tahap tunggal, dan Buat item kerja pada kegagalan berlaku untuk seluruh alur. Alur YAML bisa multi-tahap, dan pengaturan tingkat alur mungkin tidak sesuai. Untuk menerapkan Buat item kerja pada kegagalan dalam alur YAML, Anda dapat menggunakan metode seperti perintah Buat Item Kerja - Buat REST API atau perintah buat item kerja az papan Azure DevOps CLI pada titik yang diinginkan di alur Anda.

Contoh berikut memiliki dua pekerjaan. Pekerjaan pertama mewakili pekerjaan alur, tetapi jika gagal, pekerjaan kedua berjalan, dan membuat bug dalam proyek yang sama dengan alur.

# When manually running the pipeline, you can select whether it
# succeeds or fails.
parameters:
- name: succeed
  displayName: Succeed or fail
  type: boolean
  default: false

trigger:
- main

pool:
  vmImage: ubuntu-latest

jobs:
- job: Work
  steps:
  - script: echo Hello, world!
    displayName: 'Run a one-line script'

  # This malformed command causes the job to fail
  # Only run this command if the succeed variable is set to false
  - script: git clone malformed input
    condition: eq(${{ parameters.succeed }}, false)

# This job creates a work item, and only runs if the previous job failed
- job: ErrorHandler
  dependsOn: Work
  condition: failed()
  steps: 
  - bash: |
      az boards work-item create \
        --title "Build $(build.buildNumber) failed" \
        --type bug \
        --org $(System.TeamFoundationCollectionUri) \
        --project $(System.TeamProject)
    env: 
      AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
    displayName: 'Create work item on failure'

Catatan

Azure Boards memungkinkan Anda mengonfigurasi pelacakan item kerja menggunakan beberapa proses yang berbeda, seperti Agile atau Basic. Setiap proses memiliki jenis item kerja yang berbeda, dan tidak setiap jenis item kerja tersedia di setiap proses. Untuk daftar jenis item kerja yang didukung oleh setiap proses, lihat Jenis item kerja (WIT).

Contoh sebelumnya menggunakan parameter Runtime untuk mengonfigurasi apakah alur berhasil atau gagal. Saat menjalankan alur secara manual, Anda dapat mengatur nilai succeed parameter. Langkah kedua script dalam pekerjaan pertama alur mengevaluasi succeed parameter dan hanya berjalan ketika succeed diatur ke false.

Pekerjaan kedua dalam alur memiliki dependensi pada pekerjaan pertama dan hanya berjalan jika pekerjaan pertama gagal. Pekerjaan kedua menggunakan perintah buat item kerja azure DevOps CLI az boards untuk membuat bug. Untuk informasi selengkapnya tentang menjalankan perintah Azure DevOps CLI dari alur, lihat Menjalankan perintah dalam alur YAML.

Alur YAML tidak memiliki pengaturan Buat item kerja pada kegagalan seperti alur build klasik. Alur build klasik adalah tahap tunggal, dan Buat item kerja pada kegagalan berlaku untuk seluruh alur. Alur YAML bisa multi-tahap, dan pengaturan tingkat alur mungkin tidak sesuai. Untuk menerapkan Buat item kerja saat gagal dalam alur YAML, Anda dapat menggunakan panggilan Item Kerja - Buat REST API pada titik yang diinginkan di alur Anda.

Contoh berikut memiliki dua pekerjaan. Pekerjaan pertama mewakili pekerjaan alur, tetapi jika gagal, pekerjaan kedua berjalan, dan membuat bug dalam proyek yang sama dengan alur.

# When manually running the pipeline, you can select whether it
# succeeds or fails.
parameters:
- name: succeed
  displayName: Succeed or fail
  type: boolean
  default: false

trigger:
- main

pool:
  vmImage: ubuntu-latest

jobs:
- job: Work
  steps:
  - script: echo Hello, world!
    displayName: 'Run a one-line script'

  # This malformed command causes the job to fail
  # Only run this command if the succeed variable is set to false
  - script: git clone malformed input
    condition: eq(${{ parameters.succeed }}, false)

# This job creates a work item, and only runs if the previous job failed
- job: ErrorHandler
  dependsOn: Work
  condition: failed()
  steps: 
  - bash: |
      curl \
        -X POST \
        -H 'Authorization: Basic $(System.AccessToken)' \
        -H 'Content-Type: application/json-patch+json' \
        -d '[
              {
                "op": "add",
                "path": "/fields/System.Title",
                "from": null,
                "value": "git clone failed"
              }
            ]' \
        "$(System.CollectionUri)$(System.TeamProject)/_apis//wit/workitems/$Bug?api-version=7.1-preview.3
"
    env:
        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    displayName: 'Create work item on failure'

Catatan

Azure Boards memungkinkan Anda mengonfigurasi pelacakan item kerja menggunakan beberapa proses yang berbeda, seperti Agile atau Basic. Setiap proses memiliki jenis item kerja yang berbeda, dan tidak setiap jenis item kerja tersedia di setiap proses. Untuk daftar jenis item kerja yang didukung oleh setiap proses, lihat Jenis item kerja (WIT).

Contoh sebelumnya menggunakan parameter Runtime untuk mengonfigurasi apakah alur berhasil atau gagal. Saat menjalankan alur secara manual, Anda dapat mengatur nilai succeed parameter. Langkah kedua script dalam pekerjaan pertama alur mengevaluasi succeed parameter dan hanya berjalan ketika succeed diatur ke false.

Pekerjaan kedua dalam alur memiliki dependensi pada pekerjaan pertama dan hanya berjalan jika pekerjaan pertama gagal. Pekerjaan kedua menggunakan perintah buat item kerja Azure DevOps API az boards untuk membuat bug.

Contoh ini menggunakan dua pekerjaan, tetapi pendekatan yang sama ini dapat digunakan di beberapa tahap.

Catatan

Anda juga dapat menggunakan ekstensi marketplace seperti Kegagalan Create Bug on Release yang memiliki dukungan untuk alur multi-tahap YAML.

Langkah berikutnya

Anda telah mempelajari dasar-dasar penyesuaian alur Anda. Selanjutnya kami sarankan Anda mempelajari selengkapnya tentang menyesuaikan alur untuk bahasa yang Anda gunakan:

Atau, untuk menumbuhkan alur CI Anda ke alur CI/CD, sertakan pekerjaan penyebaran dengan langkah-langkah untuk menyebarkan aplikasi Anda ke lingkungan.

Untuk mempelajari selengkapnya tentang topik dalam panduan ini, lihat Pekerjaan, Tugas, Katalog Tugas, Variabel, Pemicu, atau Pemecahan Masalah.

Untuk mempelajari hal lain yang dapat Anda lakukan di alur YAML, lihat referensi skema YAML.