Ich bin gerade einem Projekt beigetreten und neu bei travis-ci. Ich möchte lieber nicht jede kleine Änderung an .travis.yml und jede kleine Änderung, die ich an der Quelle vornehme, vornehmen müssen, um den Build auszuführen. Mit Jenkins können Sie Jenkins herunterladen und lokal ausführen. Bietet Travis so etwas an?
Hinweis: Ich habe die travis-ci cli gesehen und heruntergeladen, aber alles, was sie zu tun scheint, ist, ihre API aufzurufen, die dann eine Verbindung zu meinem Github-Repo herstellt. Wenn ich also nicht pushe, spielt es keine Rolle, dass ich neu starte der letzte Build.
install:
Abschnitt fehl , und wahrscheinlich sind es diese, um die es bei der Frage mehr geht.Antworten:
Mit diesem Vorgang können Sie alle Travis-Build-Jobs auf Ihrem Computer vollständig reproduzieren. Sie können den Vorgang auch jederzeit unterbrechen und debuggen. Unten ist ein Beispiel, in dem ich die Ergebnisse von Job Nr. 191.1 auf PHP-School / CLI-Menü perfekt wiedergebe .
Voraussetzungen
Richten Sie die Build-Umgebung ein
Referenz: https://docs.travis-ci.com/user/common-build-problems/
Erstellen Sie Ihre eigene temporäre Build-ID
Sehen Sie das Buildprotokoll , öffnen Sie die Show mehr Taste für ARBEITNEHMER Informationen und finden Sie die INSTANZ Linie, hier einfügen und run (ersetzen Sie den Tag nach dem Doppelpunkt mit der neuesten verfügbaren eins) :
Führen Sie den Headless-Server aus
Führen Sie den angehängten Client aus
Führen Sie den Job aus
Jetzt befinden Sie sich in Ihrer Travis-Umgebung. Lauf um
su - travis
zu beginnen.Dieser Schritt ist gut definiert, aber langwieriger und manueller. Sie finden jeden Befehl, den Travis in der Umgebung ausführt. Suchen Sie dazu in der rechten Spalte nach allem, was ein Tag wie hat 0.03s.
Auf der linken Seite sehen Sie die tatsächlichen Befehle. Führen Sie diese Befehle der Reihe nach aus.
Ergebnis
Jetzt ist ein guter Zeitpunkt, um den
history
Befehl auszuführen . Sie können den Prozess neu starten und diese Befehle erneut abspielen, um denselben Test für eine aktualisierte Codebasis auszuführen.ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
danncat ~/.ssh/id_rsa.pub
und klicken Sie hier um einen Schlüssel hinzufügengit pull
vom Docker aus Commits von Ihrer Entwicklungsbox laden, bevor Sie sie an GitHub senden.travis.yml
.quelle
instance:
kann ich keinen gültigen Docker-Image-Pfad sehen, nur so etwas wietravis-ci-garnet-trusty-1512502259-986baf0
. Versuchttravisci/ci-garnet:$INSTANCE
undtravisci/$INSTANCE
- funktioniert nicht, kann das Bild nicht finden. Auch das Postfix (dhtravisci/ci-garnet:packer-1512502259-986baf0
) hat nicht funktioniert.travisci/ci-garnet:packer-1512502276-986baf0
Bild ausprobiert , das in Travis-Dokumenten vorgeschlagen wird . Dieser ist verfügbar, aber veraltet. Zum Beispiel ist CMake viel älter als eines, das in Travis verfügbar ist. In den letzten sechs Monaten wurde keine neue Version vonci-garnet
auf Docker Hub hochgeladen , während es früher viele Updates pro Monat gab.sudo: required
gesetzt wurde? In einem aktuellen Build von mir sehe ich,travis-ci-sardonyx-xenial-1547455603-2c98a19
was ich travisci / ci-sardonyx zuordnen kann: packer-1547455648-2c98a19Travis-ci bietet eine neue container-basierte Infrastruktur, die Docker verwendet. Dies kann sehr nützlich sein, wenn Sie versuchen, einen Travis-CI-Build zu beheben, indem Sie ihn lokal reproduzieren. Dies ist der Dokumentation von Travis CI entnommen .
Lokale Fehlerbehebung in einem Docker-Image
Wenn Sie Probleme haben, das genaue Problem in einem Build zu ermitteln, ist es häufig hilfreich, den Build lokal auszuführen. Dazu müssen Sie unsere containergestützte Infrastruktur verwenden (dh haben
sudo: false
in Ihrer haben.travis.yml
) und wissen, welches Docker-Image Sie auf Travis CI verwenden.Lokales Ausführen eines container-basierten Docker-Images
Wählen Sie ein Bild aus Docker Hub aus . Wenn Sie keine sprachspezifische Bildauswahl verwenden
ci-ruby
. Öffnen Sie ein Terminal und starten Sie eine interaktive Docker-Sitzung unter Verwendung der Bild-URL:Zum
travis
Benutzer wechseln:/
Ordner des Bildes.quelle
make test
.> Manually install any dependencies
Das klingt nach einem guten Weg, um Ergebnisse zu erzielen, die nicht mit den regulären Travis-Builds übereinstimmen.Manually tun your Travis CI build command
... Wie, was? Wie? Was ist es? Ich habe eine.travis.yml
Datei. Ich habe Travis-Build ausprobiert, aber es ist eine Sackgasse.UPDATE: Ich habe jetzt eine vollständige schlüsselfertige All-in-One-Antwort, siehe https://stackoverflow.com/a/49019950/300224 . Es dauerte nur 3 Jahre, um herauszufinden!
Laut der Travis-Dokumentation: https://github.com/travis-ci/travis-ci gibt es eine Zusammenstellung von Projekten, die zusammenarbeiten, um den Travis CI-Webdienst bereitzustellen, den wir kennen und lieben. Die folgende Untergruppe von Projekten scheint lokale
make test
Funktionen mithilfe von.travis.yml
in Ihrem Projekt zu ermöglichen:Travis-Build
travis-build erstellt das Build-Skript für jeden Job. Es nimmt die Konfiguration aus der
.travis.yml
Datei und erstellt einbash
Skript, das dann von Travis-Worker in der Build-Umgebung ausgeführt wird.Travis-Kochbücher
travis-cookbooks enthält die Chef- Kochbücher, mit denen die Build-Umgebungen bereitgestellt werden.
Travis-Arbeiter
Travis-Worker ist dafür verantwortlich, die Build-Skripte in einer sauberen Umgebung auszuführen . Es überträgt die Protokollausgabe an Travis-Protokolle und überträgt Statusaktualisierungen (Build-Start / Ende) an Travis-Hub.
(Die anderen Teilprojekte sind für die Kommunikation mit GitHub, ihrer Weboberfläche, E-Mail und ihrer API verantwortlich.)
quelle
make test
Funktionen ausgeführt werden, wäre großartig. Kommentar, wenn Sie mit mir daran arbeiten möchten.travis-build
? Das Repo enthält keine Anweisungen.Ähnlich wie bei Scott McLeod, generiert dies jedoch auch ein Bash-Skript, um die Schritte aus der .travis.yml auszuführen.
Fehlerbehebung lokal in Docker mit einem generierten Bash-Skript
quelle
travis # to create ~/.travis
. Travis benötigt einen Befehl zum Ausführen.sudo - travis
sollte seinsu - 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
Verwenden Sie wwtd (was würde Travis tun) Ruby , um Tests auf Ihrem lokalen Computer ungefähr so durchzuführen, wie sie auf Travis ausgeführt würden.
Die Build-Matrix wird neu erstellt und jede Konfiguration ausgeführt. Dies ist ideal, um die Einrichtung vor dem Push zu überprüfen.
quelle
ruby
Unterstützungtl; dr Bild verwendet in bestimmten https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image in Kombination mit https://github.com/ travis-ci / travis-build # Verwendung als Addon für Travis-Cli .
EDIT 2019-12-06
#troubleshooting-locally-in-a-docker-image
Es wurde ein Abschnitt ersetzt, in#running-builds-in-debug-mode
dem auch beschrieben wird, wie SSH für den im Debug-Modus ausgeführten Job ausgeführt wird .EDIT 2019-07-26
#troubleshooting-locally-in-a-docker-image
Abschnitt ist nicht mehr Teil der Dokumente; hier ist der GrundEs ist jedoch noch in der Git-Geschichte: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 .
Suchen Sie nach (ziemlich alten, konnte keine neueren finden) Bildversionen unter: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661 .
Ich wollte untersuchen, warum einer der Tests in meinem Build mit einem Fehler fehlgeschlagen ist, den ich lokal nicht bekomme.
Hat funktioniert.
Was tatsächlich funktionierte, war die Verwendung des unter Fehlerbehebung lokal auf einer Docker Image- Dokumentenseite angegebenen Abbilds . In meinem Fall war es
travisci/ci-garnet:packer-1512502276-986baf0
.Ich konnte die
travise compile
folgenden Schritte hinzufügen , die unter https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli beschrieben sind .Alles von
.travis.yml
wurde wie erwartet ausgeführt (Abhängigkeiten installiert, Tests ausgeführt, ...).Beachten Sie, dass
bash ci.sh
ich vor dem Ausführen--branch\=\'\'\
zu--branch\=master\
(siehe vorletztensed -i ...
Befehl) in wechseln mussteci.sh
.Wenn dies nicht funktioniert, hilft der folgende Befehl, die Zielzeilennummer zu identifizieren, und Sie können die Zeile manuell bearbeiten.
Hat nicht funktioniert.
Gefolgt die akzeptierte Antwort auf diese Frage , aber hat das Bild nicht (finden
travis-ci-garnet-trusty-1512502259-986baf0
) erwähnt durchinstance
bei https://hub.docker.com/u/travisci/ .Die Build- Worker-Version verweist auf travis-ci / worker-Commit und seine travis-worker-install- Referenzen
quay.io/travisci/
als Image-Registrierung. Also habe ich es versucht.Auf keinen Fall vertrauenswürdig (Ubuntu 14.04) und auch nicht klein.
quelle
http_proxy
Umgebung für einstellengit clone
. Standardmäßig wird eine Ausnahmegit clone
ausgelöstgnutls_handshake
. Daher muss ich die Installation einer bestimmtenbundler
Version erzwingen,gem install bundler -v 1.16.6
da diesbundler binstubs travis
zuvor fehlgeschlagen ist. Verbessern Sie die erforderlichebundler
Version, indem Sie "bundle info travis" ausführentravis.yml
ein ausführbares Shell-Skript kompiliert wird . Schön gemacht! Die einzige Verbesserung wäre ein Mechanismus, mit dem das manuelle Ersetzen von Zeichenfolgen vermieden werden kann, wenn der Zweig angegeben wird, aus dem erstellt werden soll.sed
Befehl hinzugefügt, der den von Ihnen gemachten Punkt anspricht. Lesen Sie den Befehl, bevor Sie ihn ausführenbash ci.sh
.Sie können Trevor ausprobieren , das Docker verwendet, um Ihren Travis-Build auszuführen.
Aus seiner Beschreibung:
quelle
Ich bin mir nicht sicher, was Ihr ursprünglicher Grund war, Travis lokal auszuführen, wenn Sie nur damit spielen wollten, hören Sie hier auf zu lesen, da dies für Sie irrelevant ist.
Wenn Sie bereits Erfahrung mit gehostetem Travis haben und die gleiche Erfahrung in Ihrem eigenen Rechenzentrum machen möchten, lesen Sie weiter.
Seit Dezember 2014 bietet Travis CI eine lokale Enterprise-Version an.
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
Die Preisgestaltung ist ebenfalls Teil des Artikels:
quelle
whackamole
ist also eine Kopie des Projekts, an dem ich wirklich arbeiten möchte, und ich kann einen temporären Travis-Build-Job für dieses Projekt einrichten, während ich die Knicke der Build-Automatisierung herausarbeite. Sobald ich das festgenagelt habe, entfernen Sie die Dutzende von "oops" Commits und drücken Sie auf das echte GitHub-Repo. (Und wahrscheinlich entfernen Sie daswhackamole
GitHub-Repo und den entsprechenden Travis-Job.)Es ist möglich, über einen Bounce-Host eine SSH-Verbindung zur Travis CI-Umgebung herzustellen. Die Funktion ist nicht in Travis CI integriert, kann jedoch durch die folgenden Schritte erreicht werden.
travis
Benutzer und stellen Sie sicher, dass Sie SSH-fähig sind.Setzen Sie diese Zeilen in den
script:
Abschnitt Ihres.travis.yml
(z. B. am Ende).Wo
$bouncehostip
ist die IP / der Host Ihres Bounce-Hosts und$sshpassword
Ihr definiertes SSH-Passwort? Diese Variablen können als verschlüsselte Variablen hinzugefügt werden .Schieben Sie die Änderungen. Sie sollten in der Lage sein, eine SSH-Verbindung zu Ihrem Bounce-Host herzustellen.
Quelle: Shell in Travis CI Build Environment .
Hier ist das vollständige Beispiel:
Siehe:
c-mart/travis-shell
bei GitHub .Siehe auch: So reproduzieren Sie eine Travis-CI-Build-Umgebung zum Debuggen
quelle