Wie man travis-ci lokal ausführt


524

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.


3
Sie sollten in der Lage sein, die Tests lokal auszuführen, ohne Travis CI ausführen zu müssen. Überprüfen Sie den Abschnitt "script" in der Datei .travis.yml, um festzustellen, welcher Befehl ausgeführt werden soll.
Konstantin Haase

69
Das bloße Ausführen der Tests ist jedoch nicht das Problem. Oft schlägt ein Travis-Build aufgrund von Installations- und Installationsschritten in diesem install:Abschnitt fehl , und wahrscheinlich sind es diese, um die es bei der Frage mehr geht.
Brandon Rhodes

4
Ich füge hinzu, dass in komplexen Projekten aus verschiedenen Gründen (z. B. unterschiedliche Punktversionen oder Systeminteraktionen der Laufzeit, an sich zeitempfindliche Tests, z. B. Timeout-Tests usw.) die Tests selbst in einer lokalen Umgebung und in Travis CI manchmal unterschiedlich verhalten können .
Kreissmaler

Antworten:


200

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

  • Sie haben ein öffentliches Repo auf GitHub
  • Sie haben mindestens einen Build auf Travis ausgeführt
  • Sie haben Docker auf Ihrem Computer eingerichtet

Richten Sie die Build-Umgebung ein

Referenz: https://docs.travis-ci.com/user/common-build-problems/

  1. Erstellen Sie Ihre eigene temporäre Build-ID

    BUILDID="build-$RANDOM"
    
  2. 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) :

    INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0"
    
  3. Führen Sie den Headless-Server aus

    docker run --name $BUILDID -dit $INSTANCE /sbin/init
    
  4. Führen Sie den angehängten Client aus

    docker exec -it $BUILDID bash -l
    

Führen Sie den Job aus

Jetzt befinden Sie sich in Ihrer Travis-Umgebung. Lauf um su - traviszu 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 historyBefehl auszuführen . Sie können den Prozess neu starten und diese Befehle erneut abspielen, um denselben Test für eine aktualisierte Codebasis auszuführen.

  • Wenn Ihr Repo privat ist: ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"dann cat ~/.ssh/id_rsa.pubund klicken Sie hier um einen Schlüssel hinzufügen
  • Zu Ihrer Information: Sie können git pullvom Docker aus Commits von Ihrer Entwicklungsbox laden, bevor Sie sie an GitHub senden
  • Wenn Sie die Befehle ändern möchten, die Travis ausführt, liegt es in IHRER Verantwortung, herauszufinden, wie sich dies wieder in eine Arbeit umsetzt .travis.yml.
  • Ich weiß nicht, wie ich die Docker-Umgebung bereinigen soll, es sieht kompliziert aus, vielleicht verliert dies Speicher

22
In den Protokollen unter instance:kann ich keinen gültigen Docker-Image-Pfad sehen, nur so etwas wie travis-ci-garnet-trusty-1512502259-986baf0. Versucht travisci/ci-garnet:$INSTANCEund travisci/$INSTANCE- funktioniert nicht, kann das Bild nicht finden. Auch das Postfix (dh travisci/ci-garnet:packer-1512502259-986baf0) hat nicht funktioniert.
Roy Shilkrot

4
Ich habe das gleiche Problem - das in den Instanzinformationen erwähnte Bild kann nicht heruntergeladen werden. Außerdem habe ich ein travisci/ci-garnet:packer-1512502276-986baf0Bild 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 von ci-garnetauf Docker Hub hochgeladen , während es früher viele Updates pro Monat gab.
Skalee

7
Ihr Referenzlink funktioniert nicht mehr - dh der Abschnitt "Container-basiertes Docker-Image lokal ausführen" wurde von dieser Seite entfernt. Vielleicht lag der Unterschied in der Instanzausgabe daran, dass nicht sudo: requiredgesetzt wurde? In einem aktuellen Build von mir sehe ich, travis-ci-sardonyx-xenial-1547455603-2c98a19was ich travisci / ci-sardonyx zuordnen kann: packer-1547455648-2c98a19
maxschlepzig

4
Für mich war die Verwendung der neuesten Version von Travisci / Ci-Granat auf Docker Hub (Travisci / Ci-Granat: Packer-1515445631-7dfb2e1) der Trick
Taleb

3
Wenn Sie an einer sprachspezifischen Instanz von Travis arbeiten, können Sie auch das dedizierte Image wie das Python- Image verwenden .
Zaccharie Ramzi

162

Travis-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 habensudo: false in Ihrer haben .travis.yml) und wissen, welches Docker-Image Sie auf Travis CI verwenden.

Lokales Ausführen eines container-basierten Docker-Images

  1. Laden Sie das herunter und installieren Sie es Docker Engine .
  2. 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:

    docker run -it travisci/ubuntu-ruby:18.04 /bin/bash
    
  3. Zum travisBenutzer wechseln:

    su - travis
    
  4. Klonen Sie Ihr Git-Repository in das / Ordner des Bildes.
  5. Installieren Sie alle Abhängigkeiten manuell.
  6. Führen Sie Ihren Travis CI-Build-Befehl manuell aus.

