Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Layanan Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Pekerjaan Azure Pipelines terdiri dari langkah-langkah, yang dapat berupa tugas atau skrip. Tugas adalah skrip atau prosedur yang dikemas sebelumnya yang melakukan tindakan atau menggunakan sekumpulan input untuk menentukan otomatisasi alur. Artikel ini menjelaskan tugas alur dan cara menggunakannya. Untuk informasi skema, lihat definisi steps.task .
Azure Pipelines mencakup banyak tugas bawaan yang memungkinkan skenario build dan penyebaran dasar. Untuk daftar tugas Azure Pipelines bawaan yang tersedia, lihat referensi tugas Azure Pipelines. Anda juga dapat menginstal tugas dari Visual Studio Marketplace atau membuat tugas kustom.
Secara default, semua langkah dalam pekerjaan berjalan secara berurutan dalam konteks yang sama, baik pada host atau dalam kontainer pekerjaan. Anda dapat secara opsional menggunakan target langkah untuk mengontrol konteks untuk tugas individual. Untuk menjalankan beberapa tugas secara paralel pada beberapa agen, atau tanpa menggunakan agen, lihat Menentukan pekerjaan di alur Anda.
Manajemen tugas
Tugas tersedia dan diinstal di tingkat organisasi Azure DevOps. Anda hanya bisa menggunakan tugas dan versi tugas yang ada untuk organisasi Anda.
Anda dapat menonaktifkan tugas bawaan, tugas Marketplace, atau keduanya di Pengaturan Organisasi>Pengaturan Alur>Pengaturan di bawah Pembatasan tugas. Jika Anda menonaktifkan tugas bawaan dan Marketplace, hanya tugas yang Anda instal dengan menggunakan Node CLI untuk Azure DevOps yang tersedia.
Menonaktifkan tugas Marketplace dapat membantu meningkatkan keamanan alur. Dalam sebagian besar keadaan, Anda tidak boleh menonaktifkan tugas bawaan. Untuk informasi selengkapnya, lihat Mengontrol tugas yang tersedia.
Tugas khusus
Visual Studio Marketplace menawarkan banyak ekstensi yang dapat Anda instal untuk memperluas katalog tugas Azure Pipelines. Anda juga dapat membuat tugas kustom. Untuk informasi selengkapnya, lihat Menambahkan ekstensi tugas alur kustom.
Di alur YAML, Anda merujuk ke tugas berdasarkan nama. Jika nama tugas kustom Anda cocok dengan nama tugas bawaan, alur menggunakan tugas bawaan. Untuk menghindari situasi ini, Anda dapat mereferensikan tugas kustom Anda dengan menggunakan GUID tugas unik yang Anda tetapkan saat membuat tugas. Untuk informasi selengkapnya, lihat Memahami komponen task.json.
Versi tugas
Tugas diberi versi, dan Anda harus menentukan versi utama tugas yang Anda gunakan dalam alur Anda. Menentukan versi membantu mencegah masalah saat versi baru tugas dirilis.
Alur secara otomatis diperbarui untuk menggunakan versi tugas minor baru, seperti 1.2 hingga 1.3. Versi minor dari tugas biasanya kompatibel dengan versi sebelumnya, tetapi dalam beberapa skenario Anda mungkin mengalami error yang tidak dapat diprediksi ketika tugas diperbarui secara otomatis.
Jika versi tugas utama baru seperti rilis 2.0, alur Anda terus menggunakan versi utama yang Anda tentukan hingga Anda mengedit alur untuk mengubah secara manual ke versi utama baru. Log build menyediakan pemberitahuan saat versi utama baru tersedia. Anda hanya bisa menggunakan versi tugas yang ada untuk organisasi Anda.
Di YAML, Anda menentukan versi utama dengan menggunakan @ dalam nama tugas. Misalnya, untuk menggunakan tugas versi 2 PublishTestResults , tentukan PublishTestResults@2. Anda dapat menentukan versi minor mana yang akan digunakan dengan memberikan nomor versi tugas lengkap setelah @, seperti GoTool@0.3.1.
Opsi tugas
Properti berikut ini tersedia untuk langkah alur task YAML. Untuk informasi selengkapnya, lihat definisi steps.task .
| Harta benda | Tipe | Description |
|---|---|---|
task |
string | Diperlukan sebagai properti pertama. Nama tugas yang akan dijalankan. |
inputs |
string | Masukan untuk tugas, menggunakan pasangan nama/nilai. |
condition |
string | Kondisi di mana tugas berjalan. |
continueOnError |
Boolean | Apakah akan tetap berjalan meskipun terjadi kegagalan. |
displayName |
string | Nama tugas yang mudah dimengerti oleh manusia. |
enabled |
Boolean | Apakah akan menjalankan tugas ini ketika pekerjaan berjalan. |
env |
string | Variabel yang dipetakan ke dalam lingkungan proses dengan menggunakan pasangan nama/nilai. |
name |
string | ID langkah. |
retryCountOnTaskFailure |
string | Jumlah percobaan ulang jika tugas gagal. |
target |
string | Lingkungan untuk menjalankan tugas ini. |
timeoutInMinutes |
string | Waktu maksimum tugas dapat berjalan sebelum dibatalkan secara otomatis. |
Kondisi
Tugas tidak dapat menentukan apakah akan melanjutkan pekerjaan alur setelah tugas selesai, hanya memberikan status akhir seperti succeeded atau failed. Tugas dan pekerjaan lanjutan kemudian dapat mengatur condition berdasarkan status tersebut untuk menentukan harus dijalankan atau tidak.
Properti kondisi menentukan kondisi di mana tugas ini berjalan. Secara default, langkah berjalan jika tidak ada yang gagal dalam pekerjaannya dan langkah langsung sebelumnya selesai.
Anda dapat mengambil alih atau menyesuaikan default ini dengan mengatur langkah untuk dijalankan meskipun atau hanya jika dependensi sebelumnya gagal atau memiliki hasil lain. Anda juga dapat menentukan kondisi kustom, yang terdiri dari ekspresi.
Catatan
Kondisi berlaku untuk semua dependensi langsung dan tidak langsung sebelumnya dengan kumpulan agen yang sama. Tahapan atau pekerjaan di kumpulan agen yang berbeda berjalan bersamaan.
Kondisi berdasarkan status dependensi sebelumnya meliputi:
-
Berhasil: Jalankan hanya jika semua dependensi sebelumnya berhasil. Perilaku ini adalah default jika tidak ada kondisi yang diatur dalam YAML. Untuk menerapkan kondisi ini, tentukan
condition: succeeded(). -
Berhasil atau gagal: Jalankan meskipun dependensi sebelumnya gagal, kecuali eksekusi dibatalkan. Untuk menerapkan kondisi ini, tentukan
condition: succeededOrFailed(). -
Selalu: Jalankan meskipun dependensi sebelumnya gagal, meskipun eksekusi dibatalkan. Untuk menerapkan kondisi ini, tentukan
condition: always(). -
Gagal: Jalankan hanya ketika dependensi sebelumnya gagal. Untuk menerapkan kondisi ini, tentukan
condition: failed().
Dalam contoh YAML berikut, PublishTestResults@2 dijalankan bahkan jika langkah sebelumnya gagal, sebab kondisi succeededOrFailed.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
architecture: 'x64'
- task: PublishTestResults@2
inputs:
testResultsFiles: "**/TEST-*.xml"
condition: succeededOrFailed()
Tetap Lanjutkan Saat Ada Kesalahan
Properti continueOnError memberi tahu tugas apakah akan terus berjalan dan melaporkan keberhasilan terlepas dari kegagalan. Jika diatur ke true, properti ini memberi tahu tugas untuk mengabaikan failed status dan terus berjalan. Langkah-langkah hilir dan pekerjaan memperlakukan hasil tugas seperti success ketika mereka membuat keputusan eksekusi mereka.
Diaktifkan
Secara default, tugas dijalankan setiap kali pekerjaan dijalankan. Anda dapat mengatur enabled ke false untuk menonaktifkan tugas. Menonaktifkan tugas untuk sementara berguna untuk menghapus tugas dari proses untuk tujuan pengujian atau untuk penyebaran tertentu.
Jumlah percobaan ulang pada kegagalan tugas
Properti retryCountOnTaskFailure menentukan berapa kali untuk mencoba kembali tugas jika gagal. Defaultnya adalah percobaan ulang nol.
- Jumlah maksimum percobaan ulang yang diizinkan adalah 10.
- Waktu tunggu sebelum mencoba lagi meningkat setelah setiap upaya yang gagal, mengikuti strategi mundur eksponensial. Percobaan ulang pertama terjadi setelah 1 detik, percobaan kembali kedua setelah 4 detik, dan coba lagi kesepuluh setelah 100 detik.
- Mengulangi tugas tidak memberikan sifat idempoten. Efek samping dari percobaan pertama, seperti membuat sebagian sumber daya eksternal, dapat menyebabkan percobaan ulang gagal.
- Tidak ada informasi tentang jumlah percobaan ulang yang tersedia untuk tugas.
- Kegagalan tugas akan menambahkan peringatan ke dalam log tugas yang menunjukkan bahwa tugas tersebut gagal sebelum diulang kembali.
- Semua upaya coba lagi ditampilkan di UI sebagai bagian dari simpul tugas yang sama.
Catatan
Properti retryCountOnTaskFailure memerlukan agen versi 2.194.0 atau yang lebih baru. Di Azure DevOps Server 2022, percobaan ulang tidak didukung untuk tugas tanpa agen. Untuk informasi selengkapnya, lihat Pembaruan layanan Azure DevOps 16 November 2021 - Percobaan ulang otomatis untuk tugas dan pembaruan layanan Azure DevOps 14 Juni 2025 - Coba lagi untuk tugas server.
Target
Tugas berjalan dalam konteks eksekusi, yang bisa merupakan host agen atau kontainer. Tugas dapat mengambil alih konteksnya dengan menentukan target. Opsi yang tersedia adalah host untuk menargetkan host agen, dan kontainer apa pun yang ditentukan dalam pipeline. Dalam contoh berikut, SampleTask@1 berjalan pada host dan AnotherTask@1 berjalan dalam kontainer.
resources:
containers:
- container: pycontainer
image: python:3.11
steps:
- task: SampleTask@1
target: host
- task: AnotherTask@1
target: pycontainer
Waktu habis
Periode pemutusan waktu dimulai ketika tugas mulai dieksekusi, dan tidak memperhitungkan waktu tugas diantrekan atau sedang menunggu agen.
Catatan
Alur kerja dapat menetapkan batas waktu di tingkat pekerjaan selain batas waktu di tingkat tugas. Jika interval batas waktu tingkat pekerjaan berlalu sebelum tugas selesai, pekerjaan yang sedang berjalan berakhir, bahkan jika tugas dikonfigurasi dengan interval batas waktu yang lebih lama. Untuk informasi selengkapnya, lihat Batas Waktu.
Variabel lingkungan
Anda dapat menggunakan variabel lingkungan untuk memetakan informasi yang ditentukan sistem atau pengguna ke dalam proses tugas.
Tugas alur YAML dapat menentukan env properti, yang mencantumkan string nama/nilai yang mewakili variabel lingkungan.
- task: AzureCLI@2
env:
ENV_VARIABLE_NAME: value
ENV_VARIABLE_NAME2: value
...
Anda dapat mengatur variabel lingkungan dengan menggunakan script langkah-langkah, atau dengan menggunakan skrip dalam tugas baris perintah, Bash, atau PowerShell.
Contoh berikut menjalankan langkah script yang menetapkan nilai ke variabel lingkungan ENV_VARIABLE_NAME dan menampilkan nilai tersebut.
- script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: value
displayName: 'echo environment variable'
Skrip sebelumnya secara fungsional sama dengan menjalankan tugas Bash@3 dengan script input. Contoh berikut menggunakan sintaks task.
- task: Bash@3
inputs:
script: echo "This is " $ENV_VARIABLE_NAME
env:
ENV_VARIABLE_NAME: value
displayName: 'echo environment variable'
Tugas alat pengembang
Tugas penginstalan alat build memungkinkan alur build Anda menginstal dan mengontrol dependensi. Anda dapat menggunakan tugas penginstal alat build untuk:
- Instal alat atau runtime untuk build, termasuk pada agen yang dihosting Microsoft.
- Validasi aplikasi atau pustaka Anda terhadap beberapa versi dependensi seperti Node.js.
Untuk daftar tugas alat penginstal, lihat Tugas alat.
Contoh: Menguji dan memvalidasi aplikasi pada beberapa versi Node.js
Contoh berikut menyiapkan alur build untuk menjalankan dan memvalidasi aplikasi pada beberapa versi Node.js.
Buat file azure-pipelines.yml yang memiliki konten berikut di direktori dasar proyek Anda.
pool:
vmImage: 'windows-latest'
jobs:
- job: NodeJS
strategy:
matrix:
node14:
nodeVersion: '14.x'
node16:
nodeVersion: '16.x'
maxParallel: 2
steps:
- task: NodeTool@0
displayName: 'Install Node.js $(nodeVersion)'
inputs:
versionSpec: '$(nodeVersion)'
checkLatest: true
- script: |
echo Using Node version $(nodeVersion)
node --version
displayName: 'Verify Node Installation'
Simpan dan jalankan pipeline. Pekerjaan berjalan dua kali, satu untuk setiap versi Node.js yang Anda tentukan dalam nodeVersion variabel.
Penginstal Alat Node.js akan mengunduh versi Node.js jika belum tersedia di agen. Skrip Baris Perintah menulis versi yang diinstal ke baris perintah.
Konten terkait
Bantuan dan dukungan
- Jelajahi tips pemecahan masalah.
- Dapatkan saran tentang Stack Overflow.
- Posting pertanyaan Anda, cari jawaban, atau sarankan fitur di Komunitas Pengembang Azure DevOps.
- Dapatkan dukungan untuk Azure DevOps.