To jest trochę ... próżne pytanie, ale wyjście BuildBota nie jest szczególnie przyjemne.
Na przykład w porównaniu z ...
.. a inne, BuildBot wygląda raczej ... archaicznie
Obecnie gram z Hudsonem, ale jest on bardzo skoncentrowany na Javie (chociaż dzięki temu przewodnikowi łatwiej było skonfigurować niż BuildBot i wygenerowałem więcej informacji)
Zasadniczo: czy istnieją systemy ciągłej integracji skierowane do Pythona, które generują wiele błyszczących wykresów i tym podobnych?
Aktualizacja: Od tego czasu projekt Jenkins zastąpił Hudson jako społeczną wersję pakietu. Pierwotni autorzy również przenieśli się do tego projektu. Jenkins jest teraz standardowym pakietem w systemach Ubuntu / Debian, RedHat / Fedora / CentOS i innych. Następująca aktualizacja jest nadal zasadniczo poprawna. Punkt wyjścia do zrobienia tego z Jenkinsem jest inny.
Aktualizacja: po wypróbowaniu kilku alternatyw, myślę, że zostanę przy Hudsonie. Uczciwość była miła i prosta, ale dość ograniczona. Myślę, że Buildbot lepiej nadaje się do posiadania wielu niewolników kompilacji, niż wszystkiego, co działa na jednej maszynie, tak jak ja jej używałem .
Konfiguracja Hudsona dla projektu w Pythonie była całkiem prosta:
- Pobierz Hudson z http://hudson-ci.org/
- Uruchom to z
java -jar hudson.war
- Otwórz interfejs sieciowy pod domyślnym adresem
http://localhost:8080
- Przejdź do Manage Hudson, Plugins, kliknij „Update” lub podobną
- Zainstaluj wtyczkę Git (musiałem ustawić
git
ścieżkę w globalnych preferencjach Hudson) - Utwórz nowy projekt, wprowadź repozytorium, okresy odpytywania SCM i tak dalej
- Zainstaluj
nosetests
przez,easy_install
jeśli jeszcze nie jest - Na etapie kompilacji dodaj
nosetests --with-xunit --verbose
- Zaznacz opcję „Publikuj raport wyników testu JUnit” i ustaw „Pliki XML raportu testowego” na
**/nosetests.xml
To wszystko, czego potrzeba. Możesz ustawić powiadomienia e-mail, a wtyczki są warte obejrzenia. Kilka, których obecnie używam w projektach Pythona:
- Wtyczka SLOCCount do liczenia linii kodu (i tworzenia wykresów!) - musisz zainstalować sloccount osobno
- Naruszenia dotyczące analizowania danych wyjściowych PyLint (można ustawić progi ostrzegawcze, wykreślić liczbę naruszeń dla każdej kompilacji)
- Cobertura może przeanalizować wyjście Cover.py. Nosetest może uzyskać pokrycie podczas przeprowadzania testów, używając
nosetests --with-coverage
(to zapisuje dane wyjściowe**/coverage.xml
)
Odpowiedzi:
Możesz sprawdzić Nose i wtyczkę wyjściową Xunit . Możesz uruchomić testy jednostkowe i sprawdzanie pokrycia za pomocą tego polecenia:
Będzie to pomocne, jeśli chcesz skorzystać z trasy Jenkins lub jeśli chcesz użyć innego serwera CI, który obsługuje raportowanie testów JUnit.
Podobnie możesz przechwycić dane wyjściowe pylinta za pomocą wtyczki naruszeń dla Jenkinsa
źródło
nosetests --with-xunit
nosetests --with-xunit --enable-audit
dostanęnosetests: error: no such option: --enable-audit
--with-nosexunit
na--with-xunit
.Nie wiem, czy to wystarczy: Bitten zostało stworzone przez ludzi, którzy piszą Traca i jest zintegrowane z Trac. Apache Gump to narzędzie CI używane przez Apache. Jest napisany w Pythonie.
źródło
Odnieśliśmy wielki sukces z TeamCity jako naszym serwerem CI i wykorzystując nos jako nasz testowy biegacz. Wtyczka Teamcity do testów nosetestów zapewnia zliczanie wyniku pozytywnego / negatywnego, czytelny wyświetlacz dla niepowodzenia testu (który można przesłać pocztą elektroniczną). Możesz nawet zobaczyć szczegóły niepowodzeń testów podczas działania stosu.
Jeśli oczywiście obsługuje takie rzeczy, jak działanie na wielu komputerach, i jest znacznie prostsze w konfiguracji i utrzymaniu niż buildbot.
źródło
Stronę kaskady Buildbota można znacznie upiększyć. Oto ładny przykład http://build.chromium.org/buildbot/waterfall/waterfall
źródło
Warto również sprawdzić Bamboo Atlassian . Cały pakiet Atlassian (JIRA, Confluence, FishEye itp.) Jest całkiem fajny.
źródło
Wydaje mi się, że ten wątek jest dość stary, ale oto moje podejście do niego z hudsonem:
Zdecydowałem się pójść z pipem i założyć repozytorium (bolesne, ale ładnie wyglądający koszyk na jajka), do którego Hudson automatycznie przesyła po udanych testach. Oto mój szorstki i gotowy skrypt do użycia ze skryptem wykonywania konfiguracji hudson, takim jak: /var/lib/hudson/venv/main/bin/hudson_script.py -w $ WORKSPACE -p my.package -v $ BUILD_NUMBER, po prostu wstaw ** / zasięg.xml, pylint.txt i nosetests.xml w bitach konfiguracyjnych:
Jeśli chodzi o wdrażanie rzeczy, możesz zrobić coś takiego:
A potem ludzie mogą tworzyć rzeczy za pomocą:
Te rzeczy zakładają, że masz strukturę repozytorium na pakiet z ustawionym plikiem setup.py i zależnościami, a następnie możesz po prostu sprawdzić trunk i uruchomić na nim te rzeczy.
Mam nadzieję, że to komuś pomoże.
------aktualizacja---------
Dodałem epydoc, który bardzo ładnie pasuje do hudson. Po prostu dodaj javadoc do swojej konfiguracji za pomocą folderu html
Zauważ, że pip nie obsługuje obecnie poprawnie flagi -E, więc musisz osobno utworzyć venv
źródło
inny: Shining Panda to hostowane narzędzie dla Pythona
źródło
Jeśli rozważasz hostowane rozwiązanie CI i robisz open source, powinieneś również przyjrzeć się Travis CI - ma bardzo dobrą integrację z GitHub. Zaczęło się jako narzędzie Ruby, ale jakiś czas temu dodali obsługę Pythona .
źródło
Sygnał to kolejna opcja. Możesz dowiedzieć się więcej na ten temat i obejrzeć film również tutaj .
źródło
Rozważałbym CircleCi - ma świetne wsparcie dla Pythona i bardzo ładne wyjście.
źródło
Continuum binstar teraz jest w stanie wyzwolić buduje z github i można skompilować dla Linux, OSX i Windows (32/64). fajną rzeczą jest to, że naprawdę pozwala ci na ścisłe połączenie dystrybucji i ciągłej integracji. To przecinanie „t” i kropkowanie „ja” integracji. Witryna, przepływ pracy i narzędzia są naprawdę dopracowane, a AFAIK conda jest najbardziej niezawodnym i pythonowym sposobem dystrybucji złożonych modułów Pythona, w którym trzeba pakować i dystrybuować biblioteki C / C ++ / Fotran.
źródło
Sporo używaliśmy ugryzienia. Jest ładny i dobrze integruje się z Trac, ale jego dostosowanie jest trudne, jeśli masz niestandardowy przepływ pracy. Poza tym nie ma tak wielu wtyczek, jak dla bardziej popularnych narzędzi. Obecnie oceniamy Hudson jako zamiennik.
źródło
Sprawdź rultor.com . Jak wyjaśniono w tym artykule , używa Dockera do każdej kompilacji. Dzięki temu możesz skonfigurować co tylko zechcesz w swoim obrazie Dockera, w tym w Pythonie.
źródło
Małe zastrzeżenie, tak naprawdę musiałem zbudować takie rozwiązanie dla klienta, który chciał automatycznie przetestować i wdrożyć dowolny kod w git push oraz zarządzać biletami wydania za pomocą notatek git. To również doprowadziło do mojej pracy nad projektem AIMS .
Można było łatwo po prostu skonfigurować gołego systemu węzła, który ma użytkownikowi budować i zarządzać ich gromadzeniu przez
make(1)
,expect(1)
,crontab(1)
/systemd.unit(5)
iincrontab(1)
. Można by nawet pójść o krok dalej i użyć ansible i selera do kompilacji rozproszonych z magazynem plików gridfs / nfs.Chociaż nie spodziewałbym się, że ktokolwiek inny poza Sziwobrodym UNIXem lub inżynierem / architektem poziomu Principle zajdzie tak daleko. To po prostu fajny pomysł i potencjalne doświadczenie edukacyjne, ponieważ serwer kompilacji to nic innego jak sposób na arbitralne wykonywanie zadań skryptowych w sposób zautomatyzowany.
źródło