Cara menggunakan variabel dan parameter dengan aman di alur Anda
Layanan Azure DevOps | Azure DevOps Server 2022 | Azure DevOps Server 2020
Artikel ini membahas cara menggunakan variabel dan parameter dengan aman untuk mengumpulkan input dari pengguna alur. Jika Anda ingin mempelajari selengkapnya tentang menggunakan variabel dan parameter, lihat:
- Tentukan variabel
- Atur variabel rahasia
- Menggunakan variabel yang telah ditentukan sebelumnya
- Menggunakan parameter runtime
- Jenis templat & penggunaan
Berhati-hatilah dengan variabel rahasia. Cara yang disarankan untuk mengatur variabel rahasia ada di UI, dalam grup variabel, dan dalam grup variabel dari Azure Key Vault. Untuk informasi selengkapnya, lihat mengatur variabel rahasia.
Variabel
Variabel dapat menjadi cara mudah untuk mengumpulkan informasi dari pengguna di muka. Anda juga dapat menggunakan variabel untuk meneruskan data dari langkah ke langkah dalam alur.
Tetapi gunakan variabel dengan hati-hati. Variabel yang baru dibuat, baik didefinisikan dalam YAML atau ditulis oleh skrip, dibaca-tulis secara default. Langkah hilir dapat mengubah nilai variabel dengan cara yang tidak Anda harapkan.
Misalnya, skrip Anda membaca:
msbuild.exe myproj.proj -property:Configuration=$(MyConfig)
Langkah sebelumnya dapat diatur MyConfig
ke Debug & deltree /y c:
.
Meskipun contoh ini hanya akan menghapus konten agen build Anda, Anda dapat membayangkan bagaimana pengaturan ini dapat dengan mudah menjadi jauh lebih berbahaya.
Anda dapat membuat variabel baca-saja.
Variabel sistem seperti Build.SourcesDirectory
, variabel output tugas, dan variabel waktu antrean selalu baca-saja.
Variabel yang dibuat di YAML atau dibuat pada waktu proses oleh skrip dapat ditetapkan sebagai baca-saja.
Saat skrip atau tugas membuat variabel baru, skrip atau tugas dapat meneruskan isReadonly=true
bendera dalam perintah pengelogannya untuk membuat variabel baca-saja.
Di YAML, Anda dapat menentukan variabel baca-saja dengan menggunakan kunci tertentu:
variables:
- name: myReadOnlyVar
value: myValue
readonly: true
Variabel waktu antrean
Saat menentukan variabel di editor UI Alur, Anda dapat memilih untuk membiarkan pengguna mengambil alih nilainya saat menjalankan alur. Kami menyebut variabel seperti itu sebagai variabel waktu antrean. Variabel waktu antrean selalu didefinisikan di editor UI Alur.
Variabel waktu antrean diekspos ke pengguna akhir saat mereka menjalankan alur secara manual, dan mereka dapat mengubah nilainya.
Pengguna memerlukan izin edit konfigurasi build antrean pada alur untuk menentukan variabel yang ditetapkan pada waktu antrean.
Batasi variabel yang dapat diatur pada waktu antrean
UI dan REST API yang digunakan untuk menjalankan alur menyediakan sarana bagi pengguna untuk menentukan variabel baru pada waktu antrean.
Pada awal-awal Azure Pipelines, fungsionalitas ini memiliki beberapa masalah:
- Ini memungkinkan pengguna untuk menentukan variabel baru yang tidak secara eksplisit ditentukan oleh penulis alur dalam definisi.
- Hal ini memungkinkan pengguna untuk mengambil alih variabel sistem.
Untuk memperbaiki masalah ini, kami menentukan pengaturan untuk membatasi variabel yang dapat diatur pada waktu antrean. Dengan mengaktifkan pengaturan ini, hanya variabel yang secara eksplisit ditandai sebagai "Dapat diatur pada waktu antrean" yang dapat diatur. Dengan kata lain, Anda dapat mengatur variabel apa pun pada waktu antrean kecuali jika pengaturan ini diaktifkan.
Pengaturan ini dirancang untuk bekerja di tingkat organisasi dan di tingkat proyek.
- Tingkat organisasi. Ketika pengaturan aktif, pengaturan memberlakukan bahwa, untuk semua alur di semua proyek di organisasi, hanya variabel yang secara eksplisit ditandai sebagai "Dapat Diatur pada waktu antrean" yang dapat diatur. Saat pengaturan nonaktif, setiap proyek dapat memilih apakah akan membatasi variabel yang ditetapkan pada waktu antrean atau tidak. Pengaturan adalah tombol di bawah Organisasi Pengaturan -> Alur -> Pengaturan. Hanya Administrator Koleksi Proyek yang dapat mengaktifkan atau menonaktifkannya.
- Tingkat proyek. Ketika pengaturan aktif, pengaturan memberlakukan bahwa, untuk semua alur dalam proyek, hanya variabel yang secara eksplisit ditandai sebagai "Dapat Diatur pada waktu antrean" yang dapat diatur. Jika pengaturan aktif di tingkat organisasi, pengaturan aktif untuk semua proyek dan tidak dapat dinonaktifkan. Pengaturannya adalah tombol di bawah Project Pengaturan -> Pipelines -> Pengaturan. Hanya Administrator Proyek yang dapat mengaktifkan atau menonaktifkannya.
Mari kita lihat contohnya. Katakanlah pengaturan aktif dan alur Anda menentukan variabel bernama my_variable
yang tidak dapat diatur pada waktu antrean.
Selanjutnya, asumsikan Anda ingin menjalankan alur. Panel Variabel tidak menampilkan variabel apa pun, dan tombol Tambahkan variabel hilang.
Menggunakan Panggilan Builds - Queue dan Runs - Run Pipeline REST API untuk mengantre eksekusi alur dan mengatur nilai my_variable
atau variabel baru akan gagal dengan kesalahan yang mirip dengan yang berikut ini.
{
"$id": "1",
"innerException": null,
"message": "You can't set the following variables (my_variable). If you want to be able to set these variables, then edit the pipeline and select Settable at queue time on the variables tab of the pipeline editor.",
"typeName": "Microsoft.Azure.Pipelines.WebApi.PipelineValidationException, Microsoft.Azure.Pipelines.WebApi",
"typeKey": "PipelineValidationException",
"errorCode": 0,
"eventId": 3000
}
Parameter
Tidak seperti variabel, parameter alur tidak dapat diubah oleh alur saat sedang berjalan.
Parameter memiliki jenis data seperti number
dan string
, dan dapat dibatasi untuk subset nilai.
Membatasi parameter berguna ketika bagian alur yang dapat dikonfigurasi pengguna harus mengambil nilai hanya dari daftar yang dibatasi. Penyiapan memastikan bahwa alur tidak akan mengambil data arbitrer.
Mengaktifkan validasi parameter argumen tugas shell
Alur dapat mereferensikan tugas yang dijalankan dalam alur. Beberapa tugas yang disertakan dalam Azure DevOps memiliki parameter argumen yang memungkinkan Anda menentukan lebih banyak opsi untuk tugas tersebut.
Saat pengaturan Aktifkan validasi parameter argumen tugas shell diaktifkan, parameter argumen ditinjau untuk karakter apa pun yang mungkin tidak dijalankan dengan benar oleh shell. Contoh karakter termasuk titik koma, tanda kutip, dan tanda kurung.
Mirip dengan variabel Batas yang dapat diatur pada opsi waktu antrean, Aktifkan validasi parameter argumen tugas shell dapat dikonfigurasi pada tingkat organisasi di Pengaturan> Pipelines> Pengaturan atau di tingkat proyek di Pengaturan> Pipelines Pengaturan>.
Saat diaktifkan, ada masalah validasi yang terdeteksi, pesan kesalahan seperti berikut ini dicatat: Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`).
Untuk mengatasi masalah ini, sesuaikan argumen dengan melarikan diri karakter khusus seperti yang ditunjukkan dalam pesan kesalahan.
Saat Aktifkan validasi parameter argumen tugas shell diaktifkan, validasi diterapkan ke parameter argumen dalam tugas berikut.
- PowerShell
- BatchScript
- Bash
- Ssh
- AzureFileCopy
- WindowsMachineFileCopy
Langkah berikutnya
Setelah mengamankan input, Anda juga perlu mengamankan infrastruktur bersama Anda.