Wpis z mikrobloga

Szukam podpowiedzi, jak z godnie ze sztuką hostować apkę pythonową przy użyciu GITLAB-CI

-apka napisana w python, framework flask, webockety + może dojdzie jakiś REST
-repo leży w gitlab-ie
-serwer linux z odpalony gitlab-runnerem
-samą aplikacje będę pewnie uruchamiać przez gunicorn

Po uruchomieniu, pipeline zaciąga źródła i instaluje bilibteki w swojej ścieżce
/home/gitlab-runner/builds/blaBlAbLA/0/zxccxzc/projekt_name

pytania:
1. czy powinienem odpalać aplikacje w tej ścieżce, czy lepiej gdzieś ją kopiować?
i najważniejsze:
2. jak kontrolować proces? na początku pipeline powinienem ubić proces, a poźniej go ponownie uruchomić, jak to porządnie robić?

dodam jeszcze:
-aplikacja nie musi być zero downtimem, no chyba że da się łatwo to tutaj zastosować,
-raczej nie chcę tutaj używać docker-a,
-do potrzymania procesu kiedyś używalem aplikacji "supervisor", ale nie wiem czy tak to się robi po bożemu,
-a może apka jako systemowy daemon? ale wolałbym takie rozwiązanie zgodne z architecture as code, tzn. fajnie by było żeby config leżał w tym samym repo,
-btw. używam też nginx jako proxy.

#devops #python #flask #gitlab
  • 10
  • Odpowiedz
@benzyna_abstrakcyjna:

Odpowiedzi dostosowane do "nie chcę tutaj uzywać dockera" oraz do tego, że jak rozumiem chcesz się dowiedzieć "jak to dobrze zrobić".

1. CI (czy to GitLab, czy GitHub czy inny Jenkins) nie służą do uruchamiania aplikacji na runnerze! Więc zdecydowanie powinieneś gdzieś indziej to
  • Odpowiedz
@benzyna_abstrakcyjna: ansible odpalany w gitlabCI?
1 & 2. Jakbyś uzywał dokera to byś nie miał takich pytań ( ͡° ʖ̯ ͡°)

Po uruchomieniu, pipeline zaciąga źródła i instaluje bilibteki w swojej ścieżce

no fajnie,
  • Odpowiedz
@morsik:

1. CI (czy to GitLab, czy GitHub czy inny Jenkins) nie służą do uruchamiania aplikacji na runnerze! Więc zdecydowanie powinieneś gdzieś indziej to kopiować/instalować.

to był skróc myslowy, oczywiście nie mam zamiaru startować procesu z poziomu runner-a

Rozumiem, że używasz shell
  • Odpowiedz
@benzyna_abstrakcyjna: ale nawet jak nie chcesz Dockera na serwerze, to szczerze polecam użycie Docker Runnrea na GitLabie przynajmniej do standarcowych zadań CI. Zapewni Ci zawsze czyste środowisko jeśli chodzi o to co Ci się w CI wykonuje.
  • Odpowiedz
@morsik: tutaj akurat mam bardzo prosty case i bardzo słabą vm. Docelowo będzie docker i ansible, ale chciałem też poznać sposób bez użycia "armaty".

Co do tego co pisałeś wcześniej

Chodziło Ci chyba o Infrastructure as a Code? Na pewno konfiguracji nie powienieneś trzymać razem z aplikacją. To jest zła praktyka, bo co jak będziesz chciał mieć środowisko deweloperskie i produkcyjne? W takiej sytuacji programiści nie powinni mieć do haseł
  • Odpowiedz
Jesteś w stanie powiedzieć co jest złego w tym podejściu?


@benzyna_abstrakcyjna: w teorii nic. Po prostu w prawdziwym świecie zwykle zarówno aplikacje jak i ich deployment jest bardziej rozbudowany i lepiej mieć to osobno.

No ale na prywatne małe bzdety sam mam w jednym repo, bo więcej nie potrzeba. Pytałeś jak to powinno być, a nie jak wystarczy żeby było :P
  • Odpowiedz