2016-08-06 101 views
2

Ich habe TFS 2015 Update 3 installiert und einen Agentenpool namens "HYB Pool" erstellt. Dieser Agentenpool enthält 2 Agenten. Einer ist ein Linux-Agent und der andere ist ein Windows-Agent. Der Grund, warum es auf diese Weise erstellt wurde, war, dass der Schritt "building the code" die Schritte windows agent und post build verwendet (mithilfe von docker, um Bilder zu erstellen und zu pushen) Linux Agent verwendet.Kombination von Windows und Linux in einem einzigen Build: Es konnte kein Agent mit den folgenden Funktionen gefunden werden: sh, DotNetFramework

Wenn ich nur Build-Schritt in HYB Pool ausführen, funktioniert es gut. Und wieder, wenn ich nur den Post-Build-Schritt (der Linux Agent benötigt) mit HYB Pool ausführen, funktioniert es gut. Aber wenn ich kombinieren alle Schritte zusammen und führen Sie es in HYB Pool dann wirft es Fehler folgende:

No agent found in pool 6 which satisfies the specified demands:

  • sh
  • DotNetFramework
  • Agent.Version > Version 1.94.0

Wie kann ich dieses Problem beheben? Sieht so aus, als hätten Agenten Fähigkeiten, aber wenn der gesamte Prozess kombiniert wird (Build- und Docker-Schritt), gibt es einen Fehler aus.

Agent-Version für

  • Linux-Agent ist 2.104.1
  • Fenster Mittel 1.95.3
+0

Agenten haben Fähigkeiten von sh und DotNetFramework. Ich kann folgende Fähigkeiten sehen: sh =/bin/sh und DotNetFramework = C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 – Raji

Antwort

2

Der gesamte Bauprozess von einem einzigen Agenten ausgeführt werden müssen. Und der einzelne Agent muss über alle Fähigkeiten verfügen, die der Build erfordert.

Um dies zu lösen, die Sie haben werden:

  • Remote ssh aus Ihrem Windows-Agent auf einem Linux-Rechner die anderen Schritte auszuführen. Sie können einen benutzerdefinierten Batch- oder Powershell-Schritt verwenden, um die Remote-Skriptkomponenten zu implementieren.
  • oder die .NET Schritte auf dem Linux-Host durchführen (was, wenn Sie Mono oder .NET-Core den Build-Prozess
  • auszuführen sind in der Lage zu verwenden, könnte funktionieren oder die Kompilierung & Build Schritte im Build durchführen und dann holen Wenn Sie die Artefakte im Release-Management-Teil von TFS installieren, wird jede Stufe von einem Agenten ausgeführt, sodass Ihre erste Stufe die Build-Ergebnisse aus der Liste der Artefakte des Builds übernehmen und die Schritte zum Erstellen der Docker-Images und des Stores ausführen kann Sie können sie irgendwo in Ihrem Docker-Repository registrieren oder registrieren
  • Möglicherweise Upgrade Ihres Build-Agent auf Windows 10 Anniversary Edition und aktivieren Sie die Linux-Shell.Das wird das Nachfrageproblem lösen, wird aber wahrscheinlich nicht helfen Sie wirklich Ihre Docker Bilder unter Linux zu bauen.
+0

Vielen Dank Jessehouwing. 3. Option klingt besser. Ich habe Fragen zu seiner Ausführung. In TFS 2015 Update 2 oder 3 gibt es "Build", "Test" und "Release" -Optionen. Im Build-Teil kann ich den Code in Windows-Maschine erstellen und Artefakte erstellen. Danach, wie würde ich die Dockerschritte machen? Was meinst du genau mit Relae Management von TFS? Ist es "Freigabe" -Option? Aber ich sehe, dass jede Release-Definition mit Build verknüpft ist und dass dieser Agent nur den Build benötigt. – Raji

+0

Ich meine tatsächlich die Freigabelasche. Ihr Windows-Agent wird den Code erstellen und die Codeartefakte veröffentlichen. Ihre Freigabestufe übernimmt die Artefakte aus dem Build und kann so konfiguriert werden, dass sie einen anderen Agenten für die Freigabestufe verwendet. Es verwendet den gleichen Pool & Demand-Mechanismus, um den Agenten auszuwählen. – jessehouwing

+0

Danke Jessehouwing. Die dritte Option funktioniert gut – Raji