Jenkins (oprogramowanie)

Jenkins
Logo Jenkins
Logo programu
Ilustracja
Zrzut ekranu
Autor Kohsuke Kawaguchi
Pierwsze wydanie 2011-02-02 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(inne języki). 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(inne języki), ale może również wykonywać dowolne skrypty powłoki(inne języki) (Unix/Linux) i polecenia wsadowe systemu Windows.

Historia

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(inne języki) 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.

Budowanie zadań

Wyzwalacze

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.

Kroki budowania

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

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

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ą.

Nagrody i wyróżnienia

Zobacz też

Przypisy

  1. ↑ Jenkins 1.396 released. jenkins.361315.n4.nabble.com. [zarchiwizowane z tego adresu (2018-12-08)]., The first release of Jenkins is posted, Kohsuke Kawaguchi.
  2. ↑ Installing Jenkins [online], jenkins.io [dostęp 2021-11-12] (ang.).
  3. ↑ Source code management plugins [online], plugins.jenkins.io [dostęp 2021-11-12].
  4. ↑ Jenkins – Eclipsepedia [online], wiki.eclipse.org [dostęp 2021-11-12].
  5. 1 2 Jenkins – Eclipsepedia [online], wiki.eclipse.org, 8 lutego 2017 [dostęp 2021-11-12].
  6. ↑ continuous integration – What is the difference between Hudson and CruiseControl for Java projects? [online], Stack Overflow [dostęp 2021-11-12].
  7. ↑ Geneviève Duboscq, 2008 JavaOne Conference: Duke’s Awards Choice Winners for 2008 [online], java.sun.com, 2008 [dostęp 2021-11-12] [zarchiwizowane z adresu 2009-01-29].
  8. ↑ Savio Rodrigues, Oracle’s open source missteps continue with Hudson project [online], InfoWorld, 3 grudnia 2010 [dostęp 2021-11-12] (ang.).
  9. ↑ Brian Proffitt, Hudson devs vote for name change; Oracle declares fork [online], Computerworld, 2 lutego 2011 [dostęp 2021-11-12] (ang.).
  10. ↑ Paul Krill, Oracle hands Hudson to Eclipse, but Jenkins fork seems permanent [online], InfoWorld, 4 maja 2011 [dostęp 2021-11-12] (ang.).
  11. ↑ Jenkins [online], GitHub [dostęp 2019-01-01] (ang.).
  12. ↑ Hudson CI Server [online], GitHub [dostęp 2019-01-01] (ang.).
  13. ↑ Kohsuke Kawaguchi: Geek of the Week [online], Simple Talk, 17 lipca 2012 [dostęp 2021-11-12] (ang.).
  14. ↑ O’Reilly Open Source Awards [online], O’Reilly Open Source Convention: OSCON, 28 lipca 2011 [dostęp 2021-11-12] [zarchiwizowane z adresu 2020-06-15].
  15. ↑ Hemant Jain, What’s New in Jenkins 2.0 [online], Red Hat Developer, 24 sierpnia 2016 [dostęp 2021-11-12] (ang.).
  16. ↑ James Strachan, Introducing Jenkins X: a CI/CD solution for modern cloud applications on Kubernetes [online], jenkins.io, 19 marca 2018 [dostęp 2021-11-12] (ang.).
  17. ↑ Arun Gupta, Continuous Delivery with Amazon EKS and Jenkins X [online], AWS Open Source Blog, 7 listopada 2018 [dostęp 2021-11-12] [zarchiwizowane z adresu 2019-05-06].
  18. ↑ Iris Chubb, Jenkins Terms Defined and Demystified [online], blog.inedo.com [dostęp 2021-11-12] (ang.).
  19. ↑ Managing Plugins [online], jenkins.io [dostęp 2021-11-12] (ang.).
  20. ↑ Access Control [online], jenkins.io [dostęp 2021-11-12] (ang.).
  21. ↑ CSRF Protection [online], jenkins.io [dostęp 2021-11-12] (ang.).
  22. ↑ Controller Isolation [online], jenkins.io [dostęp 2021-11-12] (ang.).
  23. 1 2 3 Awards [online], jenkins.io [dostęp 2021-11-12] (ang.).
  24. ↑ Third Annual DevOps Dozen Winners Announced [online], DevOps.com, 23 stycznia 2018 [dostęp 2021-11-12] (ang.).

Linki zewnętrzne