Jestem samotnym programistą przez większość czasu, pracując nad wieloma dużymi projektami, głównie opartymi na PHP. Chcę profesjonalizować i automatyzować sposób obsługi zmian w bazie kodu oraz stworzyć proces ciągłej integracji, który umożliwi przejście do pracy w zespole bez konieczności wprowadzania zasadniczych zmian.
To, co teraz robię, to mam lokalne środowisko testowe dla każdego projektu; Używam SVN do każdego projektu; zmiany są testowane lokalnie, a następnie przenoszone do wersji online, zwykle przez FTP. Dokumentacja API jest generowana ręcznie z kodu źródłowego; Testy jednostkowe to coś, w co powoli się pakuję i nie jest to jeszcze część mojej codziennej rutyny.
„Cykl kompilacji”, który przewiduję, wykonałby następujące czynności:
Zestaw zmian zostaje sprawdzony w SVN po przetestowaniu lokalnym.
Zaczynam proces kompilacji. Wersja SVN HEAD zostaje sprawdzona, w razie potrzeby zmodyfikowana i przygotowana do przesłania.
Dokumentacja API jest generowana automatycznie - jeśli nie skonfigurowałem jej jeszcze szczegółowo, używając domyślnego szablonu, skanuję całą bazę kodu.
Nowa wersja jest wdrażana w zdalnej lokalizacji za pośrednictwem FTP (w tym zmiana nazwy katalogu, chmodding, importowanie baz danych i tym podobne). To jest coś, co już bardzo lubię phingować , ale jestem otwarty na alternatywy.
Przeprowadzane są testy jednostkowe rezydujące w predefiniowanej lokalizacji. Jestem informowany o ich niepowodzeniu lub sukcesie za pomocą wiadomości e-mail, RSS lub (najlepiej) HTML, które mogę pobrać i umieścić na stronie internetowej.
(opcjonalnie) plik tekstowy „changelog” użytkownika końcowego we wstępnie zdefiniowanej lokalizacji jest aktualizowany o wstępnie zdefiniowaną część komunikatu zatwierdzenia („Można teraz filtrować jednocześnie zarówno„ foo ”, jak i„ bar ” czas) Ten komunikat niekoniecznie jest identyczny z komunikatem zatwierdzenia SVN, który prawdopodobnie zawiera znacznie więcej informacji wewnętrznych.
Rzeczy takie jak metryki kodu, sprawdzanie stylu kodu itp. Nie są teraz moim głównym celem, ale na dłuższą metę z pewnością będą. Rozwiązania, które wprowadzają to po wyjęciu z pudełka, są bardzo uprzejmie rozpatrywane.
Szukam
Informacje zwrotne i doświadczenia od osób, które są lub były w podobnej sytuacji i pomyślnie wprowadziły rozwiązanie tego problemu
Szczególnie dobre samouczki krok po kroku i instrukcje, jak to skonfigurować
Rozwiązania zapewniające jak największą automatyzację , na przykład poprzez tworzenie szkieletowego API, przypadków testowych i tak dalej dla każdego nowego projektu.
i również
- Zalecenia produktu . To, co do tej pory wiem, to phing / ant dla kompilacji oraz phpUnderControl lub Hudson dla części raportującej. Lubię je wszystkie, o ile widzę, ale oczywiście nie mam z nimi szczegółowego doświadczenia.
Jestem zalany pracą, więc mam silną skłonność do prostych rozwiązań. Z drugiej strony, jeśli brakuje jakiejś funkcji, będę płakać z powodu jej zbytniej ograniczenia. :) Rozwiązania typu „wskaż i kliknij” są również mile widziane. Jestem również do rekomendacji produktów komercyjnych, które mogą współpracować z projektami PHP.
Moja konfiguracja
Pracuję lokalnie w systemie Windows (a dokładniej 7) i większość projektów klienckich jest uruchamiana na stosie LAMP, często na hostingu współdzielonym (= brak zdalnego SSH). Szukam rozwiązań, które mogę uruchomić we własnym środowisku. Jestem gotowy do skonfigurowania maszyny wirtualnej z systemem Linux do tego celu, nie ma problemu. Rozwiązania hostowane są dla mnie interesujące tylko wtedy, gdy zapewniają wszystkie opisane aspekty lub są wystarczająco elastyczne, aby współdziałać z innymi częściami procesu.
Bounty Przyjmuję odpowiedź, która według mnie da mi największy przebieg. Jest tu wiele doskonałych informacji, chciałbym zaakceptować więcej niż jedną odpowiedź. Dziękuję wszystkim!