Ausführen eines Programms auf einem entfernten Rechner als Teil der kontinuierlichen Integration

StackOverflow https://stackoverflow.com/questions/1605478

  •  05-07-2019
  •  | 
  •  

Frage

Wir verwenden Teamcity, Nant und psexec einen Befehl auf einem entfernten Rechner als Teil der Release Verpackung laufen. Alles funktioniert gut, wenn ich den nant von der Konsole laufen, aber wenn man von Teamcity psexec hängt (gefriert) 50% der Zeit ausgeführt wird.
Ich schaute durch viele Foren und es scheint Abhilfen zu sein, die Komplexität des Anrufs erhöhen und beinhalten die Ausgabe und den Fehlercode des Befehls zu verlieren.
Kennt jemand einen einfacheren Weg, um einen Befehl auf einem entfernten Rechner laufen?
Ich habe nichts dagegen einige Anwendungen auf dem Remote-Rechner, wie ein Telnet-Server einrichten, alle Ratschläge, was zu tun?
Dank

War es hilfreich?

Lösung

ich dieses Problem mit einer Kombination aus Remcom und einer benutzerdefinierten MSBuild Aufgabe genannt ExecParse gelöst habe.

Remcom, weil es nicht seltsame Dinge tut mit STDOUT (also die Build hängen). Wir verwenden, und ExecParse die Ausgabe der Remote-Aufgabe zu erfassen, und den Exit-Code aus der Ausgabe analysieren, da die Standard-MSBuild Exec Taskausgabe nicht erfassen. Einige NAnt Äquivalent, die die Ausgabe erfasst funktionieren würde.

Ich habe dies in einem Blog-Eintrag beschrieben: "Continuous Integration: Ausführen von Remote-Tasks mit Teamcity, MSBuild, Remcom und ExecParse"

Andere Tipps

PsExec hat einige abgefahrene Dinge mit dem Standard-Ein- / Ausgang, und Aufrufen dieser von Java (die Teamcity auf gebaut wird) stellt alle Arten von Problemen und Fragen der Stabilität. psexec -d nicht verwelken arbeiten.

Ich löste es von Powershell in Team-Stadt mit.

Das Skript unten hält eine IIS 7 Application auf einem Remote-Server:

[string]$HostName = "myWebServer"
[string]$Cmd = "C:\Windows\System32\inetsrv\appcmd.exe stop apppool MyMainAppPool” 
Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ($Cmd) -ComputerName $HostName

Mehr über es auf meinem Blog: http://blog.degree.no/2012/03/executing-commands-and-programs-on-a-remote-machine-using-powershell/

Wie wäre es mit einer (Nant) Time-out auf dem psexec und wiederholen Sie den Anruf setzen, bis kein Time-out passiert?

I PSExec mit der Option -d (nicht warten, bis es beendet) den Rückkehrcode und erfassen. Der Rückgabecode, wenn Sie verwenden -d ist die Prozess-ID des Prozesses auf dem Remote-System ausgeführt werden. dann verwende ich PsList das Remote-System für die Prozess-ID abfragen, bis ich nicht mehr nicht auf dem Remote-System finden.

Was passiert, wenn Sie Setup-Teamcity Build-Agenten auf Remote-Rechner und lassen Sie es den Betrieb vor Ort durchführt, ist es die Binärdateien mit „Artifact Abhängigkeiten“ vorbei?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top