In den letzten Monaten hat Microsoft sehr deutlich gemacht, dass es nicht mehr nur ein Windows-Unternehmen ist. Dinge wie die Xamarin-Integration, das neue plattformübergreifende ASP.Net 5 und die plattformübergreifende .Net CLR sind alles Ergebnisse dieser neuen Strategie. Dies eröffnet Entwicklern, die bisher an eine einzige Plattform gebunden waren, eine Fülle neuer Möglichkeiten. Es kommen aufregende Zeiten auf uns zu!
Der neue Build-Agent für das Build vNext-System ist ein weiteres Beispiel für diese plattformübergreifende Strategie. Der neue Build-Agent basiert auf Node.js, d.h. er sollte auf jeder Plattform laufen, die Node.js unterstützt. Dazu gehört auch Linux. Also habe ich beschlossen, das auszuprobieren. Und wissen Sie was? Es funktioniert! Einen Microsoft-Build-Agent auf Linux laufen zu lassen, finde ich ziemlich cool!
Und der neue Build-Agent ist vollständig Open-Source! Sie können sich den Code auf der GitHub-Seite des VSO-Agenten ansehen.
Erstellen Sie einen Build-Agent-Pool
Obwohl es technisch nicht erforderlich ist, halte ich es für sinnvoll, einen separaten Build-Agent-Pool für Linux-Build-Server anzulegen. Melden Sie sich bei Ihrem VSO-Konto an und klicken Sie auf das Zahnradsymbol oben rechts, um zur Einstellungsseite zu gelangen. Gehen Sie dann auf die Registerkarte "Agentenpools" und klicken Sie auf "Neuer Pool".
Geben Sie einen Namen für Ihren neuen Pool ein und stellen Sie sicher, dass Sie das Kontrollkästchen "Automatische Bereitstellung" aktiviert lassen. Damit stellen Sie sicher, dass Ihr neuer Pool für Ihre Team Project Collection verfügbar ist.
Ihr neuer Pool wird erstellt. Natürlich befinden sich darin noch keine Agenten.
Berechtigungen festlegen
Bevor wir unseren neuen Agenten hinzufügen und ausführen können, müssen wir noch einige Berechtigungen festlegen. Idealerweise erstellen Sie ein neues (Dienst-)Konto für Ihre Agenten. Leider habe ich keins zur Verfügung, also werde ich mein persönliches Konto verwenden. Zunächst müssen wir alternative Anmeldedaten für das Konto aktivieren. Melden Sie sich mit Ihrem Konto bei VSO an und öffnen Sie Ihre Profileinstellungen.
Gehen Sie dann auf die Registerkarte "Zugangsdaten" und aktivieren Sie dort Ihre alternativen Zugangsdaten.
Gehen Sie nun zurück zur Verwaltungsseite "Agentenpools" und klicken Sie auf das kleine Dreieck vor Ihrem neu erstellten Pool.
Es gibt dort zwei Sicherheitsgruppen. Wir müssen unser Konto zu beiden hinzufügen.
- Agent-Pool-Administratoren: ermöglicht das Hinzufügen von Agenten zum Pool
- Agent Pool Service Accounts: ermöglicht es dem Agenten, die Build-Warteschlange abzuhören
Einen Server erstellen
Als nächstes brauchen wir einen Server! Der einfachste Weg, einen zu bekommen, ist, einen in Azure zu erstellen. Ich habe mich für die neueste Ubuntu-Version entschieden, die derzeit verfügbar ist.
Im Moment habe ich mich für die Passwort-Authentifizierung entschieden. Wenn Sie möchten, können Sie eine Schlüsseldatei erstellen und diese verwenden. Es wird ein paar Minuten dauern, bis der Server bereit ist. Für die Anmeldung benötigen wir einen SSH-Client. Ein guter Client für Windows ist PuTTY. Laden Sie ihn herunter, falls Sie das noch nicht getan haben. Starten Sie PuTTY, und geben Sie den Hostnamen Ihres Servers ein. Klicken Sie dann auf "Öffnen", um eine Verbindung herzustellen.
Sie erhalten eine Meldung, in der Sie gefragt werden, ob Sie dem Computer, mit dem Sie sich verbinden, vertrauen. Klicken Sie auf "Ja" und es wird eine Anmeldeaufforderung angezeigt. Melden Sie sich mit den Anmeldedaten an, die Sie bei der Erstellung der virtuellen Maschine angegeben haben.
Voilà, Sie sind bei Ihrem brandneuen Linux-Server angemeldet!
Voraussetzungen für die Installation
Wir müssen einige Voraussetzungen auf unserem neuen Server installieren. Wir müssen Node.js und npm installieren. Geben Sie "sudo apt-get install nodejs npm" ein, um alles in Gang zu bringen.
Sobald Sie Enter drücken, kümmert sich apt-get um die Auflösung der Abhängigkeiten. Wie Sie feststellen werden, gibt es eine ganze Menge... Geben Sie "Y" ein, um die Installation zu starten.
Jetzt haben Sie Geduld, während alles installiert wird...
Aufgrund eines Namenskonflikts mit einem anderen Programm namens "Node" wird Node.js bei der Standardinstallation in Ubuntu als "nodejs" installiert. Das Skript des Build-Agenten erwartet jedoch eine ausführbare Datei "node"... Um dieses Problem zu lösen, wurde das Paket "nodejs-legacy" erstellt. Installieren Sie es, indem Sie "sudo apt-get install nodejs-legacy" eingeben.
Überprüfen Sie nun die installierten Versionen von Node.js und npm, indem Sie "node -v && npm -v" eingeben.
Damit der Build-Agent funktioniert, benötigen Sie Node.js >= v0.10 und npm >= 1.4. In meinem Fall ist alles in Ordnung!
Installieren Sie den Agenten
Als Nächstes müssen Sie den Agenten installieren. Wie bei TFS ist der gesamte Prozess in zwei Teile aufgeteilt: Zuerst installieren wir die Software-Bits, und dann führen wir die Konfiguration aus. Um die Software-Bits zu installieren, können wir npm verwenden. Geben Sie "sudo npm install vsoagent-installer -g" ein und drücken Sie die Eingabetaste. Dadurch wird die neueste Version des Installationsprogramms aus dem Repository geholt.
Agent konfigurieren
Wir haben es fast geschafft... Jetzt müssen wir nur noch unseren Agenten konfigurieren. Mit dem Agent-Installationsprogramm können wir ganz einfach mehrere Agenten auf einem einzigen Server erstellen. Jeder Agent wird in seinem eigenen Ordner ausgeführt. Zunächst müssen wir also einen Ordner erstellen. Geben Sie "mkdir linuxagent1" ein, um einen solchen zu erstellen, und wechseln Sie dann mit "cd linuxagent1" in diesen Ordner.
Installieren Sie nun den Agenten in diesen Ordner, indem Sie "vsoagent-installer" eingeben.
Dadurch wird der Agent in dem Verzeichnis installiert, das Sie gerade erstellt haben. Jetzt können wir ihn starten und eine Verbindung zu VSO herstellen! Geben Sie "node agent/vsoagent" ein, um die Konfiguration zu starten. Geben Sie Ihre Anmeldedaten (dies sind Ihre alternativen Anmeldedaten!), Ihre VSO-URL, einen Agentennamen (optional) und Ihren Poolnamen ("Linux" in meinem Fall) ein und der Agent sollte starten!
Hinweis: Der Agent läuft jetzt im interaktiven Modus. Das bedeutet, dass der Agent beendet wird, wenn Sie Ihre Sitzung schließen. Das ist zwar für Tests und Demonstrationen gut, aber für die Produktion ist es nicht so gut geeignet. Derzeit unterstützt der Agent nicht die Ausführung als Dienst unter Linux. Das Entwicklungsteam arbeitet daran. In der Zwischenzeit können Sie diesen Trick anwenden, um den Agenten im Hintergrund laufen zu lassen: Nachdem Sie den Agenten gestartet haben, drücken Sie "Strg+z". Dadurch wird der Prozess angehalten und eine Jobnummer angezeigt (in meinem Fall 1). Geben Sie dann "disown -h %1" ein (wobei 1 die Jobnummer ist). Dies stellt sicher, dass der Auftrag nicht beendet wird, wenn Sie sich abmelden. Geben Sie schließlich "bg 1" ein (auch hier ist 1 die Auftragsnummer). Dadurch wird der Prozess erneut gestartet, dieses Mal im Hintergrund.
Sie können sich jetzt sicher abmelden und der Agent wird weiter ausgeführt. Natürlich müssen Sie diese Schritte wiederholen, wenn Sie den Server neu starten.
Überprüfen Sie
Sie können Ihren neuen Agenten überprüfen, indem Sie die Verwaltungsseite "Agentenpools" auf VSO aufrufen und dort Ihre Warteschlange überprüfen. Ihr neuer Agent sollte dort auftauchen. Und er wird sich als Linux-Server zu erkennen geben!
![]()
Nächste Schritte
In diesem Beitrag habe ich Ihnen gezeigt, wie Sie einen Build vNext-Agenten unter Linux ausführen und ihn mit VSO verbinden können. Wir haben zwar noch nichts Nützliches damit gemacht, aber es zeigt die echte Multiplattform-Richtung, die Microsoft einschlägt. Theoretisch sollten wir damit zum Beispiel eine Java-Anwendung auf Linux erstellen können. Während ich darüber nachdenke, juckt es mir schon in den Fingern, das auszuprobieren... Mehr dazu in einem späteren Beitrag!
Viel Spaß beim Bauen!
Verfasst von

Kees Verhaar
Welcome to my blog! I am an ALM consultant for Xpirit Netherlands B.V. Sounds fancy, doesn’t it? Basically it means I help people to do their work as a software engineer better, faster and easier. In the past couple of years of working in the field, I have encountered many things of which I thought: “I should share this!â€. This blog is my way of doing that. You’ll find real life stories, tips & tricks, examples and probably even some code here. Hope you enjoy! If you have any suggestions, please feel free to drop me a line.
Contact