Właśnie dołączyłem do projektu i jestem nowy w travis-ci. Wolałbym nie przesyłać każdej małej zmiany do .travis.yml i każdej małej zmiany, którą wprowadzam do źródła, aby uruchomić kompilację. Dzięki jenkins możesz pobrać jenkins i uruchomić lokalnie. Czy Travis oferuje coś takiego?
Uwaga: widziałem cli travis-ci i pobrałem ją, ale wydaje się, że wystarczy zadzwonić do ich interfejsu API, który następnie łączy się z moim repozytorium github, więc jeśli nie będę naciskać, nie będzie miało znaczenia, że uruchomię ponownie ostatnia wersja.
install:
sekcji i prawdopodobnie o to bardziej martwi to pytanie.Odpowiedzi:
Ten proces pozwala całkowicie odtworzyć dowolne zadanie kompilacji Travis na komputerze. Ponadto możesz przerwać proces w dowolnym momencie i debugować. Poniżej znajduje się przykład, w którym doskonale odtwarzam wyniki pracy # 191.1 w php-school / cli-menu .
Wymagania wstępne
Skonfiguruj środowisko kompilacji
Odniesienie: https://docs.travis-ci.com/user/common-build-problems/
Stwórz swój tymczasowy identyfikator kompilacji
Wyświetl dziennik kompilacji , otwórz przycisk pokaż więcej, aby uzyskać INFORMACJE DLA PRACOWNIKÓW, znajdź wiersz INSTANCE, wklej go tutaj i uruchom (zamień znacznik po dwukropku na najnowszy dostępny) :
Uruchom serwer bezgłowy
Uruchom podłączonego klienta
Uruchom pracę
Teraz jesteś w swoim środowisku Travis. Uruchom,
su - travis
aby rozpocząć.Ten krok jest dobrze zdefiniowany, ale jest bardziej nużący i ręczny. Znajdziesz każde polecenie, które Travis uruchamia w środowisku. Aby to zrobić, poszukaj wszystkiego w prawej kolumnie, która ma podobny tag 0.03s.
Po lewej stronie zobaczysz aktualne polecenia. Uruchom te polecenia w kolejności.
Wynik
Teraz jest dobry czas na uruchomienie
history
polecenia. Możesz ponownie uruchomić proces i powtórzyć te polecenia, aby uruchomić ten sam test na zaktualizowanej podstawie kodu.ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
wtedycat ~/.ssh/id_rsa.pub
i kliknij tutaj , aby dodać kluczgit pull
z wewnątrz okna dokowanego załadować zatwierdzenia z twojego pola deweloperskiego przed wypchnięciem ich do GitHub.travis.yml
.źródło
instance:
nie widzę prawidłowej ścieżki obrazu dokera, po prostu coś takiegotravis-ci-garnet-trusty-1512502259-986baf0
. Próbowałemtravisci/ci-garnet:$INSTANCE
itravisci/$INSTANCE
- nie działa, nie mogę znaleźć obrazu. Również samo pobranie postfiksu (tj.travisci/ci-garnet:packer-1512502259-986baf0
) Nie działało.travisci/ci-garnet:packer-1512502276-986baf0
obrazu, który jest sugerowany w dokumentach Travis . Ten jest dostępny, ale nieaktualny. Na przykład CMake jest znacznie starszy niż jeden dostępny w Travis. Żadna nowa wersjaci-garnet
nie została przesłana do Docker Hub w ciągu ostatnich sześciu miesięcy, podczas gdy wcześniej było wiele aktualizacji miesięcznie.sudo: required
ustawienia? W mojej obecnej wersji widzę,travis-ci-sardonyx-xenial-1547455603-2c98a19
którą mogę zmapować do travisci / ci-sardonyx: packer-1547455648-2c98a19Travis-ci oferuje nową infrastrukturę opartą na kontenerach, która korzysta z dokera. Może to być bardzo przydatne, jeśli próbujesz rozwiązać problem kompilacji travis-ci, odtwarzając ją lokalnie. To pochodzi z Travis CI dokumentacji .
Rozwiązywanie problemów lokalnie w obrazie Docker
Jeśli masz problemy ze znalezieniem dokładnego problemu w kompilacji, często pomaga ona uruchomić kompilację lokalnie. Aby to zrobić, musisz korzystać z naszej infrastruktury opartej na kontenerach (tj. Mieć
sudo: false
w swoim.travis.yml
) i wiedzieć, którego obrazu Docker używasz w Travis CI.Lokalne uruchamianie obrazu dokera opartego na kontenerach
Wybierz obraz z Docker Hub . Jeśli nie używasz wyboru obrazu dla określonego języka
ci-ruby
. Otwórz terminal i rozpocznij interaktywną sesję Docker przy użyciu adresu URL obrazu:Przejdź do
travis
użytkownika:/
folderu obrazu.źródło
make test
.> Manually install any dependencies
To brzmi jak dobry sposób na uzyskanie wyników, które nie pasują do zwykłych wersji Travisa.Manually tun your Travis CI build command
... Na przykład, co? W jaki sposób? Co to jest? Mam.travis.yml
plik Próbowałem travis-build, ale to ślepy zaułek.AKTUALIZACJA: Mam teraz kompletną odpowiedź „pod klucz”, patrz https://stackoverflow.com/a/49019950/300224 . To zajęło tylko 3 lata!
Zgodnie z dokumentacją Travis: https://github.com/travis-ci/travis-ci istnieje mikstura projektów, które zmawiają się w celu dostarczenia znanej i kochanej przez nas usługi internetowej Travis CI. Wydaje się, że następujący podzbiór projektów pozwala na lokalną
make test
funkcjonalność przy użyciu.travis.yml
w projekcie:travis-build
travis-build tworzy skrypt kompilacji dla każdego zadania. Pobiera konfigurację z
.travis.yml
pliku i tworzybash
skrypt, który jest następnie uruchamiany w środowisku kompilacji przez travis-worker.książki kucharskie Travis
travis-cookbooks przechowuje książki kucharskie Chef, które są używane do zapewnienia środowiska kompilacji.
pracownik-podróżnik
travis-worker jest odpowiedzialny za uruchamianie skryptów kompilacji w czystym środowisku. Strumieniuje dane wyjściowe dziennika do travis-logs i przekazuje aktualizacje stanu (kompilacja od początku / końca) do travis-hub.
(Inne podprojekty są odpowiedzialne za komunikację z GitHub, ich interfejsem internetowym, pocztą e-mail i interfejsem API).
źródło
make test
funkcje byłby świetny. Skomentuj, jeśli chcesz ze mną pracować.travis-build
? W repozytorium nie ma instrukcji.Podobnie jak Scott McLeod, ale generuje również skrypt bash do uruchomienia kroków z .travis.yml.
Rozwiązywanie problemów lokalnie w Dockerze za pomocą wygenerowanego skryptu Bash
źródło
travis # to create ~/.travis
. Travis potrzebuje polecenia do wykonania.sudo - travis
powinno byćsu - travis
./home/travis/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError)
cd ~/.travis/travis-build/ bundle install bundler add travis bundler binstubs travis cd <REPO_YOU_WANT_TO_RUN_COMPILE_IN> ~/.travis/travis-build/bin/travis compile
Użyj wwtd (co by zrobił Travis) rubinowy klejnot, aby przeprowadzić testy na lokalnej maszynie mniej więcej tak, jak działałyby na travis.
Odtworzy matrycę kompilacji i uruchomi każdą konfigurację, świetną do konfiguracji sprawdzania poprawności przed wypchnięciem.
źródło
ruby
wsparcietl; dr Użyj obrazu podanego na https://docs.travis-ci.com/user/common-build-problems/#troublesh-locally-in-a-docker-image w połączeniu z https://github.com/ travis-ci / travis-build # use-as-addon-for-travis-cli .
EDYCJA 2019-12-06
#troubleshooting-locally-in-a-docker-image
sekcja została zastąpiona przez,#running-builds-in-debug-mode
która opisuje również SSH do zadania uruchomionego w trybie debugowania .EDYCJA 2019-07-26
#troubleshooting-locally-in-a-docker-image
sekcja nie jest już częścią dokumentów; dlategoChociaż wciąż jest w historii git: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 .
Poszukaj (dość starych, nie mogłem znaleźć nowszych) wersji obrazu na: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661 .
Chciałem sprawdzić, dlaczego jeden z testów w mojej kompilacji nie powiódł się z błędem, którego nie dostaję lokalnie.
Pracował
To, co faktycznie działało, to użycie obrazu określonego w sekcji Rozwiązywanie problemów lokalnie na stronie z dokumentami Docker Image . W moim przypadku tak było
travisci/ci-garnet:packer-1512502276-986baf0
.Udało mi się dodać
travise compile
następujące kroki opisane na stronie https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli .Wszystko z
.travis.yml
zostało wykonane zgodnie z oczekiwaniami (zainstalowane zależności, uruchomione testy, ...).Zauważ, że przed uruchomieniem
bash ci.sh
musiałem zmienić--branch\=\'\'\
na--branch\=master\
(patrz polecenie od drugiego do ostatniegosed -i ...
) wci.sh
.Jeśli to nie zadziała, poniższe polecenie pomoże zidentyfikować numer linii docelowej i możesz edytować linię ręcznie.
Nie działało
Podążyłem za zaakceptowaną odpowiedzią na to pytanie, ale nie znalazłem obrazu (
travis-ci-garnet-trusty-1512502259-986baf0
) wspomnianegoinstance
na stronie https://hub.docker.com/u/travisci/ .Kompilacja wersji roboczej wskazuje na travis-ci / worker commit i odniesienia do instalacji travis-worker-install
quay.io/travisci/
jako rejestr obrazów. Więc spróbowałem.Zdecydowanie nie jest Trusty (Ubuntu 14.04) i nie jest też mały.
źródło
http_proxy
środowisko ze względu nagit clone
. Domyślniegit clone
zgłaszagnutls_handshake
wyjątek. Dlatego muszę wymusić instalację konkretnejbundler
wersji,gem install bundler -v 1.16.6
ponieważbundler binstubs travis
poprzednio nie powiodła się. Popraw wymaganąbundler
wersję, uruchamiając `pakiet info travis`travis.yml
w wykonywalnym skrypcie powłoki. Ładnie wykonane! Jedynym ulepszeniem tego byłoby mechanizm, dzięki któremu można uniknąć ręcznej zamiany ciągów podczas określania gałęzi, z której należy budować.sed
polecenie, które odnosi się do podanego punktu. Zobacz polecenie przed uruchomieniembash ci.sh
.Możesz wypróbować Trevor , który używa Dockera do uruchamiania kompilacji Travis.
Z jego opisu:
źródło
Nie jestem pewien, jaki był pierwotny powód, dla którego Travis jest uruchamiany lokalnie, jeśli tylko chciał grać z nim, a następnie zatrzymać czytanie tutaj jak to jest bez znaczenia dla ciebie.
Jeśli masz już doświadczenie z hostowanym Travis i chcesz uzyskać takie same doświadczenia we własnym centrum danych, czytaj dalej.
Od grudnia 2014 Travis CI oferuje lokalną wersję Enterprise.
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
Ceny są również częścią tego artykułu:
źródło
whackamole
jest więc kopią projektu, nad którym naprawdę chcę pracować, i mogę skonfigurować tymczasowe zadanie kompilacji Travisa dla tego projektu, podczas gdy ja pracuję nad załamaniem automatyzacji kompilacji. Kiedy już to zrobię, rozłóż dziesiątki zatwierdzeń „oops” i prześlij na prawdziwe repozytorium GitHub. (I prawdopodobniewhackamole
usunę repozytorium GitHub i odpowiadające mu zadanie Travis.)Możliwe jest połączenie SSH ze środowiskiem Travis CI za pośrednictwem hosta odbijającego. Ta funkcja nie jest wbudowana w Travis CI, ale można ją osiągnąć, wykonując następujące czynności.
travis
użytkownika i upewnij się, że możesz do niego SSH.Umieść te linie w
script:
sekcji swojego.travis.yml
(np. Na końcu).Gdzie
$bouncehostip
jest adres IP / host twojego bounce hosta i$sshpassword
twoje zdefiniowane hasło SSH. Te zmienne można dodawać jako zmienne szyfrowane .Naciśnij zmiany. Powinieneś być w stanie nawiązać połączenie SSH z hostem odrzuceń.
Źródło: Powłoka w środowisku kompilacji Travis CI .
Oto pełny przykład:
Zobacz:
c-mart/travis-shell
w GitHub .Zobacz także: Jak odtworzyć środowisko kompilacji travis-ci do debugowania
źródło