6
@DustinGraham, das hängt davon ab, wie das von Travis CI erstellte Projekt für die Erstellung konfiguriert wurde. In dem Projekt, an dem ich gearbeitet habe, wurde der Befehl build in der Datei .travis.yml unter dem Unterabschnitt script: konfiguriert und war make test.
Scott McLeod

102
> Manually install any dependencies Das klingt nach einem guten Weg, um Ergebnisse zu erzielen, die nicht mit den regulären Travis-Builds übereinstimmen.
Gerry

6
@Gerry Wenn Sie Abhängigkeiten manuell installieren, bedeutet dies vermutlich, dass Sie die Befehle in Ihrer Travis-Konfigurationsdatei, die die Installation von Abhängigkeiten behandeln, manuell ausführen. Es sind also die gleichen Befehle, die Travis CI ausführen würde, nur nicht automatisiert.
Chathan Driehuys

8
Ich habe das Gefühl, dass dies irgendwie die Antwort auf meine Frage ist, aber die Manually tun your Travis CI build command... Wie, was? Wie? Was ist es? Ich habe eine .travis.ymlDatei. Ich habe Travis-Build ausprobiert, aber es ist eine Sackgasse.
Brandon

2
@Brandon In Ihrer .travis.yml befindet sich normalerweise ein Skript-Unterabschnitt, der von travis aufgerufen wird, um Ihre Quelle zu erstellen. Der Sinn dieser Antwort besteht darin, eine lokale Umgebung einzurichten, die mit der identisch ist, in der Travis arbeiten würde. Als Nächstes rufen Sie diese Befehle selbst auf, anstatt sich auf Travis zu verlassen, um sie für Sie auszuführen. Auf diese Weise können Sie die Auswirkungen der Ausführung jedes Befehls in dieser Umgebung selbst sehen. Dies kann einen Einblick in ein Build-Problem geben, das bei Travis möglicherweise auftritt und auf das sonst nicht zugegriffen werden kann.
Scott McLeod

86

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 testFunktionen mithilfe von .travis.ymlin Ihrem Projekt zu ermöglichen:

Travis-Build

travis-build erstellt das Build-Skript für jeden Job. Es nimmt die Konfiguration aus der .travis.ymlDatei und erstellt ein bashSkript, 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.)


4
Ich glaube, ein Projekt, bei dem nur diese drei Komponenten verwendet und make testFunktionen ausgeführt werden, wäre großartig. Kommentar, wenn Sie mit mir daran arbeiten möchten.
William Entriken

4
Es gibt einen Thread darüber auf dem Travis Repo .
Hurrymaplelad

5
GitHub ist nach unten heute wegen DDOS github.com/blog/1981-large-scale-ddos-attack-on-github-com diesem Grund haben wir vor Ort getestet werden müssen
William Entriken

20
Wie installiere und starte ich eigentlich travis-build? Das Repo enthält keine Anweisungen.
DisgruntledGoat

1
@indhus Nein, sorry. Die einzige Lösung, die ich gefunden habe, besteht darin, das Repo zu teilen, meine Änderungen so lange vorzunehmen, bis Travis funktioniert, dann die Konfigurationsdatei in das Haupt-Repo zu kopieren und ein Commit durchzuführen. Bearbeiten: Wenn Sie sich das überlegen, können Sie dafür einen temporären Zweig verwenden, den Remote-Zweig löschen, sobald er fertig ist, und die Commits für Basis / Squash in einen umwandeln.
DisgruntledGoat

23

Ä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

# 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

Ich konnte den Schritten nach unten folgen travis # to create ~/.travis. Travis benötigt einen Befehl zum Ausführen.
Eivind Gussiås Løkseth

3
sudo - travissollte sein su - travis.
Berend de Boer

1
Wenn ich den Kompilierungsschritt mache, bekomme ich:/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)
Berend de Boer

2
@BerenddeBoer: Wenn Sie dieses Problem noch nicht herausgefunden haben: Hier ist die Lösung, um das Problem zu 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
beseitigen

2
Travis kompilieren noch nicht mehr gültig? Ich sehe unbekannten Befehl kompilieren: / travis -h zeigt es nicht: ////
Dawid Drozd

16

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.

gem i wwtd
wwtd

wichtiger Hinweis: nur rubyUnterstützung
Msangel

Es sollte möglich sein, auch Unterstützung für andere Sprachen hinzuzufügen, da es sich um die Ausführung von Schritten handelt
gröber

Das ist krank. Funktioniert super! Vielen Dank!
ppetraki

14

tl; 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-imageEs wurde ein Abschnitt ersetzt, in #running-builds-in-debug-modedem 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-imageAbschnitt ist nicht mehr Teil der Dokumente; hier ist der Grund


