Jak ręcznie zainstalować wtyczkę w Jenkins

119

Zainstalowanie wtyczki z Centrum aktualizacji skutkuje:

Sprawdzanie połączenia internetowego Nie udało się połączyć z http://www.google.com/ . Być może musisz skonfigurować serwer proxy HTTP? Niepowodzenie wdrożenia wtyczki - szczegóły hudson.util.IOException2: nie można pobrać z http://updates.jenkins-ci.org/download/plugins/deploy/1.9/deploy.hpi

Czy można pobrać wtyczkę i zainstalować ją ręcznie w Jenkins?

Kishore Tamire
źródło

Odpowiedzi:

156

Tak, możesz. Pobierz wtyczkę (plik * .hpi) i umieść ją w następującym katalogu:

<jenkinsHome>/plugins/

Następnie będziesz musiał ponownie uruchomić Jenkins.

Michael Küller
źródło
7
Ta metoda nie instaluje automatycznie żadnych wtyczek, które są zależne od instalowanej wtyczki. W związku z tym nie polecam tego i z tego powodu głosuję przeciw. Daj mi znać, jeśli się mylę, a cofnę swój głos przeciw.
Farrukh Najmi
8
Jeśli jesteś zmuszony ręcznie zainstalować wtyczkę (z jakiegokolwiek powodu), nie znam żadnej innej metody, która zajmie się również automatyczną instalacją zależności.
Michael Küller
Jak mogę się dowiedzieć, gdzie jest dom Jenkinsa? Używając whereis jenkins?
Czarny
4
Znalazłem to pod, /var/lib/jenkinsjednak wtyczek jest już wiele, ale kończą się na .jpizamiast .hpi. Co powinienem zrobić?
Czarny
3
Jenkins zmienia nazwę pliku wtyczki podczas instalacji z .hpi na .jpi, dzięki czemu jest w stanie wykryć nową wtyczkę do zainstalowania na istniejącej. Zobacz tutaj: stackoverflow.com/questions/30658375/…
Michael Küller
137
  1. Pobierz wtyczkę.
  2. Wewnątrz Jenkins: Zarządzaj JenkinsZarządzaj wtyczkami → Jest zakładka o nazwie Zaawansowane i na tej stronie jest opcja wgrania wtyczki (rozszerzenie pliku musi być hpi).

Czasami podczas pobierania wtyczek możesz pobrać pliki (.zip), a następnie po prostu zmienić nazwę za pomocą (.hpi) i użyć interfejsu użytkownika, aby zainstalować wtyczkę.

jfcorugedo
źródło
4
Jest to prawdopodobnie „bezpieczniejsze” niż stackoverflow.com/a/14953877/627806, ponieważ przechodzi przez front-end.
Jon Burgess
Czasami jest to konieczne, jeśli Jenkins nie uruchamia się z powodu błędnej konfiguracji wtyczki. Np. Musiałem wykonać ręczną instalację z powodu tego problemu .
dskrvk
1
Próbowałem zainstalować tę wtyczkę, zmieniłem zip na hpi i próbowałem przesłać z opcji zaawansowanej w zarządzaniu wtyczkami, ale daje to błądA problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins.
Jaki problem znalazłeś? Czy możemy poznać faktyczny wyjątek?
jfcorugedo,
1
Zauważ, że istnieje limit rozmiaru narzucony przez nginx (patrz: [ Issues.jenkins-ci.org/browse/JENKINS-32575] ), więc może być konieczna zmiana konfiguracji nginx lub ręczne załadowanie.
Moshe Zvi
22

Jeśli używasz Dockera, powinieneś przeczytać ten plik: https://github.com/cloudbees/jenkins-ci.org-docker/blob/master/plugins.sh

Przykład nadrzędnego pliku Dockerfile:

FROM jenkins
COPY plugins.txt /plugins.txt
RUN /usr/local/bin/plugins.sh /plugins.txt

plugins.txt

<name>:<version>
<name2>:<version2>
SergioArcos
źródło
Próbowałem rozwiązać to dla dockera i natknąłem się na tę odpowiedź. Działa świetnie!
muglio
zależy to od sposobu instalacji Jenkinsa. W mojej instalacji (apt-get install jenkins) nie mogłem zlokalizować pliku plugin.sh. Jeśli jednak zaczniemy od OD jenkinsa, to istnieje.
hadaytullah
zwróć uwagę, że musisz dołączyć wtyczkę i wszystkie jej zależności w pliku plugins.txt, ponieważ nie rozwiąże ona zależności przechodnich. Na przykład, blueocean ma około 10+ zależności, które musiałbyś również dołączyć ręcznie ..
code4cause
Jak używać tej metody, gdy uruchamiam docker za serwerem proxy? plugins.shnie można zainstalować wtyczek, jeśli serwer proxy nie jest skonfigurowany w Jenkins. I nie sądzę, aby istniała metoda konfiguracji proxy w Jenkinsie przy użyciu Dockerfile.
7_R3X
13

Stworzyłem prosty skrypt, który wykonuje następujące czynności:

  • Pobierz co najmniej jedną wtyczkę do katalogu wtyczek
  • Przeskanuj wszystkie wtyczki w tym katalogu pod kątem brakujących zależności
  • pobierz również te zależności
  • pętli, dopóki nie zostaną pozostawione żadne otwarte zależności

