Jak uruchomić travis-ci lokalnie
Właśnie dołączyłam do projektu i jestem nowa w travis-ci. Wolałbym nie zmuszać 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ć go lokalnie. Czy travis oferuje coś takiego?
Uwaga: widziałem travis-ci cli i pobrałem go, ale wszystko wydaje się do zrobienia jest wywołanie ich API, które następnie łączy się z moim GitHub repo, więc jeśli Nie naciskam, nie będzie miało znaczenia, że uruchom ponownie ostatnią kompilację.
10 answers
Ten proces pozwala na całkowite odtworzenie dowolnego zadania na komputerze. Możesz również przerwać proces w dowolnym momencie i debugować. Poniżej przykład, gdzie doskonale odwzorowuję wyniki pracy # 191.1 na PHP-school/CLI-menu .
Warunki wstępne
- masz publiczne repo na GitHub
- przeprowadziłeś co najmniej jedną kompilację na Travisie
- masz skonfigurowany Docker na swoim komputerze
Set up the build środowisko
Numer referencyjny: https://docs.travis-ci.com/user/common-build-problems/
-
Stwórz swój własny tymczasowy identyfikator budowy
BUILDID="build-$RANDOM"
-
Wyświetl dziennik budowy, Otwórz przycisk Pokaż więcej, aby znaleźć linię instancji, wklej ją tutaj i uruchom (zamień znacznik po dwukropku na najnowszy dostępny):
INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0"
-
Run The headless Serwer
docker run --name $BUILDID -dit $INSTANCE /sbin/init
-
Uruchom dołączonego klienta
docker exec -it $BUILDID bash -l
Uruchom zadanie
Teraz jesteś w swoim środowisku Travis. Uruchom su - travis
, Aby rozpocząć.
Ten krok jest dobrze zdefiniowany, ale jest bardziej żmudny i ręczny. Znajdziesz wszystkie polecenia, które Travis uruchamia w środowisku. Aby to zrobić, poszukaj wszystkiego w prawej kolumnie, która ma znacznik 0.03 s.
Po lewej stronie będziesz zobacz rzeczywiste polecenia. Uruchom te polecenia, w kolejności.
Wynik
Teraz jest dobry czas na uruchomienie history
polecenia. Możesz ponownie uruchomić proces i odtworzyć te polecenia, aby uruchomić ten sam test na zaktualizowanej bazie kodu.
- jeśli repo jest prywatne:
ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
tocat ~/.ssh/id_rsa.pub
i Kliknij tutaj aby dodać klucz - FYI: możesz
git pull
z wewnątrz Dockera załadować commity z twojego dev boxa przed wysłaniem ich na GitHub - jeśli chcesz zmienić komendy uruchamiane wtedy twoim obowiązkiem jest dowiedzieć się, jak to przekłada się z powrotem na działające
.travis.yml
. - Nie wiem jak wyczyścić środowisko dokera, wygląda to na skomplikowane, może to wycieka pamięć
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-12 08:40:20
Travis-ci oferuje nową infrastrukturę opartą na kontenerach, która korzysta z Dockera. Może to być bardzo przydatne, jeśli próbujesz rozwiązać kompilację travis-ci, odtwarzając ją lokalnie. To pochodzi z Dokumentacji Travisa CI .
Rozwiązywanie problemów lokalnie w obrazie dokera
Jeśli masz problemy ze znalezieniem dokładnego problemu w kompilacji, często pomaga uruchomienie kompilacji lokalnie. Aby to zrobić, musisz korzystać z naszej infrastruktury opartej na kontenerach (IE, have sudo: false
w twoim .travis.yml
), i wiedzieć, którego obrazu dokera używasz na Travis CI.
Uruchamianie obrazu dokera opartego na kontenerze lokalnie
- Pobierz i zainstaluj silnik Docker Engine .
-
Wybierz obraz z Docker Hub . Jeśli nie używasz obrazu specyficznego dla języka wybierz
ci-ruby
. Otwórz terminal i rozpocznij interaktywną sesję dokowania przy użyciu adresu URL obrazu:docker run -it travisci/ubuntu-ruby:18.04 /bin/bash
-
Przełącz na użytkownika
travis
:su - travis
- Clone your repozytorium git do folderu
/
obrazu. - ręcznie instaluj dowolne zależności.
- uruchom ręcznie komendę Travis CI build.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-09 13:33:19
Aktualizacja: mam teraz kompletną odpowiedź "pod klucz", wszystko w jednym, zobacz https://stackoverflow.com/a/49019950/300224 . zajęło to tylko 3 lata, aby dowiedzieć się!
Zgodnie z dokumentacją Travis ' a: https://github.com/travis-ci/travis-ci istnieje mikstura projektów, które zmawiają do dostarczenia usługi Travis CI, którą znamy i kochamy. Poniższy podzbiór projektów wydaje się zezwalać na lokalną funkcjonalność make test
przy użyciu .travis.yml
w Twoim projekt:
Travis-build
Travis-build tworzy build
skrypt dla każdego zadania. Pobiera konfigurację z pliku .travis.yml
i
tworzy skrypt bash
, który jest następnie uruchamiany w środowisku build przez
travis-pracownik.
Travis-książki kucharskie
Travis-książki kucharskie Chef książki kucharskie, które są używane do tworzenia środowisk.
Travis-worker
Travis-worker jest odpowiedzialny za prowadzenie budowy skrypty w czystym środowisku. Strumieniuje wyjście dziennika do travis-rejestruje i wypycha aktualizacje stanu (build starting/finishing) do travis-hub.
(Pozostałe podprojekty są odpowiedzialne za komunikację z GitHub, ich interfejsem WWW, e-mailem i ich API.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-28 00:06:55
Podobny do Scotta McLeoda, ale generuje również skrypt bash do uruchamiania kroków z .travis.yml.
Rozwiązywanie problemów lokalnie w Dockerze za pomocą wygenerowanego skryptu Bash
# choose the image according to the language chosen in .travis.yml
$ docker run -it -u travis quay.io/travisci/travis-jvm /bin/bash
# now that you are in the docker image, switch to the travis user
sudo - travis
# Install a recent ruby (default is 1.9.3)
rvm install 2.3.0
rvm use 2.3.0
# Install travis-build to generate a .sh out of .travis.yml
cd builds
git clone https://github.com/travis-ci/travis-build.git
cd travis-build
gem install travis
# to create ~/.travis
travis version
ln -s `pwd` ~/.travis/travis-build
bundle install
# Create project dir, assuming your project is `AUTHOR/PROJECT` on GitHub
cd ~/builds
mkdir AUTHOR
cd AUTHOR
git clone https://github.com/AUTHOR/PROJECT.git
cd PROJECT
# change to the branch or commit you want to investigate
travis compile > ci.sh
# You most likely will need to edit ci.sh as it ignores matrix and env
bash ci.sh
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-22 13:01:38
Użyjwwtd (co zrobiłby travis) ruby gem, aby uruchomić testy na twojej lokalnej maszynie mniej więcej tak, jak na travisie.
Odtworzy macierz budowania i uruchomi każdą konfigurację, świetnie sprawdzając konfigurację przed naciśnięciem.
gem i wwtd
wwtd
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-12 00:52:08
Tl; dr użyj obrazka określonego w https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image{[21]w połączeniu z https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli .
W 2019 roku]}
#troubleshooting-locally-in-a-docker-image
sekcja została zastąpiona przez #running-builds-in-debug-mode
który również opisuje jak SSH do zadania uruchomionego w trybie debugowania.
Edytuj 2019-07-26
#troubleshooting-locally-in-a-docker-image
sekcja nie jest już częścią docs; oto dlaczego
Chociaż, to wciąż w historii Gita: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 .
Poszukaj (dość starych, nie mogłem znaleźć nowszych) wersji obrazu pod adresem: 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 otrzymałem lokalnie.
Zadziałało.
To, co faktycznie działało, to użycie obrazu określonego w Rozwiązywanie problemów lokalnie w strona Docker Image docs. W moim przypadku było to travisci/ci-garnet:packer-1512502276-986baf0
.
Udało mi się dodać {[7] } następujące kroki opisane na https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli .
dm@z580:~$ docker run --name travis-debug -dit travisci/ci-garnet:packer-1512502276-986baf0 /sbin/init
dm@z580:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
travisci/ci-garnet packer-1512502276-986baf0 6cbda6a950d3 11 months ago 10.2GB
dm@z580:~$ docker exec -it travis-debug bash -l
root@912e43dbfea4:/# su - travis
travis@912e43dbfea4:~$ cd builds/
travis@912e43dbfea4:~/builds$ git clone https://github.com/travis-ci/travis-build
travis@912e43dbfea4:~/builds$ cd travis-build
travis@912e43dbfea4:~/builds/travis-build$ mkdir -p ~/.travis
travis@912e43dbfea4:~/builds/travis-build$ ln -s $PWD ~/.travis/travis-build
travis@912e43dbfea4:~/builds/travis-build$ gem install bundler
travis@912e43dbfea4:~/builds/travis-build$ bundle install --gemfile ~/.travis/travis-build/Gemfile
travis@912e43dbfea4:~/builds/travis-build$ bundler binstubs travis
travis@912e43dbfea4:~/builds/travis-build$ cd ..
travis@912e43dbfea4:~/builds$ git clone --depth=50 --branch=master https://github.com/DusanMadar/PySyncDroid.git DusanMadar/PySyncDroid
travis@912e43dbfea4:~/builds$ cd DusanMadar/PySyncDroid/
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ ~/.travis/travis-build/bin/travis compile > ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ sed -i 's,--branch\\=\\\x27\\\x27,--branch\\=master,g' ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ bash ci.sh
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\
(zobacz ostatnie polecenie sed -i ...
) w ci.sh
.
Jeśli to nie zadziała polecenie poniżej pomoże zidentyfikować docelowy numer linii i możesz edytować linię ręcznie.
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ cat ci.sh | grep -in branch
840: travis_cmd git\ clone\ --depth\=50\ --branch\=\'\'\ https://github.com/DusanMadar/PySyncDroid.git\ DusanMadar/PySyncDroid --echo --retry --timing
889:export TRAVIS_BRANCH=''
899:export TRAVIS_PULL_REQUEST_BRANCH=''
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$
Nie zadziałało.
Po zaakceptowanej odpowiedzi na to pytanie, ale nie
znajdź obraz (travis-ci-garnet-trusty-1512502259-986baf0
) wspomniany przez instance
W https://hub.docker.com/u/travisci/.
Build wersja worker wskazuje na Travis-ci/worker commit i jego Travis-worker-install referencje quay.io/travisci/
jako rejestr obrazów. Więc Próbowałem.
dm@z580:~$ docker run -it -u travis quay.io/travisci/travis-python /bin/bash
travis@370c23a773c9:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
travis@370c23a773c9:/$
dm@z580:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/travisci/travis-python latest 753a216d776c 3 years ago 5.36GB
Zdecydowanie nie wierny (Ubuntu 14.04) i nie mały.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-06 17:23:05
Możesz spróbować Trevor , który używa Dockera do uruchomienia Twojego Travis build.
Z opisu:
Często muszę uruchamiać testy dla wielu wersji Node.js. Ale nie chcę przełączać wersji ręcznie za pomocą n/nvm lub wciskać kodu do Travis CI tylko po to, aby uruchomić testy.
Dlatego stworzyłem Trevora. Czyta .travis.yml i uruchamia testy we wszystkich wersjach, o które prosiłeś, tak jak Travis CI. Teraz możesz przetestować przed push i zachować historię Gita czysto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55
Nie jestem pewien, jaki był twój pierwotny powód, aby uruchomić Travis lokalnie, jeśli po prostu chciał grać z nim, to przestań czytać tutaj, ponieważ to jest nieistotne dla Ciebie.
Jeśli masz już doświadczenie z hosted Travis i chcesz uzyskać to samo doświadczenie we własnym centrum danych, Czytaj dalej.
Od Grudzień 2014 Travis CI oferuje przedsiębiorstwo na miejscu wersja.
Http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
Cennik jest również częścią artykułu:
Licencjonowanie odbywa się na miejsca, gdzie każda licencja obejmuje 20 użytkowników. Ceny zaczynają się od $6,000 za licencję, która obejmuje 20 użytkowników i 5 jednoczesnych kompilacji. Jest opcja premium z nieograniczonymi kompilacjami za $8,500.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-16 07:02:41
Możliwe jest SSH do środowiska CI poprzez host bounce. Funkcja nie jest wbudowana w CI, ale można ją osiągnąć przez następujące kroki.
- na serwerze bounce Utwórz użytkownika
travis
i upewnij się, że możesz do niego SSH. -
Umieść te linie w
script:
sekcji twojego.travis.yml
(np. na końcu).- echo travis:$sshpassword | sudo chpasswd - sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config - sudo service ssh restart - sudo apt-get install sshpass - sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travis@$bouncehostip
gdzie
$bouncehostip
jest IP / hostem twojego hosta bounce, a {[6] } jest Twoim zdefiniowanym hasłem SSH. Zmienne te można dodać jako zaszyfrowane zmienne . Przesuń zmiany. Powinieneś być w stanie nawiązać połączenie SSH z hostem bounce.
Source: Shell into Travis CI Build Environment.
Oto pełny przykład:
# use the new container infrastructure
sudo: required
dist: trusty
language: python
python: "2.7"
script:
- echo travis:$sshpassword | sudo chpasswd
- sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
- sudo service ssh restart
- sudo apt-get install sshpass
- sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travisci@$bouncehostip
Zobacz: c-mart/travis-shell
na GitHub .
Zobacz także: Jak odtworzyć środowisko budowania dla debugowania
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-09 14:17:24
Nie byłem w stanie użyć odpowiedzi tutaj tak, jak jest. Na początek Jak wspomniano , dokument pomocy Travis dotyczący lokalnego uruchamiania zadań został usunięty. Wszystkie wpisy na blogu i artykuły, które znalazłem, są na tym oparte. Nowy tryb "debug" nie przemawia do mnie, ponieważ chcę uniknąć czasów kolejek i infrastruktury Travis, dopóki nie będę miał pewności, że gdzieś się znalazłem z moimi zmianami.
W moim przypadku aktualizuję moduł Puppet i nie jestem ekspertem od Puppet, ani szczególnie doświadczony w Ruby, Travis, lub ich ekosystemach. Ale udało mi się zbudować wykonalny obraz testowy z porad i pomysłów w tym artykule i gdzie indziej, a także poprzez dokładne zbadanie dzienników budowy Travis CI.
Nie byłem w stanie znaleźć ostatnich obrazów pasujących do nazw w logach CI (na przykład mogłem znaleźć travisci/ci-sardonyx, ale nie mogłem znaleźć niczego z "xenial" lub o tej samej nazwie kompilacji). Z dzienników wynika, że obrazy są teraz przesyłane przez AMQP zamiast mechanizm bardziej mi znany.
Udało mi się znaleźć obraz travsci/ubuntu-ruby:16.04
, który pasuje do systemu operacyjnego, który kieruję do mojego konkretnego przypadku. Nie ma wszystkich komponentów używanych w Travis CI, więc zbudowałem nowy na tej podstawie, z niektórymi komponentami dodanymi do obrazu, a innymi dodanymi w kontenerze podczas pracy w zależności od potrzeb.
-
Znajdź najnowsze Travis CI obraz w Docker Hub dopasowuje docelowy system operacyjny tak dokładnie, jak to możliwe.
-
Sklonuj repozytorium do katalogu kompilacji i uruchom kontener z katalogiem kompilacji zamontowanym jako wolumin, z katalogiem roboczym ustawionym na wolumin docelowy
-
Teraz ciężka praca: przejrzyj dziennik budowy Travisa i skonfiguruj środowisko. W moim przypadku oznaczało to skonfigurowanie RVM, a następnie użycie
bundle
do zainstalowania zależności projektu. RVM wydaje się być już obecny w środowisko Travis, ale musiałem go zainstalować; Wszystko inne pochodziło z odtwarzania poleceń w dzienniku budowy. -
Uruchom testy.
-
Jeśli wyniki nie pasują do tego, co widziałeś w dziennikach Travis CI, wróć do (3) i zobacz, gdzie iść.
-
Opcjonalnie Utwórz obraz wielokrotnego użytku.
-
Dev i testuj lokalnie, a potem push i miejmy nadzieję, że Twoje wyniki będą zgodne z oczekiwaniami.
Wiem, że to nie jest konkretny i może być oczywisty, a przebieg na pewno się zmieni, ale mam nadzieję, że komuś się przyda. Plik Dockerfile i README dla mojego obrazu są na Githubie w celach informacyjnych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-31 00:02:11