Sistem Variabel CI GitLab memungkinkan Anda memasukkan data ke dalam lingkungan kerja CI Anda. Anda dapat menggunakan variabel untuk memberikan nilai konfigurasi, membuat jalur pipa yang dapat digunakan kembali, dan menghindari hardcoding informasi sensitif di . Anda .gitlab-ci.yml
file.
Dalam panduan ini, kita akan melihat bagaimana Anda dapat mengatur dan menggunakan variabel dalam sistem CI Anda sendiri. Ada beberapa opsi yang tersedia tergantung di mana Anda ingin menampilkan nilai dan seberapa sering Anda ingin mengubahnya.
Dasar
Pada variabel paling sederhananya adalah pasangan nilai kunci yang disuntikkan sebagai variabel lingkungan ke dalam konteks eksekusi pipeline Anda. Anda dapat mereferensikannya di dalam .gitlab-ci.yml
file sebagai variabel lingkungan standar:
test: script: - echo "$EXAMPLE_VARIABLE"
Anda dapat melarikan diri dari $
karakter menggunakan $$VARIABLE
sintaksis:
test: script: - echo "$$EXAMPLE_VARIABLE"
Contoh ini akan menyebabkan $EXAMPLE_VARIABLE
untuk dicatat, alih-alih nilai dari EXAMPLE_VARIABLE
variabel seperti gambar di atas.
Variabel tersedia dalam lingkungan pekerjaan. Mereka juga dapat digabungkan dengan nilai bidang lain di . Anda .gitlab-ci.yml
file, yang memungkinkan konfigurasi pipa dinamis:
build: image: $CI_REGISTRY_IMAGE/build-utils:latest
GitLab CI mendefinisikan beberapa variabel bawaan yang selalu tersedia. Ini termasuk detail permintaan komit, cabang, dan penggabungan yang dijalankan oleh pipeline. Variabel akses yang telah ditentukan sebelumnya juga menyediakan kredensial per pekerjaan untuk mengakses fitur GitLab lainnya seperti Container Registry dan Dependency Proxy.
Di luar variabel bawaan ini, Anda dapat menetapkan nilai Anda sendiri di banyak tempat. Variabel tingkat instance, grup, proyek, dan pipeline didukung, memberi Anda fleksibilitas saat menyetel nilai fallback, default, dan penggantian. Anda dapat mengatur variabel menggunakan GitLab UI atau API; kami berfokus pada UI dalam panduan ini.
Mendefinisikan Variabel
Variabel dibuat pada layar Pengaturan > CI/CD > Variabel dari rentang yang Anda inginkan agar tersedia. Untuk variabel tingkat proyek, itu berarti masuk ke Pengaturan > CI/CD dari bilah sisi kiri GitLab saat melihat halaman di dalam proyek. Demikian pula, untuk variabel tingkat grup, navigasikan ke grup dan gunakan bilah sisi untuk mencapai pengaturan CI-nya. Variabel tingkat instans dapat ditemukan melalui rute yang sama di Area Admin GitLab.
Luaskan bagian “Variabel” untuk melihat variabel apa pun yang telah ditentukan. Klik tombol biru “Tambahkan variabel” untuk mulai menambahkan item baru ke daftar.
Setiap variabel membutuhkan Kunci unik; ini adalah bagaimana Anda mereferensikan variabel di dalam pipa Anda dan skripnya. Nama yang Anda pilih harus cocok dengan shell yang akan menjalankan pekerjaan Anda – jika Anda memilih kata kunci yang dipesan, pekerjaan Anda mungkin gagal. Semua variabel harus berupa string valid yang hanya berisi karakter alfanumerik dan garis bawah.
Selanjutnya atur nilai variabel Anda. Ketika dropdown “Jenis” dibiarkan di “Variabel”, nilai ini akan disuntikkan seperti itu setiap kali Anda mereferensikan variabel dalam pipa Anda. Mengubah jenis menjadi “File” akan menyuntikkan nilai sebagai file sementara ke lingkungan build Anda; nilai variabel lingkungan akan menjadi jalur ke file sementara itu. Ini bisa menjadi cara yang lebih aman untuk memasukkan data sensitif jika aplikasi Anda siap membaca nilai terakhir dari file yang ditentukan.
Setelah selesai, klik tombol hijau “Tambahkan variabel” untuk menyelesaikan prosesnya. Anda sekarang dapat mereferensikan variabel Anda di saluran pipa yang akan dieksekusi dalam lingkup yang Anda tetapkan. Untuk variabel proyek, itu akan ditentukan untuk saluran pipa dalam proyek itu, sedangkan variabel tingkat instans akan tersedia untuk setiap saluran di server GitLab Anda.
Variabel dapat dikelola kapan saja dengan kembali ke layar pengaturan lingkup yang mereka atur. Klik tombol Edit (ikon pensil) di sebelah variabel apa pun untuk menampilkan dialog edit dan mengubah properti variabel. Dialog ini juga menyediakan cara untuk menghapus variabel yang berlebihan.
Variabel yang Dilindungi
Variabel dapat ditandai sebagai “dilindungi” dengan memilih kotak centang di dialog “tambah variabel”. Opsi ini berarti bahwa variabel hanya akan ditentukan dalam pipeline yang berjalan melawan cabang atau tag yang dilindungi.
Variabel yang dilindungi sangat ideal dalam situasi di mana Anda mengekspos nilai sensitif seperti kunci penerapan yang tidak akan digunakan di setiap saluran. Membatasi nilai itu hanya untuk saluran pipa yang benar-benar membutuhkannya (seperti pekerjaan penerapan yang berjalan di bawah perlindungan Anda release
cabang) mengurangi risiko kebocoran yang tidak disengaja.
Variabel Bertopeng
Opsi “Variabel topeng” adalah cara lain untuk meningkatkan keamanan variabel Anda. Ketika kotak centang ini diaktifkan, GitLab akan secara otomatis memfilter nilai variabel dari log pekerjaan yang dikumpulkan. Sesuatu yang tidak disengaja echo $SECRET_VALUE
akan dibersihkan, mengurangi risiko pengguna melihat nilai token sensitif saat mereka memeriksa log pekerjaan menggunakan UI web GitLab.
Penyembunyian yang berhasil membutuhkan nilai variabel untuk diidentifikasi secara andal dalam log. Karena itu, ini hanya berfungsi untuk nilai yang memenuhi persyaratan pemformatan tertentu. Format token autentikasi yang paling umum, serta semua data yang disandikan Base64, kompatibel. Masking hanya berfungsi untuk nilai hingga ukuran 4 KiB.
Variabel Tingkat Lingkungan
Variabel dapat ditugaskan ke lingkungan tertentu. Fitur ini memungkinkan pipeline Anda bekerja dengan konfigurasi yang berbeda bergantung pada lingkungan di mana pipeline diterapkan.
Gunakan tarik-turun “Cakupan lingkungan” di dialog “Tambahkan variabel” untuk memilih lingkungan bagi variabel Anda. Variabel hanya akan ditentukan dalam saluran pipa yang menentukan lingkungan yang dipilih oleh environment
lapangan untuk .gitlab-ci.yml
mengajukan.
Mengatur Variabel Dalam .gitlab-ci.yml
Variabel dapat didefinisikan di dalam Anda .gitlab-ci.yml
file menggunakan a variables
memblokir. Variabel yang tercantum di sini akan dibuat untuk pekerjaan jika belum ada; jika tidak, mereka akan menimpa nilai yang ditetapkan pada tingkat proyek atau lebih tinggi.
Variabel level pipeline dapat diatur dengan global variables
bagian. Pekerjaan individu juga dapat memiliki variabel mereka sendiri. Kedua teknik ditunjukkan di bawah ini di mana tugas pementasan menimpa nilai variabel tingkat pipa dan menetapkan variabel khusus pekerjaan yang unik sebagai tambahan.
variables: DEPLOY_URL: example.com deploy_staging: variables: DEPLOY_URL: staging.example.com DEPLOY_IS_STAGING_ENV: true script: - ./deploy.sh deploy_production: script: - ./deploy.sh
Variabel didefinisikan dalam .gitlab-ci.yml
File terkadang dapat digunakan dengan cara yang berbeda dari yang ditetapkan dalam GitLab UI atau API. Anda dapat menggunakan variabel untuk menghindari pengulangan bagian file, meskipun nilai tersebut tidak mungkin berubah atau diganti di masa mendatang. Jadi juga variables
bagian lebih dekat ke variabel bahasa pemrograman daripada kunci seperti konfigurasi yang biasanya ditemukan di tingkat proyek dan di atasnya.
Mengganti Variabel
Sistem variabel GitLab memberi Anda beberapa poin di mana Anda dapat mengganti nilai variabel sebelum diperbaiki untuk pipeline atau pekerjaan. Urutan prioritasnya cukup rumit tetapi dapat diringkas sebagai berikut:
- Variabel standar GitLab selalu disetel terlebih dahulu.
- Variabel internal didefinisikan
.gitlab-ci.yml
diatur berikutnya (variabel pekerjaan lebih spesifik daripada variabel pipa). - Variabel yang ditetapkan pada tingkat instance, grup, dan proyek berlapis.
- Variabel dari pemicu pipa tertentu menimpa semua yang sebelumnya.
Anda selalu dapat menjalankan pipeline dengan nilai variabel tertentu dengan menggunakan eksekusi manual. Buka halaman CI/CD > Pipelines proyek Anda dan klik tombol biru “Jalankan pipeline” di kanan atas.
Gunakan menu tarik-turun untuk memilih cabang atau tag untuk menjalankan pipeline. Selanjutnya, gunakan tabel “Variabel” untuk menentukan variabel yang akan ditambahkan ke jalur pipa ini. Ini akan menjadi nilai yang paling spesifik, yang akan diterapkan sebagai tahap akhir dalam urutan prioritas variabel. Variabel yang disetel di sini tidak akan disimpan atau digunakan kembali di pipeline mendatang.
Ringkasan
Implementasi variabel CI GitLab adalah mekanisme yang kuat dan fleksibel untuk mengonfigurasi pipeline Anda. Ada begitu banyak variabel tempat yang dapat didefinisikan sehingga sulit untuk menentukan di mana nilai harus ditempatkan.
Secara umum, seringkali paling efisien untuk menempatkan nilai sebanyak mungkin di tingkat grup sehingga Anda tidak perlu mengulanginya sendiri dalam proyek Anda. Anda selalu dapat mengganti variabel nanti dalam proyek tertentu yang memerlukan nilai berbeda. Administrator GitLab yang dihosting sendiri dapat menggunakan variabel instan untuk mengekspos nilai bersama yang umum, meskipun ini dapat menyebabkan paparan informasi yang tidak disengaja jika tidak dikelola dengan hati-hati.