Frage

Ich habe ein Projekt, das mit CruiseControl.net gebaut wird. Das Projekt enthält eine "MSBuild -Aufgabe", die den Build für das Projekt und auch die Unit -Tests ausführt. Der Unit -Test ist wiederum nur eine MSBuild 'Exec' -Aufgabe, die eine ausführbare Datei ausführt.

Der Unit -Test umfasst eine .NET -Remoting. Und wenn die Unit -Tests durch die Systemeingabeaufforderung durchgeführt werden, öffnet sich das Fenster der Software, Tests ausgeführt und der Prozess verlässt.

Wenn ich einen Build durch das Web -Dashboard erzwinge, hängt der Build an dem Punkt, an dem der Unit -Test ausgeführt wird. Das Fenster der Software öffnet sich nicht, aber die ausführbare Datei wird ausgeführt. Wenn der Prozess durch den Task -Explorer getötet wird, durchläuft der Build einen "Fehler" -Status. Dies geschieht, wenn ich CCNET als Windows -Dienst ausführe.

Wenn ich CCNET direkt ausführe (nicht als Windows -Dienst) und einen Build über das Web -Dashboard erzwinge, gehen die Build- und Unit -Tests wie erwartet gut durch. (Mit dem Fenster der Software öffnet sich.)

Es sieht so aus, als ob es eine Deadlock gibt, in der CCNET als Windows -Dienst ausgeführt wird. Ich vermute, es hängt mit den Standardausgabe-/Fehlerströmen zusammen.

  1. Ist das bekanntes Problem?

  2. Was könnte das Problem sein?

  3. Irgendwelche Vorschläge zum Debuggen?

  4. Wie kann ich es umgehen?

(Ich verwende CCNET -Version 1.4.4 SP1)

War es hilfreich?

Lösung

Wenn CCNET als Dienst ausgeführt wird, wird es keinen Zugriff auf das Display haben. Erwarten Sie also nicht, dass in dieser Konfiguration etwas auf dem Bildschirm angezeigt wird. Das erste, was ich überprüfen würde, sind die Berechtigungen - stellen Sie sicher, dass der Dienst als Konto ausgeführt wird, das Berechtigungen enthält, um auf die von Ihnen benötigten Ressourcen zuzugreifen. Sie haben auch CCNET -Protokolldateien, die Sie über Dashboard finden können.

Versuchen Sie nebenbei die TeamCity anstelle von CCNET, seine 10 Jahre vor.

Andere Tipps

Vielleicht hilft diese Antwort:Der Delphi Windows -Service kann die Datei nicht vom Internet herunterladen

Sie sollten wissen, dass CCNET als Anwendung (DOSBox) die Umgebungsvariablen und alle Rechte verwendet Aus dem protokollierten Konto. Daher kann es eine Verbindung zu einem Server herstellen, zwischengespeicherte Passwörter verwenden, Registrierungsvariablen für dieses Konto erhalten.

Wenn Sie jedoch als Service ausgeführt werden, ist das Konto, das Sie zur Verfügung gestellt haben: Lokalsystem für Exampe, wo Env. Varibales sind nicht gleich.

Sie können also das CCNET -Dienstkonto für den Test ändern. Ändern Sie es in Ihr Benutzerkonto (mit Passwort), und ich bin sicher, dass es besser funktioniert!

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