Bagaimana saya bisa mendapatkan daftar plugin Jenkins yang diinstal?
Saya mencari dokumen Jenkins Remote Access API, tetapi tidak ditemukan. Haruskah saya menggunakan CLI Jenkins? Apakah ada dokumen atau contoh?
sumber
Bagaimana saya bisa mendapatkan daftar plugin Jenkins yang diinstal?
Saya mencari dokumen Jenkins Remote Access API, tetapi tidak ditemukan. Haruskah saya menggunakan CLI Jenkins? Apakah ada dokumen atau contoh?
Anda dapat mengambil informasi menggunakan Konsol Script Jenkins yang dapat diakses dengan mengunjungi http://<jenkins-url>/script
. (Mengingat bahwa Anda masuk dan memiliki izin yang diperlukan).
Masukkan skrip Groovy berikut untuk beralih di atas plugin yang diinstal dan mencetak informasi yang relevan:
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Ini akan mencetak daftar hasil seperti ini (terpotong):
Solusi ini mirip dengan salah satu jawaban di atas karena menggunakan Groovy, tetapi di sini kita menggunakan konsol skrip. Konsol script sangat membantu saat menggunakan Jenkins.
Memperbarui
Jika Anda lebih suka daftar yang diurutkan, Anda dapat memanggil sort
metode ini :
def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Sesuaikan Penutupan dengan keinginan Anda (mis. Di sini disortir oleh shortName, pada contoh disortir oleh DisplayName)
Jenkins.instance.pluginManager.plugins.sort({it.getDisplayName()}).each{ plugin -> println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}") }
echo 'script=Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}:${plugin.getVersion()}") } null' \ | no_proxy=localhost curl --netrc --silent --data-binary @- -X POST "http://localhost:8080/jenkins/scriptText" | sort > plugins.txt
jenkins.model.Jenkins.instance.getPluginManager().getPlugins().stream().sorted().each { println "${it.getShortName()} | ${it.getVersion()} | ${it.getDisplayName()}" }
Hari ini saya menggunakan pendekatan yang sama dengan jawaban yang dijelaskan oleh @Behe di bawah ini alih-alih https://stackoverflow.com/a/35292719/1597808
Anda dapat menggunakan API dalam kombinasi dengan argumen depth, XPath, dan wrapper.
Berikut ini akan menanyakan API dari pluginManager ke daftar semua plugin yang diinstal, tetapi hanya untuk mengembalikan atribut shortName dan versi mereka. Tentu saja Anda dapat mengambil bidang tambahan dengan menambahkan '|' ke akhir parameter XPath dan menentukan pola untuk mengidentifikasi node.
Argumen wrapper diperlukan dalam kasus ini, karena ini mengembalikan lebih dari satu simpul sebagai bagian dari hasil, baik dalam hal itu mencocokkan beberapa bidang dengan XPath dan beberapa plugin plugin.
Mungkin bermanfaat untuk menggunakan URL berikut di browser untuk melihat informasi apa pada plugin yang tersedia dan kemudian memutuskan apa yang ingin Anda batasi menggunakan XPath:
sumber
curl 'http://192.168.197.133:8080/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins' | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'
curl -s -k "http://jenkins/pluginManager/api/json?depth=1" | jq '.plugins[]|{shortName, version,longName}' -c
Jenkins 1,588 (2 nd November 2014) & 1,647 (4 th Februari 2016)
Jenkins> Kelola Jenkins
Sistem Informasi
Plugin
sumber
CLI Jenkins mendukung daftar semua plugin yang diinstal:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
sumber
list-plugins
perintah CLI tidak mengharuskan pengguna untuk memiliki izin Keseluruhan / RunScripts seperti yanggroovy
dilakukan perintah.Gunakan Jenkins CLI seperti ini:
=
dalam panggilan berarti 'membaca dari input standar' . pluginEnumerator.groovy berisi kode Groovy berikut:Jika Anda ingin bermain dengan kode tersebut, inilah dokumentasi Jenkins Java API .
sumber
isActive()
api yang bisa Anda gunakan di skrip groovy dalam jawaban ini untuk mendapatkan status plugin. Lihat javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () .Jika Anda bekerja di lingkungan buruh pelabuhan dan ingin menampilkan daftar plugin dalam format plugins.txt untuk meneruskannya ke install_scripts.sh gunakan skrip ini di
http://{jenkins}/script
konsol:sumber
:latest
sampai akhir:println ("${plugin.getShortName()}:latest")
Jawaban di sini agak tidak lengkap. Dan saya harus mengumpulkan informasi dari sumber lain untuk benar-benar mendapatkan daftar plugin.
1. Dapatkan Jenkins CLI
CLI Jenkins akan memungkinkan kita berinteraksi dengan server Jenkins dari baris perintah. Kita bisa mendapatkannya dengan panggilan ikal sederhana.
2. Buat skrip Groovy untuk penguraian (terima kasih kepada malenkiy_scot)
Simpan yang berikut ini sebagai
plugins.groovy
.3. Panggil API Jenkins untuk hasil plugin
Panggil server Jenkins (di
localhost:8080
sini) dengan nama pengguna dan kata sandi masuk Anda saat merujuk skrip Groovy:Output ke plugins.txt terlihat seperti ini:
sumber
Jawaban Behe dengan plugin sortir tidak berfungsi pada mesin Jenkins saya. Saya menerima kesalahan
java.lang.UnsupportedOperationException
karena mencoba menyortir koleksi yang tidak dapat diubah yaituJenkins.instance.pluginManager.plugins
. Perbaikan sederhana untuk kode:Gunakan
http://<jenkins-url>/script
URL untuk menjalankan kode.sumber
displayName
saat mencetakshortName
, ini sangat membingungkan karena beberapa plugin tidak secara alfabet sama untuk keduanya, dan itu menghasilkan daftar yang tidak muncul diurutkan. Mengubahit.displayName
untukit.shortName
menyelesaikan ini dengan baik.Jika Anda seorang administrator Jenkins, Anda dapat menggunakan halaman informasi sistem Jenkins:
sumber
/systeminfo
tidak berfungsi (HTTP 404) di Jenkins 1.594http://localhost:8080/systemInfo
- beberapa server peka huruf besar-kecil. Perhatikan juga bahwa ini mengharuskan pengguna yang saat ini masuk untuk memiliki izin Keseluruhan / Administer.Dengan
curl
danjq
:Perintah ini memberikan output dalam format yang digunakan oleh
plugins.txt
file Jenkins khusus yang memungkinkan Anda untuk pra-instal dependensi (misalnya dalam gambar buruh pelabuhan):Contoh a
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtsumber
Dari beranda Jenkins:
Atau
sumber
Berbagi opsi lain yang ditemukan di sini dengan kredensial
sumber
curl -sSL "http://127.0.0.1:8080/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \n/g' | sort
Saya menginginkan solusi yang dapat berjalan pada master tanpa persyaratan auth dan tidak melihatnya di sini. Saya membuat skrip bash cepat yang akan mencabut semua versi dari direktori plugins.
sumber
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
Opsi lain untuk pengguna Python:
sumber
Saya pikir ini bukan jawaban yang cukup baik ... banyak melibatkan beberapa langkah ekstra di bawah tenda. Begini cara saya melakukannya.
... karena output JSON perlu dikonsumsi setelah Anda memanggil API.
sumber
Anda juga dapat tertarik dengan pembaruan apa yang tersedia untuk plugin. Untuk itu, Anda harus menggabungkan data tentang plugin yang diinstal dengan informasi tentang pembaruan yang tersedia di sini https://updates.jenkins.io/current/update-center.json .
Untuk mem-parsing file yang diunduh sebagai JSON Anda harus membaca online baris kedua (yang sangat besar).
sumber
sumber
Ada tabel yang mencantumkan semua plugin yang diinstal dan apakah mereka diaktifkan di http: // jenkins / systemInfo
sumber
Jika Jenkins dijalankan dalam wadah Docker Jenkins Anda dapat menggunakan baris perintah ini di Bash:
sumber
Untuk Jenkins versi 2.125 berikut ini berfungsi.
CATATAN: Ganti bagian yang mengatakan USERNAME dan APIKEY dengan UserName dan APIKey yang valid untuk pengguna yang sesuai. Kunci API untuk pengguna tersedia melalui Kelola Pengguna → Pilih Pengguna → opsi Kunci API .
Anda mungkin harus memperpanjang waktu tidur jika instalasi Jenkins Anda membutuhkan waktu lebih lama untuk memulai.
Inisiasi
yum update -y
akan memperbarui versi juga jika Anda menginstal Jenkins menggunakan yum juga.sumber
Ada banyak cara untuk mengambil informasi ini tetapi saya menulis dua cara seperti di bawah ini: -
1. Dapatkan jenkins cli.
CLen jenkins akan memungkinkan kita untuk berinteraksi dengan server jenkins kita dari baris perintah. Kita bisa mendapatkannya dengan panggilan ikal sederhana.
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. Buat skrip asyik. ATAU dari konsol skrip jenkins
Kita perlu membuat skrip groovy untuk mengurai informasi yang kita terima dari API jenkins. Ini akan menampilkan setiap plugin dengan versinya. Simpan yang berikut ini sebagai plugins.groovy.
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins() plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
sumber