मैं स्थापित जेनकिंस प्लगइन्स की सूची कैसे प्राप्त कर सकता हूं?
मैंने जेनकिंस रिमोट एक्सेस एपीआई दस्तावेज़ खोजा, लेकिन यह नहीं मिला। क्या मुझे जेनकिन्स सीएलआई का उपयोग करना चाहिए? क्या कोई दस्तावेज या उदाहरण है?
मैं स्थापित जेनकिंस प्लगइन्स की सूची कैसे प्राप्त कर सकता हूं?
मैंने जेनकिंस रिमोट एक्सेस एपीआई दस्तावेज़ खोजा, लेकिन यह नहीं मिला। क्या मुझे जेनकिन्स सीएलआई का उपयोग करना चाहिए? क्या कोई दस्तावेज या उदाहरण है?
जवाबों:
आप जेनकिंस स्क्रिप्ट कंसोल का उपयोग करके जानकारी पुनः प्राप्त कर सकते हैं जो कि विजिट करके सुलभ है http://<jenkins-url>/script
। (यह देखते हुए कि आप लॉग इन हैं और आवश्यक अनुमतियाँ हैं)।
निम्न दर्ज ग्रूवी स्क्रिप्ट प्लग इन इंस्टॉल पर पुनरावृति करने और प्रासंगिक जानकारी का प्रिंट आउट:
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
यह परिणाम सूची को इस तरह प्रिंट करेगा (क्लिप्ड):
यह समाधान ऊपर दिए गए उत्तरों में से एक के समान है जिसमें यह ग्रूवी का उपयोग करता है, लेकिन यहां हम इसके बजाय स्क्रिप्ट कंसोल का उपयोग कर रहे हैं। जेनकिंस का उपयोग करते समय स्क्रिप्ट कंसोल बेहद मददगार होता है।
अपडेट करें
यदि आप क्रमबद्ध सूची पसंद करते हैं, तो आप इस sort
विधि को कॉल कर सकते हैं :
def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
अपनी पसंद के हिसाब से क्लोजर को समायोजित करें (जैसे कि यह शॉर्टनेम द्वारा सॉर्ट किया गया है, उदाहरण में इसे नेम नेम द्वारा सॉर्ट किया गया है)
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()}" }
इन दिनों मैं https://Backoverflow.com/a/35292719/1597808 के बजाय नीचे दिए गए उत्तर के रूप में उसी दृष्टिकोण का उपयोग करता हूं
आप गहराई, XPath और आवरण तर्क के साथ संयोजन में API का उपयोग कर सकते हैं।
निम्नलिखित सभी प्लगइन्स को सूचीबद्ध करने के लिए pluginManager के एपीआई को क्वेरी करेगा, लेकिन केवल उनके शॉर्टनेम और संस्करण विशेषताओं को वापस करने के लिए। आप निश्चित रूप से 'जोड़कर अतिरिक्त फ़ील्ड प्राप्त कर सकते हैं।' XPath पैरामीटर के अंत में और नोड की पहचान करने के लिए पैटर्न निर्दिष्ट करना।
wget http://<jenkins>/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins
इस मामले में आवरण तर्क की आवश्यकता है, क्योंकि यह परिणाम के हिस्से के रूप में एक से अधिक नोड लौटा रहा है, दोनों में यह एक्सपीथ और कई प्लगइन नोड के साथ कई क्षेत्रों का मिलान कर रहा है।
यह शायद ब्राउज़र में निम्न URL का उपयोग करने के लिए उपयोगी है यह देखने के लिए कि प्लगइन्स पर क्या जानकारी उपलब्ध है और फिर तय करें कि आप XP3 का उपयोग करके क्या सीमित करना चाहते हैं:
http://<jenkins>/pluginManager/api/xml?depth=1
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
जेनकिंस 1.588 ( नवंबर, 2014 के 2 एन डी ) और 1.647 ( फरवरी, 2016 के 4 वें )
जेनकिन्स सीएलआई सभी स्थापित प्लगइन्स को सूचीबद्ध करने का समर्थन करता है:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
list-plugins
CLI कमांड के लिए उपयोगकर्ता के पास समग्र / RunScripts अनुमति की आवश्यकता नहीं है जैसा कि groovy
कमांड करता है।
इस तरह से जेनकिंस सीएलआई का उपयोग करें:
java -jar jenkins-cli.jar -s http://[jenkins_server] groovy = < pluginEnumerator.groovy
=
कॉल में 'मानक इनपुट से पढ़ें' का मतलब है । pluginEnumerator.groovy में निम्नलिखित Groovy कोड होते हैं:
println "Running plugin enumerator"
println ""
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
plugins.each {println "${it.getShortName()} - ${it.getVersion()}"}
println ""
println "Total number of plugins: ${plugins.size()}"
यदि आप कोड के साथ खेलना चाहते हैं, तो यहां जेनकींस जावा एपीआई प्रलेखन है ।
isActive()
एपी है जिसे आप प्लगइन की स्थिति प्राप्त करने के लिए इस उत्तर में ग्रूवी स्क्रिप्ट में उपयोग कर सकते हैं। Javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () देखें ।
यदि आप docker परिवेश में काम कर रहे हैं और प्लगइन सूची में आउटपुट सूची बनाना चाहते हैं। तो इसे install_scripts.sh में पास करने के लिए http://{jenkins}/script
कंसोल में इन लिपियों का उपयोग करें :
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getShortName()}:${plugin.getVersion()}")
}
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getShortName()}:latest")
}
:latest
अंत में जोड़ सकते हैं :println ("${plugin.getShortName()}:latest")
यहाँ के उत्तर कुछ अधूरे थे। और मुझे वास्तव में प्लगइन सूची प्राप्त करने के लिए अन्य स्रोतों से जानकारी संकलित करनी थी।
जेनकिन्स सीएलआई हमें कमांड लाइन से हमारे जेनकिंस सर्वर के साथ बातचीत करने की अनुमति देगा। हम इसे एक सरल कर्ल कॉल के साथ प्राप्त कर सकते हैं।
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
निम्न के रूप में सहेजें plugins.groovy
।
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
localhost:8080
Groovy स्क्रिप्ट को संदर्भित करते हुए अपने लॉगिन उपयोगकर्ता नाम और पासवर्ड के साथ जेनकिंस सर्वर ( यहां) को कॉल करें :
java -jar jenkins-cli.jar -s http://localhost:8080 groovy --username "admin" --password "admin" = < plugins.groovy > plugins.txt
Plugins.txt के लिए उत्पादन इस तरह दिखता है:
ace-editor: 1.1
ant: 1.5
antisamy-markup-formatter: 1.5
authentication-tokens: 1.3
blueocean-autofavorite: 1.0.0
blueocean-commons: 1.1.4
blueocean-config: 1.1.4
blueocean-dashboard: 1.1.4
blueocean-display-url: 2.0
blueocean-events: 1.1.4
blueocean-git-pipeline: 1.1.4
blueocean-github-pipeline: 1.1.4
blueocean-i18n: 1.1.4
blueocean-jwt: 1.1.4
blueocean-personalization: 1.1.4
blueocean-pipeline-api-impl: 1.1.4
blueocean-pipeline-editor: 0.2.0
blueocean-pipeline-scm-api: 1.1.4
blueocean-rest-impl: 1.1.4
प्लगइन्स को छांटने के साथ बीहे का जवाब मेरे जेनकींस मशीन पर काम नहीं करता था। मुझे java.lang.UnsupportedOperationException
एक अपरिवर्तनीय संग्रह को क्रमबद्ध करने की कोशिश करने के कारण त्रुटि मिली Jenkins.instance.pluginManager.plugins
। कोड के लिए सरल तय:
List<String> jenkinsPlugins = new ArrayList<String>(Jenkins.instance.pluginManager.plugins);
jenkinsPlugins.sort { it.displayName }
.each { plugin ->
println ("${plugin.shortName}:${plugin.version}")
}
http://<jenkins-url>/script
कोड चलाने के लिए URL का उपयोग करें ।
displayName
प्रिंट करते समय के आधार पर छंटनी कर रहे हैं shortName
, यह बहुत भ्रामक था क्योंकि कुछ प्लगइन्स दोनों के लिए वर्णानुक्रम में समान नहीं हैं, और इसके परिणामस्वरूप एक सूची होती है जो क्रमबद्ध नहीं दिखाई देती है। यह अच्छी तरह it.displayName
से it.shortName
हल करने के लिए बदल रहा है ।
यदि आप जेनकिंस प्रशासक हैं तो आप जेनकिंस सिस्टम सूचना पृष्ठ का उपयोग कर सकते हैं:
http://<jenkinsurl>/systemInfo
/systeminfo
काम नहीं करता है (HTTP 404) जेनकिंस 1.594 पर
http://localhost:8080/systemInfo
करें- कुछ सर्वर केस-संवेदी होते हैं। यह भी ध्यान दें कि समग्र / व्यवस्थापक की अनुमति के लिए वर्तमान में उपयोगकर्ता की आवश्यकता है।
के साथ curl
और jq
:
curl -s <jenkins_url>/pluginManager/api/json?depth=1 \
| jq -r '.plugins[] | "\(.shortName):\(.version)"' \
| sort
यह कमांड विशेष जेनकिंस plugins.txt
फ़ाइल द्वारा उपयोग किए जाने वाले प्रारूप में आउटपुट देता है जो आपको पूर्व-निर्भरता स्थापित करने में सक्षम बनाता है (जैसे डॉक छवि में):
ace-editor:1.1
ant:1.8
apache-httpcomponents-client-4-api:4.5.5-3.0
का उदाहरण plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txt
जेनकींस होम पेज से:
या
साख के साथ यहां एक और विकल्प साझा करना
JENKINS_HOST=username:password@myhost.com:port
curl -sSL "http://$JENKINS_HOST/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'|sed 's/ /:/'
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
मैं एक ऐसा समाधान चाहता था जो बिना किसी आवश्यकताओं के मास्टर पर चल सके और यहाँ उसे नहीं देखा। मैंने एक त्वरित बैश स्क्रिप्ट बनाई जो प्लगइन्स से सभी संस्करणों को बाहर निकाल देगी।
if [ -f $JENKINS_HOME/plugin_versions.txt ]; then
rm $JENKINS_HOME/plugin_versions.txt
fi
for dir in $JENKINS_HOME/plugins/*/; do
dir=${dir%*/}
dir=${dir##*/}
version=$(grep Plugin-Version $JENKINS_HOME/plugins/$dir/META-INF/MANIFEST.MF | awk -F': ' '{print $2}')
echo $dir $version >> $JENKINS_HOME/plugin_versions.txt
done
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
मुझे लगता है कि ये अच्छे उत्तर नहीं हैं। कई लोगों में अतिरिक्त अंडर-द-हूड कदम शामिल हैं। यहाँ है कि मैं यह कैसे किया।
sudo apt-get install jq
... क्योंकि एपीआई को कॉल करने के बाद JSON आउटपुट का उपभोग करना होगा।
#!/bin/bash
server_addr = 'jenkins'
server_port = '8080'
curl -s -k "http://${server_addr}:${server_port}/pluginManager/api/json?depth=1" \
| jq '.plugins[]|{shortName, version,longName,url}' -c | sort \
> plugin-list
echo "dude, here's your list: "
cat plugin-list
पायथन उपयोगकर्ताओं के लिए एक और विकल्प:
from jenkinsapi.jenkins import Jenkins
#get the server instance
jenkins_url = 'http://<jenkins-hostname>:<jenkins-port>/jenkins'
server = Jenkins(jenkins_url, username = '<user>', password = '<password>')
#get the installed plugins as list and print the pairs
plugins_dictionary = server.get_plugins().get_plugins_dict()
for key, value in plugins_dictionary.iteritems():
print "Plugin name: %s, version: %s" %(key, value.version)
# list of plugins in sorted order
# Copy this into your Jenkins script console
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
List<String> list = new ArrayList<String>()
i = 0
plugins.each {
++i
//println " ${i} ${it.getShortName()}: ${it.getVersion()}"
list.add("${it.getShortName()}: ${it.getVersion()}")
}
list.sort{it}
i = 0
for (String item : list) {
i++
println(" ${i} ${item}")
}
स्थापित किए गए सभी प्लगइन्स को सूचीबद्ध करने वाली एक तालिका है और वे http: // jenkins / systemInfo पर सक्षम हैं या नहीं
यदि जेनकिन्स जेनकींस डोकर कंटेनर में चलता है तो आप इस कमांड लाइन का उपयोग बाश में कर सकते हैं:
java -jar /var/jenkins_home/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080/ list-plugins --username admin --password `/bin/cat /var/jenkins_home/secrets/initialAdminPassword`
जेनकिंस संस्करण 2.125 के लिए निम्नलिखित कार्य किया।
नोट: उस अनुभाग को प्रतिस्थापित करें जो USERNAME और APIKEY को उस संबंधित उपयोगकर्ता के लिए एक मान्य उपयोगकर्ता नाम और APIKey के साथ कहता है। एक उपयोगकर्ता के लिए एपीआई कुंजी प्रबंधित उपयोगकर्ताओं के माध्यम से उपलब्ध है → उपयोगकर्ता का चयन करें → एपीआई कुंजी विकल्प।
यदि आपके जेनकींस की स्थापना शुरू होने में अधिक समय लगता है तो आपको नींद का विस्तार करना पड़ सकता है।
दीक्षा yum update -y
संस्करण को उन्नत करेगी और साथ ही अगर आपने यमक का उपयोग करके जेनकिंस स्थापित किया है।
#JENKINS AUTO UPDATE SCRIPT link this script into a cron
##############
!/bin/bash
sudo yum update -y
sleep 120
UPDATE_LIST=$( sudo /usr/bin/java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -auth [USERNAME:APIKEY] -s http://localhost:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }' );
if [ ! -z "${UPDATE_LIST}" ]; then
echo Updating Jenkins Plugins: ${UPDATE_LIST};
sudo /usr/bin/java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -auth [USERNAME:APIKEY] -s http://localhost:8080/ install-plugin ${UPDATE_LIST};
sudo /usr/bin/java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -auth [USERNAME:APIKEY] -s http://localhost:8080/ safe-restart;
fi
##############
इस जानकारी को लाने के बहुत सारे तरीके हैं लेकिन मैं नीचे दो तरीके लिख रहा हूं: -
1. जेनकिंस क्लि प्राप्त करें।
जेनकिन्स सीएलआई हमें कमांड लाइन से हमारे जेनकिंस सर्वर के साथ बातचीत करने की अनुमति देगा। हम इसे एक सरल कर्ल कॉल के साथ प्राप्त कर सकते हैं।
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. एक ग्रूवी स्क्रिप्ट बनाएं। या जेनकिंस स्क्रिप्ट कंसोल से
हमें जेनकिंस एपीआई से प्राप्त जानकारी को पार्स करने के लिए एक ग्रूवी स्क्रिप्ट बनाने की आवश्यकता है। यह प्रत्येक प्लगइन को अपने संस्करण के साथ आउटपुट करेगा। निम्न को plugins.groovy के रूप में सहेजें।
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
आप यह भी दिलचस्पी ले सकते हैं कि प्लगइन्स के लिए कौन से अपडेट उपलब्ध हैं। उसके लिए, आपको यहां उपलब्ध अपडेट के बारे में जानकारी के साथ स्थापित प्लगइन्स के बारे में डेटा को मर्ज करना होगा https://updates.jenkins.io/current/update-center.json ।
JSON के रूप में डाउनलोड की गई फ़ाइल को पार्स करने के लिए आपको दूसरी पंक्ति (जो बहुत बड़ी है) को ऑनलाइन पढ़ना होगा।