Saya ingin dapat melakukan sesuatu seperti:
AOEU=$(echo aoeu)
dan memiliki Jenkins set AOEU=aoeu
.
Bagian Variabel Lingkungan di Jenkins tidak melakukan itu. Alih-alih, itu mengatur AOEU='$(echo aoeu)'
.
Bagaimana saya bisa membuat Jenkins mengevaluasi perintah shell dan menetapkan output ke variabel lingkungan?
Akhirnya, saya ingin dapat menetapkan pelaksana pekerjaan ke variabel lingkungan yang dapat diteruskan ke atau digunakan oleh skrip lain.
Jawaban:
Ini dapat dilakukan melalui plugin EnvInject dengan cara berikut:
Buat langkah build "Execute shell" yang berjalan:
Buat langkah lingkungan penyuntikan variabel dan set "Properties File Path" ke
propsfile
.Catatan : Plugin ini (kebanyakan) tidak kompatibel dengan plugin Pipeline.
sumber
sh
di jalur.foo
akan diekspor dalam tindakan shell tertentu tetapi tidak dalam tindakan lain.Cara paling sederhana
Anda dapat menggunakan plugin EnvInject untuk menyuntikkan variabel lingkungan saat membangun startup. Sebagai contoh:
Bagaimana Anda tahu itu berhasil
sumber
key=value
. Dalam kasus penggunaan saya, saya menghasilkan garis sepenuhnya:cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[\d+\.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'
BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S"
danBUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S")
danBUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"`
tidak bekerja untuk sayaDalam kasus saya, saya perlu menambahkan
JMETER_HOME
variabel lingkungan agar tersedia melalui skrip build Ant di semua proyek di server Jenkins (Linux), dengan cara yang tidak akan mengganggu lingkungan build lokal saya (Windows dan Mac) dalambuild.xml
skrip . Mengatur variabel lingkungan melalui Kelola Jenkins - Sistem Konfigurasi - Properti global adalah cara termudah dan paling tidak mengganggu untuk mencapai ini. Tidak diperlukan plug-in.Variabel lingkungan kemudian tersedia di Ant melalui:
Ini dapat diverifikasi untuk berfungsi dengan menambahkan:
Yang menghasilkan:
sumber
git
/path/to/my/git
danPATH+git
/path/to/my/git
. Namun, jika saya mencoba untuk aksesgit
dari yangJenkins pipeline script
, saya mendapatkan:/bin/sh: git: command not found
.Anda dapat menggunakan Plugin Injector Lingkungan untuk mengatur variabel lingkungan di Jenkins di tingkat pekerjaan dan node. Di bawah ini saya akan menunjukkan cara mengaturnya di tingkat pekerjaan.
Manage Jenkins > Manage Plugins
dan instal plugin.Configure
layar pekerjaan AndaAdd build step
diBuild
bagian dan pilihInject environment variables
Jika Anda perlu mendefinisikan variabel lingkungan baru tergantung pada beberapa kondisi (misalnya parameter pekerjaan), maka Anda dapat merujuk ke jawaban ini .
sumber
Anda dapat mencoba sesuatu seperti ini
sumber
Jenkinsfile
untuk pipa (bukan pekerjaan)! Itu luar biasa, terima kasih untuk itu!EnvInject Plugin aka ( Environment Injector Plugin ) memberi Anda beberapa opsi untuk mengatur variabel lingkungan dari konfigurasi Jenkins.
Dengan memilih
Inject environment variables to the build process
Anda akan mendapatkan:Properties File Path
Properties Content
Script File Path
Script Content
dan akhirnya
Evaluated Groovy script
.Evaluated Groovy script
memberi Anda kemungkinan untuk mengatur variabel lingkungan berdasarkan hasil dari perintah yang dieksekusi :execute
metode:Groovy
kode eksplisit :(Detail lebih lanjut tentang masing-masing metode dapat ditemukan dalam bantuan bawaan (?))
Sayangnya Anda tidak dapat melakukan hal yang sama
Script Content
seperti yang dinyatakan:sumber
Ada Build Env Propagator Plugin yang memungkinkan Anda menambahkan variabel lingkungan build baru, misalnya
sumber
Dalam kasus saya, saya telah mengkonfigurasi variabel lingkungan menggunakan opsi berikut dan itu berhasil-
sumber
Biasanya Anda dapat mengonfigurasi variabel Lingkungan di properti Global di Sistem Konfigurasi .
Namun untuk variabel dinamis dengan substitusi shell, Anda mungkin ingin membuat file skrip di dir Jenkins HOME dan jalankan selama build. Diperlukan akses SSH. Sebagai contoh.
sudo su - jenkins
atausudo su - jenkins -s /bin/bash
Buat skrip shell, misalnya:
Dalam Jenkins Build ( Execute shell ), aktifkan skrip dan variabel-variabelnya sebelum yang lainnya, mis
sumber
sudo su - jenkins
, masihecho $USER
memberi sayaroot
.su -l
parameter untuk melakukan itu, jika tidak, ajukan pertanyaan terpisah.Catatan: Nilai variabel lingkungan akan datang sebagai String. Jika Anda ingin menggunakannya sebagai boolean maka Anda harus menguraikannya menggunakan Boolean.parse (env.DISABLE_SQL).
sumber
Coba Plugin Skrip Lingkungan ( GitHub ) yang sangat mirip dengan EnvInject . Ini memungkinkan Anda untuk menjalankan skrip sebelum membangun (setelah checkout SCM) yang menghasilkan variabel lingkungan untuk itu. Misalnya
dan dalam skrip Anda, Anda dapat mencetak misalnya
FOO=bar
ke output standar untuk mengatur variabel itu.Contoh untuk menambahkan
PATH
variabel-gaya yang ada :Jadi, Anda bebas melakukan apa pun yang Anda butuhkan dalam skrip -
cat
file, atau jalankan skrip dalam bahasa lain dari hierarki sumber proyek Anda, dll.sumber
Anda dapat menggunakan salah satu dari cara berikut yang tercantum di bawah ini:
Kelola Jenkins -> Configure System -> Global Properties -> Variabel Lingkungan -> Tambah
sumber
Untuk beberapa alasan
sudo su - jenkins
tidak mencatat saya kejenkins
pengguna , saya akhirnya menggunakan pendekatan yang berbeda.Saya berhasil mengatur variabel env global menggunakan menggunakan jenkins
config.xml
di/var/lib/jenkins/config.xml
(diinstal di Linux / RHEL) - tanpa menggunakan plugin eksternal.Saya hanya harus berhenti menambahkan jenkins lalu menambahkan
globalNodeProperties
, dan kemudian restart.Contoh, saya mendefinisikan variabel
APPLICATION_ENVIRONMENT
danSPRING_PROFILES_ACTIVE
kecontinious_integration
bawah,sumber
Kami menggunakan file pekerjaan asyik:
sumber