kainos tech space #1 : devops : artur senk - jenkins, najważniejsze narzędzie w projekcie, które...
TRANSCRIPT
![Page 1: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/1.jpg)
Tech Space #1DevOps
![Page 2: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/2.jpg)
2004 1200 1 000 000
Start projektu Liczba pluginów Użytkowników naświecie
Tech Space #1 01/12/2016 2
![Page 3: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/3.jpg)
Jenkins najważniejsze narzędzie w projekcie, które
ewoluuje razem z nimArtur Senk
Senior WebOps Engineer / Kainos Evolve14/11/2016
![Page 4: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/4.jpg)
Jenkins
• Java -‐> cross-‐platform
• Automation server (budowanie, testowanie, CI/CD)
• Open source (MIT License)
• Fork Hudsona
Ogólne informacje
Tech Space #1 01/12/2016 4
![Page 5: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/5.jpg)
JenkinsLiczba instalacji (ponad 130k miesięcznie)
01/12/2016 5Tech Space #1
![Page 6: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/6.jpg)
Jenkins
• SSL (np. nginx z przodu jako reverse proxy)
•
Podstawy konfiguracji i zabezpieczeń
Tech Space #1 01/12/2016 6
![Page 7: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/7.jpg)
JenkinsRole Strategy Plugin #1
Tech Space #1 01/12/2016 7
![Page 8: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/8.jpg)
JenkinsRole Strategy Plugin #2
Tech Space #1 01/12/2016 8
![Page 9: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/9.jpg)
Jenkins
• Role globalne nadpisują projektowe!
• https://wiki.jenkins-‐ci.org/display/JENKINS/Role+Strategy+Plugin
Role Strategy Plugin #3
Tech Space #1 01/12/2016 9
![Page 10: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/10.jpg)
Jenkins
• IP/CIDR dla odziału firmy• IP/CIDR dla dostępu przez VPN• CIDR dla integracji z GitHubem: 192.30.252.0/22
• Port 443 albo 80 i 443 + wymuszenie przekierowania na nginx
Firewall (Security Groups) whitelisting
Tech Space #1 01/12/2016 10
![Page 11: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/11.jpg)
JenkinsChecking the firewall logs
Tech Space #1 01/12/2016 11
http://devopsreactions.tumblr.com
![Page 12: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/12.jpg)
Jenkins
• Warto (Pipeline as Code, Pipeline Stage View)
• Kompatybilność wsteczna (naprawdę działa)
• Najpierw backup lub obraz
Migracja 1.X -‐> 2.X
Tech Space #1 01/12/2016 12
![Page 13: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/13.jpg)
JenkinsProces #1
01/12/2016 13Tech Space #1
![Page 14: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/14.jpg)
JenkinsProces #2
01/12/2016 14Tech Space #1
![Page 15: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/15.jpg)
Jenkins
• https://wiki.jenkins-‐ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
• Użytkownik GitHub z dostępem typu write do każdego repo, podany w głównejkonfiguracji Jenkinsa
• Projekt w Jenkinsie, mogący pobierać kod z GitHuba
• Refspec: +refs/pull/*:refs/remotes/origin/pr/*
• Branch specifier: ${sha1}
• Webhooki po stronie GitHuba
Integracja z GitHubem
Tech Space #1 01/12/2016 15
![Page 16: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/16.jpg)
Jenkins
• Pozwolenie na kopiowanie artefaktów
• Wskazanie skąd pobrać artefakt
• Joby parametryzowane
• Warunkowe wyzwalanie kolejnych jobów
Integracja pomiędzy jobami
Tech Space #1 01/12/2016 16
![Page 17: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/17.jpg)
Jenkins
• Skrypty Gradle
• JUnit
• Docker
Uruchamianie budowania, testów i innych tasków
Tech Space #1 01/12/2016 17
![Page 18: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/18.jpg)
Jenkins
• Repozytorium YUM i Maven
• Skrypt Gradle podpisuje i wysyła zbudowane RPMki
• Na docelowych maszynach dodanie kolejnego repozytorium YUM oraz yum install
Sonatype Nexus
Tech Space #1 01/12/2016 18
![Page 19: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/19.jpg)
Jenkins
• Narzędzie do zarządzania konfiguracją napisane w Pythonie, 2011
• Używa ZeroMQ do komunikacji mastera z agentami (TCP, C++, AES)
• Bardzo elastyczne: – Master + agenty– Tylko agent (masterless)– Tylko serwer (Salt SSH)– Podejście imperatywne i deklaratywne
Saltstack
Tech Space #1 01/12/2016 19
![Page 20: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/20.jpg)
Jenkins
• SaltMaster: salt-‐master + salt-‐api + kilka linijek w configu + użytkownik na maszynie
• Miniony (agenty zainstalowane na docelowych serwerach)
• https://wiki.jenkins-‐ci.org/display/JENKINS/saltstack-‐plugin
Integracja z SaltMasterem
Tech Space #1 01/12/2016 20
![Page 21: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/21.jpg)
Jenkins
• Joby mogące tworzyć i usuwać tenanty na konkretnych środowiskach
• Kontrola dostępu
• Wszystko jest w jednym miejscu
• Jeszcze więcej pipelinów (profit!)
Testowanie aplikacji multi-‐tenant
Tech Space #1 01/12/2016 21
![Page 22: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/22.jpg)
Jenkins
• Sprawdzenie stanu aplikacji po deploy’u jednego komponentu
• Formuła Saltstack/skrypt bash
• Każdy zespół pracuje nad własnym smoke-‐testem:– Utwórz tenanta z odpowiednią konfiguracją– Zrób testy– Usuń tenanta
Smoke tests
Tech Space #1 01/12/2016 22
![Page 23: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/23.jpg)
JenkinsEwolucja projektu
Tech Space #1 01/12/2016 23
• Od jednego Opsa do dziesięciu
• Wybrany dostawca chmury -‐ AWS
• Kilkukrotny wzrost liczby devów
• Nowe podejście do zarządzania serwerami – immutable
• Kod Saltstacka przepisany w nowej konwencji (podział na role)
• W trakcie pełnej adopcji Jenkinsa 2.0 (DSL, Groovy, użycie nowych pipeline’ów)
• Kilka Jenkinsów zamiast jednego
![Page 24: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/24.jpg)
JenkinsEwolucja pipeline’ów
Tech Space #1 01/12/2016 24
• Znika Saltmaster
• Kod Saltowy używany tylko w czasie budowania obrazów (AMI) Packerem
• Terraform zarządzający całą infrastrukturą
• Blue/green deployment
![Page 25: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/25.jpg)
JenkinsTip #1 – H jak Hash
Tech Space #1 01/12/2016 25
• */15 * * * * (co 15 minut: :00, :15, :30, :45)
• H/15 * * * * (co 15 minut, np: :07, :22, :37, :52)
![Page 26: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/26.jpg)
Jenkins
• https://wiki.jenkins-‐ci.org/display/JENKINS/Parameterized+Remote+Trigger+Plugin
Tip #2 – Jenkins do Jenkinsa
Tech Space #1 01/12/2016 26
![Page 27: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/27.jpg)
JenkinsTip #2 – Jenkins do Jenkinsa cd.
Tech Space #1 01/12/2016 27
![Page 28: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/28.jpg)
JenkinsTip #3 – podgląd zmian w konfiguracjach
Tech Space #1 01/12/2016 28
• https://wiki.jenkins-‐ci.org/display/JENKINS/JobConfigHistory+Plugin
![Page 29: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/29.jpg)
JenkinsTip #4 – Monitor na monitorze
Tech Space #1 01/12/2016 29
• https://wiki.jenkins-‐ci.org/display/JENKINS/Build+Monitor+Plugin
![Page 30: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/30.jpg)
JenkinsTip #5 – Bruce i Chuck
Tech Space #1 01/12/2016 30
![Page 31: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/31.jpg)
Jenkins
Tech Space #1 01/12/2016 31
CI running the automated tests
http://devopsreactions.tumblr.com
![Page 32: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/32.jpg)
Pytania?
![Page 33: Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie w projekcie, które ewoluuje razem z nim](https://reader031.vdocuments.site/reader031/viewer/2022030310/58f08f1b1a28ab91428b45eb/html5/thumbnails/33.jpg)
DZIĘKI!
Tech Space #1DevOps