Wpis z mikrobloga

Nie jestem do końca pewien jak to otagować więc #jenkins #devops #php
Gdzie szukać prawilnie przygotowanego jenkinsa, bo póki co samodzielnie dłubię, ale chciałbym sprawdzić jak robią to fachowcy.
1. build odpala composera (narzędzie phpowców, odpowiednik make w C), a potem jakieś ścierwa frontendowe (grunty, sassy, srasy) w dockerze z określoną wersją phpa i bibliotek, odpalane są unit testy phpunit i phpspec (jakiś #!/bin/bash).
2. po zbudowaniu aplikacja jest pakowana do jakiegoś archiwum (powiedzmy bz2)
2a. docker down
3. rozsyłana na serwery
4. rozpakowywana na serwerach
5. po stronie serwera odpalany jest skrypt php, który buduje sobie z bazy danych plik mapujący ustawienia
6. podłączana do nginx/varnisha jest plansza o maintenance (opcjonalnie, bo to tak naprawdę powinno być transparentne)
7. przepięte zostają ścieżki na najświeższy build
8. build staje się dostępny w sieci (opcjonalnie w zależności od punktu 6)

Przykłady znalezione w sieci zupełnie różnymi ścieżkami prowadzą, a która będzie najprawilniejsza dla PHPowców?
  • 4
@kamillus: Hmm... Z czym masz dokładnie problem? Ogólnie to wszystko powinno być w Jenkinsfile, który jest w repozytorium z kodem php.

Dlaczego budujesz w dockerze i tworzysz archiwum? Nie lepiej tworzyć nowy image i rozsyłać go na serwery? Jeżeli masz aplikację webową to kubernetes jest idealny do tego celu. Masz wszystko ogarnięte praktycznie bezkosztowo.
@kamillus: To masz dwa wyjścia, albo uruchamianie dockera z build systemu. W sensie robisz make build i make odpala Ci dockera i tam w nim wszystko robi za pomocą docker exec. Drugie podejście to odpalanie slave jenkinsa w dockerze on demand i robienie wszystkiego w środku tak, jakby to był normalny slave. Wiem, że istnieje plugin, który robi to w kubernetesie. Z czystym dockerem chyba też jest.
@yggdrasil: znaczy się to jest inaczej. Ja wiem jak powyższe osiągnąć z użyciem Jenkins, Decker i bash, ale szukam wzorców jak to ładnie napisać żeby w przyszłości devops wiedział co to robi i co miałem na myśli ;)