Cześć wszystkim. Tytuł może brzmi zbyt ogólnie, ale postaram się w kilku słowach zawrzeć kilka konkretnych pytań.
Ostatnio zacząłem się interesować tematami związanymi z continuous integration i testowaniem aplikacji. Czytam znalezione w sieci artykuły i próbuję ułożyć sobie w głowie plan działania. Mam na myśli naukę, pierwszy projekt, ścieżkę jego rozwoju. Chciałbym poprosić bardziej doświadczone osoby żeby w tym temacie napisały coś od siebie, może podrzuciły przydatne materiały i podzieliły się doświadczeniami.
Po pierwsze chodzi mi o to jak w ogóle zacząć poważny projekt? Mam za sobą kilka niewielkich projektów, trochę doświadczenia z testami jednostkowymi, mniej więcej wiem jak wygląda ścieżka od developera przez serwer testowy po produkcję. Chciałbym jednak usystematyzować tę wiedzę, rozwiać wątpliwości i podejść do sprawy poważnie, od "wewnętrznej" strony, zaczynając własny projekt. Niezbyt skomplikowany, żebym sam mógł udźwignąć wszystkie etapy jego tworzenia.
Chciałbym poznać schemat działania, elementy składowe takiego systemu i całą drogę od "pustej kartki" po gotową aplikację, którą można w łatwy sposób rozbudowywać, kilkoma kliknięciami testować i deployować nową wersję. Mógłby wypowiedzieć się tu ktoś z doświadczeniem w takim tworzeniu projektu od podstaw?
Konkretnie, co do mojego przypadku - ostatni mój projekt umarł, głównie dlatego, że zacząłem gubić się w kodzie, nie pisałem testów i ogólnie straciłem kontrolę nad wszystkim. Do tego żmudne przerzucanie przez FTP odpowiednich plików na serwer, problemy z migracją bazy danych... ogólnie klapa, ale o dziwo zmotywowało mnie to do podjęcia się stworzenia podobnego projektu, albo wręcz wersji drugiej tego samego projektu, tym razem robiąc to "jak Pan Bóg przykazał".
Projekt to dość rozbudowane forum internetowe. Nie wiem czy taki projekt potrzebuje tego wszystkiego, ale chciałbym dzięki niemu po prostu nauczyć się czegoś więcej, co później mógłbym wykorzystać w większych projektach.
Technologie jakie chcę wykorzystywać to PHP Symfony3 i MySQL. Do testów jednostkowych PHPUnit i Mockery. Do tego momentu jestem w stanie sobie poradzić. Dalej - CI. Chciałbym użyć Jenkinsa, ale mam z nim praktycznie zerowe doświadczenie. Chciałbym też nauczyć się testowania z użyciem Selenium. Chciałbym na wirtualnych maszynach stworzyć sobie środowisko testowe i mieć możliwość łatwego wgrywania aktualizacji na serwer produkcyjny. Tu moja prośba o pomoc - nie bardzo wiem jak się do tego wszystkiego w poprawny sposób zabrać, żeby się nie zniechęcić. Będę wdzięczny za wszelkie konkrety, dobre rady czy wartościowe materiały.