Jak zaktualizować wtyczki jenkins z terminala?
Próbuję stworzyć skrypt Basha do konfiguracji Jenkinsa. Czy jest jakiś sposób na aktualizację listy wtyczek z terminala Jenkins?
Przy pierwszej konfiguracji nie ma wtyczki dostępnej na liście
Czyli:
java -jar jenkins-cli.jar -s `http://localhost:8080` install-plugin dry
Nie zadziała
5 answers
Prosty, ale działający sposób polega na wyświetleniu listy wszystkich zainstalowanych wtyczek, wyszukaniu aktualizacji i zainstalowaniu ich.
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins
Każda wtyczka, która ma dostępną aktualizację, ma nową wersję w nawiasach na końcu. Więc możesz grep dla tych:
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }'
Jeśli wywołasz install-plugin z nazwą wtyczki, zostanie ona automatycznie zaktualizowana do najnowszej wersji.
W końcu musisz ponownie uruchomić Jenkinsa.Składanie wszystkiego razem (można umieścić w powłoce skrypt):
UPDATE_LIST=$( java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }' );
if [ ! -z "${UPDATE_LIST}" ]; then
echo Updating Jenkins Plugins: ${UPDATE_LIST};
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin ${UPDATE_LIST};
java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ safe-restart;
fi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-27 21:50:30
Wtyczki można instalować z terminala komputerowego (a nie z terminala Jenkinsa).
- Pobierz wtyczkę ze strony wtyczki (
http://updates.jenkins-ci.org/download/plugins
) - skopiuj ten plugin do
$JENKINS_HOME/plugins directory
- w tym momencie uruchom Jenkins lub wywołaj usługę reload settings (
http://yourservername:8080/jenkins/reload
)
To włącza wtyczkę w Jenkins i zakładając, że Jenkins jest uruchomiony.
cd $JENKINS_HOME/plugins
curl -O http://updates.jenkins-ci.org/download/plugins/cobertura.hpi
curl http://yourservername:8080/reload
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-14 00:11:44
Oto jak można wdrożyć wtyczki Jenkins CI za pomocą Ansible, który oczywiście jest używany z terminala. Ten kod jest częścią roles/jenkins_ci/tasks/main.yml
:
- name: Plugins
with_items: # PLUGIN NAME
- name: checkstyle # Checkstyle
- name: dashboard-view # Dashboard View
- name: dependency-check-jenkins-plugin # OWASP Dependency Check
- name: depgraph-view # Dependency Graph View
- name: deploy # Deploy
- name: emotional-jenkins-plugin # Emotional Jenkins
- name: monitoring # Monitoring
- name: publish-over-ssh # Publish Over SSH
- name: shelve-project-plugin # Shelve Project
- name: token-macro # Token Macro
- name: zapper # OWASP Zed Attack Proxy (ZAP)
sudo: yes
get_url: dest="{{ jenkins_home }}/plugins/{{ item.name | mandatory }}.jpi"
url="https://updates.jenkins-ci.org/latest/{{ item.name }}.hpi"
owner=jenkins group=jenkins mode=0644
notify: Restart Jenkins
Jest to część bardziej kompletnego przykładu, który można znaleźć na: https://github.com/sakaal/service_platform_ansible/blob/master/roles/jenkins_ci/tasks/main.yml
Możesz dostosować go do swoich potrzeb.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-15 23:43:46
Możesz zaktualizować listę wtyczek za pomocą tej linii poleceń
curl -s -L http://updates.jenkins-ci.org/update-center.json | sed '1d;$d' | curl -s -X POST -H 'Accept: application/json' -d @- http://localhost:8080/updateCenter/byId/default/postBack
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-13 15:26:35
FYI -- niektóre wtyczki (w szczególności mercurial) nie instalują się poprawnie z linii poleceń, chyba że użyjesz ich krótkiej nazwy. Myślę, że ma to związek z wyzwalaczami w danych informacji o pakiecie Jenkinsa. Możesz symulować aktualizację pakietów Jenkinsa, odwiedzając stronę 127.0.0.1:8080/pluginManager/checkUpdates
w przeglądarce obsługującej javascript.
Lub jeśli czujesz się masochistycznie, możesz uruchomić ten kod Pythona:
import urllib2,requests
UPDATES_URL = 'https://updates.jenkins-ci.org/update-center.json?id=default&version=1.509.4'
PREFIX = 'http://127.0.0.1:8080'
def update_plugins():
"look at the source for /pluginManager/checkUpdates and downloadManager in /static/<whatever>/scripts/hudson-behavior.js"
raw = urllib2.urlopen(self.UPDATES_URL).read()
jsontext = raw.split('\n')[1] # ugh, JSONP
json.loads(jsontext) # i.e. error if not parseable
print 'received updates json'
# post
postback = PREFIX+'/updateCenter/byId/default/postBack'
reply = requests.post(postback,data=jsontext)
if not reply.ok:
raise RuntimeError(("updates upload not ok",reply.text))
print 'applied updates json'
I po uruchomieniu tego, powinieneś być w stanie uruchomić jenkins-cli -s http://127.0.0.1:8080 install-plugin mercurial -deploy
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-16 21:11:39