Saya menjalankan Jenkins dari pengguna yang jenkins
telah $PATH
diatur ke sesuatu dan ketika saya masuk ke antarmuka web Jenkins, di jendela System Properties ( http://$host/systemInfo
) saya melihat yang berbeda $PATH
.
Saya telah menginstal Jenkins di Centos dengan rpm asli dari situs web Jenkins. Saya menggunakan skrip startup yang disertakan dengan instalasi menggunakansudo /etc/init.d/jenkins start
Adakah yang bisa menjelaskan kepada saya mengapa itu terjadi?
jenkins
environment-variables
hudson
Michael
sumber
sumber
echo $PATH
, apakah itu cocok dengan yang Anda lihat di jenkins?Jawaban:
Michael,
Dua hal:
Ketika Jenkins terhubung ke komputer, itu masuk ke
sh
shell, dan bukanbash
shell (setidaknya ini yang saya perhatikan - saya mungkin salah). Jadi setiap perubahan yang Anda lakukan pada $ PATH di file bashrc Anda tidak dianggap.Selain itu, setiap perubahan yang Anda lakukan pada $ PATH di shell lokal Anda (yang Anda ssh secara pribadi) tidak akan muncul di Jenkins.
Untuk mengubah jalur yang digunakan Jenkins, Anda memiliki dua opsi (AFAIK):
1) Edit
/etc/profile
file Anda dan tambahkan jalur yang Anda inginkan di sana2) Buka halaman konfigurasi slave Anda, dan tambahkan variabel lingkungan
PATH
, dengan nilai:$PATH:/followed-by/paths/you/want/to/add
Jika Anda menggunakan opsi kedua, Informasi Sistem Anda masih tidak akan menampilkannya, tetapi build Anda akan melihat jalur yang ditambahkan.
sumber
Saya terus mengalami masalah ini, tetapi sekarang saya hanya menambahkan:
Sebagai langkah pertama dalam proses pembuatan saya. Sekarang semua aturan saya berikutnya dimuat agar Jenkins beroperasi dengan lancar.
sumber
source /etc/profile
sebagai perintah pertama di area teks Build> Execute Shell> Command./usr/local/bin
yang ditentukan di/etc/paths
, dan/etc/paths
digunakan oleh/usr/libexec/path_helper
, dan path_helper dijalankan di/etc/profile
.Anda juga dapat mengedit
/etc/sysconfig/jenkins
file untuk membuat perubahan pada variabel lingkungan, dll. Saya hanya menambahkansource /etc/profile
di akhir file./etc/profile
memiliki semuaPATH
pengaturan variabel yang tepat . Saat Anda melakukan ini, pastikan Anda memulai ulang JenkinsKami menjalankan ZendServer CE yang menginstal pir, phing, dll di jalur yang berbeda jadi ini sangat membantu. Selain itu, kami tidak mendapatkan
LD_LIBRARY_PATH
kesalahan yang biasa kami dapatkan dengan klien Oracle dan Jenkins.sumber
Aku mencoba
/etc/profile
,~/.profile
dan~/.bash_profile
tidak seorangpun dari mereka bekerja. Saya menemukan bahwa pengeditan~/.bashrc
untuk akun budak jenkins berhasil.sumber
/etc/profile
atau~/.profile
Informasi tentang jawaban ini sudah ketinggalan zaman. Anda harus membuka Konfigurasi Jenkins> Dan Anda kemudian dapat mengklik untuk menambahkan pasangan nilai kunci Variabel Lingkungan dari sana.
Misalnya:
export MYVAR=test
akan menjadiMYVAR
kuncinya, dantest
merupakan nilainya.sumber
Pada instans EC2 saya yang lebih baru, cukup menambahkan nilai baru ke PATH .profile pengguna Jenkins dan kemudian memulai ulang kucing jantan berhasil untuk saya.
Pada contoh yang lebih lama di mana konfigurasinya berbeda, menggunakan # 2 dari jawaban Sagar adalah satu-satunya hal yang berhasil (yaitu .profile, .bash * tidak berfungsi).
sumber
Saya menemukan dua plugin untuk itu. Satu memuat nilai dari file dan yang lainnya memungkinkan Anda mengonfigurasi nilai di layar konfigurasi pekerjaan.
Plugin Envfile - Plugin ini memungkinkan Anda untuk mengatur variabel lingkungan melalui file. Format file harus dalam format file properti Java standar.
Plugin EnvInject - Plugin ini memungkinkan untuk menambahkan variabel lingkungan dan menjalankan skrip pengaturan untuk mengatur lingkungan untuk Pekerjaan.
sumber
Tidak bisakah Anda menambahkannya sebagai variabel lingkungan di setelan Jenkins:
Kelola Jenkins -> Properti global> Variabel lingkungan: Dan kemudian klik "Tambah" untuk menambahkan PATH properti dan nilainya ke yang Anda butuhkan.
sumber
Beginilah cara saya memecahkan masalah yang mengganggu ini:
Saya mengubah
PATH
variabel seperti yang disarankan @sagar di opsi ke-2, tetapi saya masih mendapatkanPATH
nilai yang berbeda dari yang saya harapkan.Akhirnya saya menemukan bahwa itu adalah
EnvInject
plugin yang menggantikanPATH
variabel saya !Jadi saya bisa uninstall
EnvInject
atau hanya menggunakannya untuk menginjeksi variabel PATH.Karena banyak dari pekerjaan Jenkins kami menggunakan plugin itu, saya tidak ingin menghapusnya ...
Jadi saya membuat file: di
environment_variables.properties
bawah direktori home Jenkins saya.File ini berisi nilai lingkungan jalan yang saya butuhkan:
PATH=$PATH:/usr/local/git/bin/
.Dari antarmuka web Jenkins:
Manage Jenkins -> Configure System
. Dalam layar yang - saya berdetakPrepare jobs environment
pilihan, dan diProperties File Path
lapangan saya masuk path ke file saya:/var/lib/jenkins/environment_variables.properties
.Dengan cara ini setiap pekerjaan Jenkins kami menerima variabel apa pun yang saya masukkan ke dalam
environment_variables.properties
file ini .sumber
Jenkins juga mendukung format
PATH+<name>
untuk menambahkan variabel apa pun, tidak hanya PATH:Variabel Lingkungan Global atau variabel Lingkungan node:
Ini juga didukung pada langkah pipeline
withEnv
:Perhatikan saja, ini ditambahkan ke variabel. Jika harus ditambahkan, Anda perlu melakukan apa yang ditunjukkan jawaban lain.
Lihat dokumen langkah pipeline di sini .
Atau dokumen java di EnvVars di sini .
sumber
Saya hanya mengalami kemajuan dalam masalah ini setelah "/etc/init.d/jenkins force-reload". Saya sarankan untuk mencobanya sebelum melakukan hal lain, dan menggunakannya daripada memulai ulang.
sumber
Di Ubuntu 13.04 saya, saya mencoba beberapa tweak sebelum berhasil dengan ini:
sumber
Menambahkan
di
Jenkins menggunakan sh sehingga bahkan / etc / profile tidak bekerja untuk saya. Ketika saya menambahkan ini, saya memiliki semua env.
sumber
Solusi yang berhasil untuk saya
source ~/.bashrc
Penjelasan
Saya pertama kali memverifikasi Jenkins menjalankan BASH, dengan
echo $SHELL
danecho $BASH
(perhatikan saya secara eksplisit meletakkan#!/bin/bash
di atas textarea di Jenkins, saya tidak yakin apakah itu persyaratan untuk mendapatkan BASH).source
ing/etc/profile
seperti yang disarankan orang lain tidak berfungsi.Melihat
/etc/profile
saya menemukandan memeriksa "$ PS1" ternyata nol. Saya mencoba spoofing tetapi
$PS1
tidak berhasil seperti itunamun ini tidak membuahkan hasil yang diinginkan (tambahkan sisa yang
$PATH
saya harapkan untuk dilihat). Tetapi jika saya memberi tahu bash untuk menjadi interaktifyang
$PATH
telah diubah seperti yang saya harapkan.Saya mencoba mencari cara untuk memalsukan shell interaktif dengan benar
/etc/bash.bashrc
untuk memuat, namun ternyata yang saya butuhkan hanyalah turun~/.bashrc
, jadi hanyasource
dengan itu menyelesaikan masalah.sumber
#!/bin/bash -el
untuk memberi tahu bash untuk memulai sebagai shell login. Itu seharusnya menyebabkan bash menjadi sumber file .rc yang diperlukanSaya mencoba semua hal dari atas - tidak berhasil untuk saya.
Saya menemukan dua solusi (keduanya untuk SSH-Slave)
Pergi ke pengaturan budak
Tambahkan variabel lingkungan baru
Bagian "$ {HOME}" itu penting. Ini membuat PATH tambahan menjadi absolut. Jalur relatif tidak berhasil untuk saya.
Opsi II (skrip-pipeline)
sumber
Di Ubuntu saya hanya mengedit / etc / default / jenkins dan menambahkan source / etc / profile di akhir dan itu berfungsi untuk saya.
sumber
Menjalankan perintah dengan kumpulan variabel lingkungan juga efektif. Tentu saja, Anda harus melakukannya untuk setiap perintah yang Anda jalankan, tetapi Anda mungkin memiliki skrip pekerjaan, jadi Anda mungkin hanya memiliki satu perintah per build. Skrip pekerjaan saya adalah skrip python yang menggunakan lingkungan untuk memutuskan python mana yang akan digunakan, jadi saya masih perlu meletakkan /usr/local/bin/python2.7 di jalurnya:
sumber
Apa yang berhasil bagi saya adalah mengesampingkan lingkungan PATH untuk budak itu.
Kemudian putuskan dan sambungkan kembali budak itu.
Terlepas dari apa yang ditunjukkan oleh informasi sistem itu berfungsi.
sumber
Saya menginstal Jenkins 1.639 di SLES 11 SP3 melalui zypper (manajer paket). Pemasangan dikonfigurasi jenkins sebagai layanan
Meskipun
/etc/init.d/jenkins
sumber/etc/sysconfig/jenkins
, variabel env apa pun yang disetel di sana tidak diwarisi oleh proses jenkins karena dimulai di shell login terpisah dengan lingkungan baru seperti ini:Cara saya mengatur env vars untuk proses jenkins adalah melalui
.bashrc
di direktori home -/var/lib/jenkins
. Saya harus membuat/var/lib/jenkins/.bashrc
karena tidak ada sebelumnya.sumber
Inilah yang saya lakukan di ubuntu 18.04 LTS dengan Jenkins 2.176.2
Saya membuat file .bash_aliases dan menambahkan jalur di sana, variabel proxy, dan sebagainya.
Di awal .bashrc ada ini yang didefinisikan.
Jadi ini memeriksa bahwa jika kita memulai shell non-interaktif maka kita tidak melakukan apa-apa di sini.
bagian bawah .bashrc ada menyertakan untuk .bash_aliases
jadi saya memindahkan .bash_aliases memuat pertama di .bashrc tepat di atas pemeriksaan non-interaktif.
Ini tidak berfungsi pertama kali tetapi kemudian saya memutus sambungan slave dan menghubungkannya kembali sehingga memuat variabel lagi. Anda tidak perlu memulai ulang seluruh jenkins jika Anda memodifikasi variabel budak. cukup putuskan dan sambungkan kembali.
sumber
1- tambahkan ke file profil Anda ".bash_profile"
itu ada di folder "/ home / your_user /"
vi .bash_profile
Menambahkan:
==> ini adalah ruang kerja e jenkins
2- Jika Anda menggunakan jetty: buka file jenkins.xml
dan tambahkan :
sumber