Es 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 compilefolgenden Schritte hinzufügen , die unter https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli beschrieben sind .

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

Alles von .travis.ymlwurde wie erwartet ausgeführt (Abhängigkeiten installiert, Tests ausgeführt, ...).

Beachten Sie, dass bash ci.shich vor dem Ausführen --branch\=\'\'\zu --branch\=master\(siehe vorletzten sed -i ...Befehl) in wechseln musste ci.sh.

Wenn dies nicht funktioniert, hilft der folgende Befehl, die Zielzeilennummer zu identifizieren, und Sie können die Zeile manuell bearbeiten.

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$

Hat nicht funktioniert.

Gefolgt die akzeptierte Antwort auf diese Frage , aber hat das Bild nicht (finden travis-ci-garnet-trusty-1512502259-986baf0) erwähnt durch instancebei 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.

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

Auf keinen Fall vertrauenswürdig (Ubuntu 14.04) und auch nicht klein.


1
Der funktionierte Ansatz hat es für mich getan. Aber zusätzlich musste ich die http_proxyUmgebung für einstellen git clone. Standardmäßig wird eine Ausnahme git cloneausgelöst gnutls_handshake. Daher muss ich die Installation einer bestimmten bundlerVersion erzwingen, gem install bundler -v 1.16.6da dies bundler binstubs traviszuvor fehlgeschlagen ist. Verbessern Sie die erforderliche bundlerVersion, indem Sie "bundle info travis" ausführen
palik

1
Dies ist die beste Antwort hier, da hier erklärt wird, wie travis.ymlein 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.
Ben Johnson

1
@ BenJohnson Ich habe einen sedBefehl hinzugefügt, der den von Ihnen gemachten Punkt anspricht. Lesen Sie den Befehl, bevor Sie ihn ausführen bash ci.sh.
Dušan Maďar

Der Link * Fehlerbehebung lokal in einem Docker-Image * funktioniert nicht mehr
juliangonzalez

1
@ Juliangonzalez bearbeitet mit den besten Informationen, die ich graben konnte.
Dušan Maďar

7

Sie können Trevor ausprobieren , das Docker verwendet, um Ihren Travis-Build auszuführen.

Aus seiner Beschreibung:

Ich muss oft Tests für mehrere Versionen von Node.js ausführen. Ich möchte jedoch nicht manuell mit n / nvm zwischen Versionen wechseln oder den Code an Travis CI senden, um die Tests auszuführen.

Deshalb habe ich Trevor geschaffen. Es liest .travis.yml und führt Tests in allen von Ihnen angeforderten Versionen aus, genau wie Travis CI. Jetzt können Sie vor dem Push testen und Ihren Git-Verlauf sauber halten.


2
Zu Ihrer Information für diejenigen, die dies versuchen möchten ... unterstützt PHP nicht
Craig Wayne

2
scheint ausschließlich für node.js zu sein. wäre schön, es zu verlängern
João Neto

6

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:

Die Lizenzierung erfolgt pro Sitzplatz, wobei jede Lizenz 20 Benutzer umfasst. Die Preise beginnen bei 6.000 USD pro Lizenz, einschließlich 20 Benutzern und 5 gleichzeitigen Builds. Es gibt eine Premium-Option mit unbegrenzten Builds für 8.500 US-Dollar.


3
Das hat mich eigentlich auch interessiert. Ich versuche, einen Travis-Job für ein wirklich umständliches Projekt zu konfigurieren. Alle diese Commits am 26. April spielten mit der Datei .travis.yml ( github.com/gregturn/issue-aggregator/commits/master ). Ich wünschte, es gäbe eine einfachere Möglichkeit, an der Konfiguration zu basteln, ohne jede einzelne Bearbeitung vornehmen zu müssen.
Gregturn

4
@gregturn Eine hässliche, aber stressreduzierende Problemumgehung bestand darin, mein Repo auf ein zweites GitHub-Repo zu klonen. Das Repo whackamoleist 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 das whackamoleGitHub-Repo und den entsprechenden Travis-Job.)
Tripleee

3
Ich frage mich, ob die Lizenzgebühr von 6000 USD einmalig oder jährlich ist.
Erik

0

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.

  1. Erstellen Sie auf dem Bounce-Host einen travisBenutzer und stellen Sie sicher, dass Sie SSH-fähig sind.
  2. Setzen Sie diese Zeilen in den script:Abschnitt Ihres .travis.yml(z. B. am Ende).

    - 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
    

    Wo $bouncehostipist die IP / der Host Ihres Bounce-Hosts und $sshpasswordIhr definiertes SSH-Passwort? Diese Variablen können als verschlüsselte Variablen hinzugefügt werden .

  3. 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:

# 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

Siehe: c-mart/travis-shellbei GitHub .


Siehe auch: So reproduzieren Sie eine Travis-CI-Build-Umgebung zum Debuggen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.