2016-07-11 7 views
4

ich Setup ein Jenkins Job für mein Android-Projekt in den folgenden Schritten den Aufbau:Gebäude Android App mit Jenkins

  1. SSHing auf eine ubuntu Maschine. Ich habe es mit dem sdk up, java, gradle usw.
  2. mein Quellcode Klonen
  3. die apk Gebäude „./gradlew assembleRelease“
  4. Bereitstellen es oder per E-Mail an mich (ein Schritt nach apk Gebäude verwenden, anpassbar
  5. )

jedoch schließt der SSH-Tunnel zu meiner entfernten Maschine während einiger Schritte im android Bauprozess, wie wenn die folgenden Modul baut: : app: transformClassesWithDexForDevRelease

Ich suche nach einer Möglichkeit, den SSH-Tunnel eingeschaltet zu lassen, damit der Baubefehl nicht beendet wird. Ich habe versucht, den Befehl mit nohup auszuführen, aber immer noch das Gleiche.

Jede Hilfe oder Vorschläge werden sehr geschätzt.

EDIT:

konnte ich den ssh Ausgabe Änderungen, indem sie eine kleine Login Maschine auch gehen passieren, durch Host * ServerAliveInterval 600

jedoch hinzufügen, folgt, fügte ich hinzu - -stacktrace Flagge und das würde mir die folgende Antwort:

org.gradle.launcher.daemon.client.DaemonDisappearedException: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) at 
org.gradle.launcher.daemon.client.DaemonClient.handleDaemonDisappearance(DaemonC‌​lient.java:222) 

scheint sehr seltsam, weil dieser Fehler nie erscheint, wenn ich bauen indem Sie sich direkt auf dem entfernten Rechner anmelden. Tritt nur auf, wenn Build mit jenkins ausgelöst wird. Etwas scheint den Gradle-Daemon zu zerstören, weil die jvm-Einstellungen gut zu sein scheinen. Vielleicht geschieht die SSH-Trennung immer noch, aber zu einem anderen Zeitpunkt in dem Prozess als der, den ich früher gesehen habe.

+0

Irgendwelche Fortschritte bis jetzt? – Galya

Antwort

0

Versuche Öffnung SSH-Verbindung zu Ihrem ubuntu Slave manuell, dann versuchen, die Verbindung Timeout für die SSH-Server-Konfigurationen (/etc/ssh/ssh_config) zu erhöhen, indem die am Leben Parameter Konfiguration halten, wie unten in Beispiel:

# activates the keep alive verification (default is Yes) 
# you could just set this to No but it would risk keeping ghost ssh sessions 
TCPKeepAlive Yes 
# sets the keep alive interval (in seconds) - this will send one keep alive per minute 
ClientAliveInterval 60 
# Sets the number of client alive messages which may be sent without sshd receiving any messages back 
ClientAliveCountMax 10 

Das bedeutet, dass sshd sendet einen Client pro Minute und wartet 10 Minuten auf eine Client-Antwort, bevor die SSH-Sitzung beendet wird.

Vorausgesetzt, dass Ihre ganze jenkins (Checkout + Installation Zeug + Gradle Build) dauert weniger als 10 Minuten sollte es gut funktionieren.

+0

Ich nehme an, Sie meinten, diese sollten in/etc/ssh/sshd_config gehen, gefolgt von einem Neustart des SSH-Dienstes. Tat dies. Immer noch das gleiche Problem. : App: transformClassesWithDexForDevReleaseSSH: EXEC: abgeschlossen, nachdem 146.514 ms SSH: Konfiguration Trennen [server_hostname] ... SSH: Übertragene 0 Datei (en) Abschluss: SUCCESS –

+0

@DipeshMittal könnten Sie --stacktrace Flag hinzufügen und aktualisieren Sie Ihre Frage mit seinem Inhalt? –