2013-11-21 12 views
7

Używamy Jenkinsa na serwerze, który nie ma dostępu do Internetu (nawet za pośrednictwem proxy). Instalowanie i utrzymywanie instalacji Jenkins na czasie jest uciążliwe!Jak utworzyć lokalne zwierciadło publicznej witryny aktualizacji Jenkins?

Mój pomysł polegał na stworzeniu lokalnego zwierciadła pełnej publicznej witryny aktualizacji Jenkins za pośrednictwem stacji roboczej Windows, która ma dostęp do Internetu. A następnie spraw, aby lokalne lustro było dostępne dla Jenkinsa poprzez udział NFS.

Moje pytania: jak zrobić lokalne lustro? Czy masz lepszy/prostszy pomysł, aby zachować instalację Jenkins na bieżąco?

+0

W innym komentarzu, ktoś wspomniał update-center.json. Pamiętaj, że ten plik jest podpisany cyfrowo pod konkretny adres URL. Zobacz [tę stronę] (https://github.com/ikedam/backend-update-center2/wiki/How-to-create-your-own-Jenkins-Update-Center), aby dowiedzieć się, jak ponownie wygenerować i podpisać ten plik . Następnie możesz użyć wtyczki [Update Sites] (https://wiki.jenkins-ci.org/display/JENKINS/UpdateSites+Manager+plugin), aby użyć własnego pliku. Cała procedura jest obecnie nieco zbyt zaangażowana, aby podsumować tutaj odpowiedź. – indiv

Odpowiedz

0

Gdzie jest problem z ręcznym pobraniem pliku wojny, zatrzymaniem serwera, wymianą wojny i ponownym uruchomieniem serwera? To samo dotyczy wtyczek.

Jeśli o tym myślę, prawdopodobnie istnieje lepszy sposób, dzięki piaskownicy Jenkinsa w systemie, który ma dostęp do Internetu. Aktualizujesz serwer za pomocą interfejsu użytkownika, a następnie możesz dokładnie przetestować zaktualizowaną wersję Jenkins. Po zakończeniu wystarczy skopiować pliki wojny i hpi do swojej "produkcji" Jenkinsa. teraz masz nawet miły proces i kontrolę jakości w miejscu.

+2

Problem polega na tym, że nie chcę tego robić ręcznie za każdym razem, gdy chcę dokonać aktualizacji. Chciałbym zautomatyzować cały proces aktualizacji.Ale masz rację, że myślałem o zarządzaniu całą instalacją Jennkins w jakimś repozytorium, aktualizowaniu go z innego systemu i pchaniu zmian, gdy aktualizacja jest OK. Ale myślę, że może mieć pewne funkcje w Jenkins, aby pomóc w zarządzaniu tym. – greydet

+0

Utwórz zadanie, które przesuwa zmiany z piaskownicy Jenkinsa do produkcji Jenkins. –

+2

Jeśli zauważysz w Plugins/Advanced, istnieje ustawienie adresu URL aktualizacji, który zwraca pewien rodzaj JSON. Możliwe, że twój mirror będzie mógł pobrać ten plik, użyć go do pobrania wszystkich niezbędnych wtyczek na miejscu, a następnie przepisać go i udostępnić zmodyfikowaną wersję JSON, wskazując na lokalne kopie. Nie wszystko to różni się od dublowania serwera NuGet. – Rich

2

Do generowania strony aktualizacji (update-center.json) można użyć https://github.com/jenkins-infra/backend-update-center2 projekt

Moje kroki:

  1. wygenerować własny podpisany certyfikat
 
    openssl genrsa -out your-update-center.key 1024 
    openssl req -new -x509 -days 1095 -key your-update-center.key -out your-update-center.crt 
  1. włóż wszystkie wtyczki do swojego repozytorium mafii Nexus 2
  2. Clone i zbudować projekt backend-update-center2
  3. generować update-center.json
mvn exec:java -Dexec.args="-id default -h /dev/null 
    -o update-center.json -repository ULR_TO_NEXUS_REPO 
    -remoteIndex .index/nexus-maven-repository-index.gz -repositoryName YOUR_REPO_NAME 
    -directLink -pretty -nowiki -key your-update-center.key 
    -certificate your-update-center.crt 
    -root-certificate your-update-center.crt" 
  1. opublikować update-center.json. Musi być dostępny poprzez HTTP/HTTPS
  2. kopii wygenerowaniu-update-center.crt do folderu JENKINS_HOME/update-center-rootCAs
  3. "Jenkins → Plugin zarządzać → Zaawansowane → miejscu Update" zdefiniować link do opublikowanego aktualizacji -center.json

PS. nie zapomnij wygenerować i opublikować pliku indeksu Nexus 2 nexus-maven-repository-index.gz. Użyj zadania "Opublikuj indeksy".

Niektóre dodatkowe informacje o Updater Center można znaleźć w https://github.com/ikedam/backend-update-center2/wiki/How-to-create-your-own-Jenkins-Update-Center

+0

Może to być częścią rozwiązania, gdy wtyczka będzie dostępna lokalnie. Ale czy istnieje sposób automatycznego odzwierciedlenia wtyczek z publicznego repozytorium wtyczek Jenkins? – greydet

Powiązane problemy