Skrypt nie wymaga uruchomionego jenkinsa - używam go do aprowizacji dockera.

https://gist.github.com/micw/e80d739c6099078ce0f3

Michael Wyraz
źródło
URL jest teraz uszkodzony. Czy możesz ponownie opublikować swój skrypt?
Charles Morin
11

Aktualizacja dla Dockera: użyj skryptu install-plugins.sh . Pobiera listę nazw wtyczek bez rozszerzenia „-plugin”. Zobacz opis tutaj .

install-plugins.sh zastępuje przestarzałe plugins.sh, które teraz ostrzegają:

WARN: plugins.sh is deprecated, please switch to install-plugins.sh

Aby użyć pliku plugins.txt zgodnie z plugins.sh, zobacz ten problem i obejście:

RUN /usr/local/bin/install-plugins.sh $(cat /usr/share/jenkins/plugins.txt | tr '\n' ' ')

satolizard
źródło
10

Czasami podczas pobierania wtyczek możesz pobrać pliki (.zip), a następnie po prostu zmienić nazwę za pomocą (.hpi), a następnie rozpakować wszystkie wtyczki i przenieść do <jenkinsHome>/plugins/katalogu.

Dnyaneshwar Kalme
źródło
4

Zaakceptowana odpowiedź jest dokładna, ale upewnij się, że zainstalowałeś również wszystkie niezbędne zależności. Wydaje się, że instalacja za pomocą CLI lub sieci WWW rozwiązuje ten problem, ale moje wtyczki nie były wyświetlane w przeglądarce ani nie były używane, java -jar jenkins-cli.jar -s http://localhost:8080 list-pluginsdopóki nie zainstalowałem również zależności.

jdf
źródło
1
Stworzyłem proste streszczenie, aby wymienić wszystkie wymagane najnowsze wersje zależności wtyczek z sieci (skanuje całe drzewo zależności): gist.github.com/Lucasus/1a6b8df71425c790361c
Łukasz Wiatrak
2

W moim przypadku musiałem zainstalować wtyczkę na serwerze kompilacji offline z systemem Windows Server (wersja nie ma tutaj znaczenia). Zainstalowałem już Jenkins na moim laptopie, aby przetestować zmiany z wyprzedzeniem i działa na localhost: 8080 jako usługa Windows.

Więc jeśli chcesz poświęcić trochę czasu na skonfigurowanie Jenkinsa na komputerze z połączeniem internetowym i przenieść te zmiany na serwer offline Jenkins (działa, potwierdzone przeze mnie!), Oto kroki, które możesz wykonać:

  • Jenkins na moim laptopie: Otwórz Jenkins, http: // localhost: 8080
  • Nawigator: Zarządzaj Jenkins | Pobierz wtyczkę bez opcji instalacji
  • Eksplorator Windows: Skopiuj pobrany plik wtyczki znajdujący się w folderze „c: \ program files (x86) \ Jenkins \ plugins” (tj. Role-strategy.jpi)
  • Wklej go do udostępnionego folderu na serwerze offline
  • Zatrzymaj usługę Jenkins (Offline Server Jenkins) za pośrednictwem usług składowych, usługi Jenkins
  • Skopiuj plik wtyczki (np. Role-strategy.jpi) do folderu „c: \ program files (x86) \ Jenkins \ plugins” na serwerze (Offline Jenkins)
  • Zrestartuj Jenkins i voila! Powinien być zainstalowany.
yyardim
źródło
2

Podane odpowiedzi działają, z dodanymi wtyczkami.

Jeśli chcesz zastąpić / zaktualizować wbudowaną wtyczkę, taką jak wtyczka poświadczeń, która ma zależności, musisz użyć interfejsu. Do automatyzacji używam:

 curl -i -F [email protected] http://jenkinshost/jenkins/pluginManager/uploadPlugin
bbaassssiiee
źródło
1

Jest to sposób na kopiowanie wtyczek z jednej skrzynki Jenkinsa do drugiej.

Skopiuj katalog wtyczek:

scp -r jenkins-box.url.com:/var/lib/jenkins/plugins .

Skompresuj wtyczki:

tar cvfJ plugins.tar.xz plugins

Skopiuj je do innego pudełka Jenkinsa:

scp plugins.tar.xz different-jenkins-box.url.com
ssh different-jenkins-box.url.com "tar xvfJ plugins.tar.xz -C /var/lib/jenkins"

Uruchom ponownie Jenkins.

jmunsch
źródło
0

Aby zainstalować wtyczkę „git” ze wszystkimi jej zależnościami:

curl -XPOST http://localhost:8080/pluginManager/installNecessaryPlugins -d '<install plugin="git@current" />'

Tutaj zainstalowana wtyczka jest git; wersja określona jako @currentignorowana przez Jenkins. Jenkins działa na localhostporcie 8080, zmień to w razie potrzeby. O ile wiem, jest to najprostszy sposób na ręczne zainstalowanie wtyczki ze wszystkimi jej zależnościami. Testowane na Jenkinsiev1.644

m.kocikowski
źródło