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 setelahvmImage
.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.
- Mengelola keamanan Kelola keamanan -
- Ganti nama/pindah - Edit nama alur dan lokasi folder Anda.
- Lencana - status Tambahkan lencana status ke repositori Anda
- Hapus - Menghapus alur termasuk semua build dan artefak terkait.
- - Tampilan eksekusi Terjadwal eksekusi terjadwal
Pilih Pengaturan untuk mengonfigurasi pengaturan alur berikut.
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.- Untuk mendapatkan pemberitahuan saat eksekusi Anda gagal, lihat cara Mengelola pemberitahuan untuk tim
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.
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.