Logo programu | |
Zrzut ekranu | |
| Autor | Kohsuke Kawaguchi |
|---|---|
| Pierwsze wydanie | 2 lutego 2011(dts) |
| Aktualna wersja stabilna | 2.586 (13 października 2026) [±] |
| Język programowania | Java |
| Rodzaj | serwer CI/CD |
| Licencja | MIT |
| Strona internetowa | |
Jenkins – serwer typu open source służący do automatyzacji związanej z tworzeniem oprogramowania. W szczególności ułatwia budowanie, testowanie i wdrażanie aplikacji, czyli umożliwia rozwój oprogramowania w trybie ciągłej integracji i ciągłego dostarczania. Jenkins działa na serwerach Java takich jak Apache Tomcat, Jetty itp, ale umożliwia budowanie aplikacji napisanych w wielu językach programowania. Do pobierania kodu używa standardowo różnych narzędzi kontroli wersji, w tym m.in. Subversion, Git, Mercurial, Perforce, ClearCase i AccuRev. Do budowania ma wbudowaną obsługę projektów opartych na Apache Ant, Apache Maven i sbt, ale może również wykonywać dowolne skrypty powłoki (Unix/Linux) i polecenia wsadowe systemu Windows.
Jenkins początkowo nosił nazwę Hudson i został przemianowany w 2011 roku po sporze z Oracle. Oracle sforkował projekt i rościł sobie prawa do pierwotnej nazwy projektu. Hudson, był potem rozwijany przez Oracle przez pewien czas, zanim został przekazany Fundacji Eclipse. Oracle Hudson nie jest już utrzymywany i został ogłoszony przestarzałym w lutym 2017.
Około 2007 roku Hudson stał się znany jako lepsza alternatywa dla Cruise Control i innych serwerów typu open source. Na konferencji JavaOne w maju 2008 oprogramowanie zdobyło nagrodę Duke’s Choice Award w kategorii Developer Solutions.
W listopadzie 2010, po przejęciu Sun Microsystems przez Oracle, w społeczności Hudson pojawił się problem związany z używaną infrastrukturą, który rozrósł się i zaczął obejmować pytania dotyczące zarządzania i kontroli przez Oracle. Odbyły się negocjacje między głównymi autorami projektu i Oracle, ale mimo wielu obszarów porozumienia kluczową kwestią sporną był znak towarowy „Hudson” (zastrzeżony przez Oracle w grudniu 2010). W rezultacie 11 stycznia 2011 ogłoszono głosowanie na zmianę nazwy projektu z „Hudson” na „Jenkins”. Propozycja została przyjęta znaczącą większością głosów społeczności i 29 stycznia 2011 utworzono projekt Jenkins.
1 lutego 2011 firma Oracle poinformowała, że zamierza kontynuować rozwój Hudsona i uznała Jenkinsa tylko forkiem. Jenkins i Hudson kontynuowali zatem jako dwa niezależne projekty każdy twierdząc, że drugi jest jego forkiem. Według stanu na czerwiec 2019 organizacja Jenkins na GitHub miała 667 członków projektu i około 2200 publicznych repozytoriów, natomiast Hudson miał wtedy 28 członków, 20 publicznych repozytoriami i ostatnią aktualizacje z 2016 roku.
W 2011 roku programista Kohsuke Kawaguchi otrzymał nagrodę O’Reilly Open Source Award za pracę nad projektem Hudson/Jenkins.
20 kwietnia 2016 została wydana wersja 2.0 z domyślnie włączoną wtyczką Pipeline. Wtyczka umożliwia pisanie instrukcji kompilacji przy użyciu języka dziedzinowego opartego na języku Groovy.
Jenkins zastąpił Hudsona od 8 lutego 2017 roku w Eclipse.
W marcu 2018 zaprezentowano projekt oprogramowania Jenkins X dla Kubernetesa. Nowy projekt ma mieć wbudowaną obsługę różnych dostawców chmury, w tym między innymi AWS EKS.
Zadania (ang. job) mogą być uruchomione za pomocą różnych wyzwalaczy (ang. trigger), na przykład:
Poszczególne zadania mogą mieć różne parametry. Parametry mogą być wypełnione przez użytkownika lub przekazane z jednego zadania do drugiego.
Każde zadanie składa się z kroków, które można wykonać przed, po i w ramach budowania zadania. Jednym krokiem może być wykonanie skryptu shell, wdrożenie plików przez ssh, czy np. kompilacji za pomocą Mavena.
Niektóre kroki można prosto zamieniać miejscami przez drag&drop. Można również wykonywać je warunkowo. Typowo gdy jeden krok budowania się nie uda, to pozostałe nie zostaną już wykonane.
Wtyczki rozszerzają możliwości Jenkinsa na różne sposoby. Część z wtyczek jest instalowana od razu, a część można pobrać po instalacji (przez interfejs do zarządzania Jenkinsem).
Rodzaje wtyczek:
Bezpieczeństwo danej instalacji Jenkinsa zależy od dwóch czynników: kontroli dostępu i ochrony przed zagrożeniami zewnętrznymi. Kontrolę dostępu można dostosować na dwa sposoby: uwierzytelnianie i autoryzacja użytkowników. Istnieją również zabezpieczenia przed zagrożeniami zewnętrznymi m.in. przed atakami CSRF oraz złośliwą kompilacją.