Richten Sie TeamCity in Azure ein - ein ständig verfügbares System für die Teamarbeit in der Cloud

    Dieser Artikel setzt den von unseren Freunden von Kaspersky Lab begonnenen Zyklus fort und beschreibt die tatsächlichen Erfahrungen mit der Verwendung von Testtools von Microsoft (und nicht nur) mit Empfehlungen und Schlussfolgerungen. Der Autor ist ein Testingenieur, Igor Shcheglovitov (@ ins4n3 am Hub). Unsere Testartikel sind mit #mstesting gekennzeichnet .

    In diesem Artikel möchte ich meine ersten Erfahrungen mit dem Einrichten des kontinuierlichen Integrationsprozesses mithilfe des beliebten TeamCity-Systems auf einer virtuellen Maschine in Azure teilen. Dies ist gut, da unser System immer mit bequemem Zugriff und Kontrolle über Ressourcen verfügbar sein wird.



    Die folgenden Aktionen werden beschrieben:
    • TeamCity-Server konfigurieren.
    • Erstellen eines Images eines Cloud-Agenten.
    • Lokales Git einrichten.
    • Website-Erstellung in Azure.
    • Build-Setup
    • Hinzufügen und Ausführen von Cloud-Agenten
    • Arbeitskontrolle


    Beginnen wir in der richtigen Reihenfolge.

    TeamCity Server-Konfiguration



    Wir werden TeamCity-Server auf einer neuen virtuellen Maschine bereitstellen:

    Erstellen Sie eine neue VM in Azure.



    Öffnen wir den Port 80 darauf (er wird vom TeamCity-Server verwendet).



    Fügen Sie unserer VM über die Azure-Konsole eine neue Festplatte hinzu (sie verwendet den TeamCity-Server zum Speichern von Daten). Stellen Sie



    über RDP eine Verbindung zur erstellten VM her und laden Sie die TeamCity-Distribution.



    Öffnen Sie die Datenträgerverwaltung und initialisieren Sie einen neuen Datenträger.

    Installieren Sie TeamCity und wählen Sie dabei nur Serverkomponenten aus.



    Als Nächstes geben wir als TeamCity-Datenverzeichnis eine neue Festplatte an.



    Legen Sie den TeamCity-Server-Port fest (wir verwenden den 80. Port)



    und wählen Sie den Benutzer aus, von dem aus der TeamCity-Dienst funktioniert (ich habe das System angegeben)



    . Öffnen Sie ihn nach der Installationhttp: // localhost / mnt und starten Sie den Prozess der automatischen Serverkonfiguration.
    Nachdem Sie auf die Schaltfläche Weiter geklickt haben, wählen Sie den Typ der TeamCity-Datenbank aus (in diesem Beispiel verwenden wir die interne Datenbank).



    Als Nächstes beginnt die Datenbankinitialisierung. Anschließend sollten Sie einen TeamCity-Serveradministrator erstellen.



    Öffnen Sie Port 80 in FW.

    Erstellen eines Cloud-Agent-Images



    Vor nicht allzu langer Zeit hat JetBrains ein Plug-In angekündigt , mit dem Sie automatisch TeamCity-Cloud-Agenten in Azure erstellen und ausführen können. Wenn der Agent mit diesem Plugin gestartet wird, wird eine neue virtuelle Maschine erstellt. Sie können den Cloud-Agenten jederzeit stoppen, was zur Freigabe von Ressourcen und damit zu Kosteneinsparungen führt :) Wir werden Cloud-Agenten verwenden. Cloud-Agenten werden auf der Grundlage eines vorbereiteten Abbilds einer virtuellen Maschine erstellt.

    Also:
    Erstellen Sie eine neue virtuelle Maschine in Azure. Wir werden einen Build für die ASP.NET-Site erstellen, der in Visual Studio 2013 erstellt wird, und wir werden MsTest verwenden, um die Tests auszuführen. Sie können zwar auch andere Tools verwenden. Das ist nicht wichtig. Wir müssen Visual Studio auf dem Agenten installieren (ich habe Community 2013 installiert. Wenn Sie ein kostenloses Abonnement haben, finden Sie in der Galerie der virtuellen Maschinen kein Image mit einem vorinstallierten Studio und müssen es dann manuell installieren).





    Sie sollten auch Port 9090 öffnen. Dies ist der Standardport, den der Agent abhört.



    Stellen Sie über RDP eine Verbindung zur erstellten VM her. Laden Sie Git für Windows herunter und installieren Sie es . Aktivieren Sie während der Installation das Kontrollkästchen Git in der Windows-Eingabeaufforderung verwenden.



    Geben Sie den Port des TeamCity-Servers an



    Wir legen die Agentenparameter fest:
    serverUrl - Die TeamDity- und tempDir- Serveradresse des TeamCity-Servers kann
    standardmäßig beibehalten werden. Für diese Variablen verwende ich normalerweise eine spezielle Festplatte (temporärer Speicher) auf der VM. Öffnen Sie den Port 9090 für eingehende Verbindungen entweder über FW oder mit dem folgenden Befehl: netsh advfirewall firewall add rule name = " TeamCityAgent In" dir = in action = allow protocol = TCP localport = 9090







    Ich habe festgestellt, dass nach dem Erstellen eines Cloud-Agenten (ab dem Start der VM) dieser nur in der Initialisierungsphase hängt und keine Verbindung zum TeamCity-Server herstellt. Möglicherweise ist dies ein Fehler in der technischen Implementierung des JetBrains-Plugins selbst, oder es liegt immer noch ein Problem vor. Wenn Sie jedoch über RDP eine Verbindung zum Agenten herstellen und den Agentendienst manuell neu starten, funktioniert der Agent. Ich habe beschlossen, diesen Prozess zu automatisieren. Hier ist ein Beispiel, wie Sie dies ganz einfach tun können:
    Öffnen Sie das Snap-In des lokalen Gruppenrichtlinien-Editors (gpedit.msc).
    Fügen Sie einen neuen Start-Powershell-Skript-

    Get-Service "TeamCity Build Agent" hinzu restart-service -PassThru



    Als nächstes müssen Sie die VM über das Portal stoppen und darauf basierend ein Image der virtuellen Maschine erstellen:



    Löschen Sie anschließend die VM.

    Konfigurieren Sie das lokale GIT



    Erstellen Sie ein neues Repository in GitHub.





    Und kopieren Sie den Link dazu:



    Installieren Sie GIT auf dem lokalen Computer (von dem aus die Prüfungen erstellt werden). Erstellen Sie einen neuen Ordner, der als lokale Kopie des Code-Repositorys fungiert. Danach verbinden wir den lokalen Ordner mit GitHub. Gehen Sie über die Befehlszeile zum erstellten Ordner und führen Sie den Befehl git clone {gitRepositoryUrl} aus.



    Wenn Sie in einem Unternehmensnetzwerk arbeiten, fällt der Klonbefehl möglicherweise aufgrund von Problemen mit dem Proxy ab. Ich konnte dieses Kommunikationsproblem nur konfigurieren und umgehen, indem ich einen lokalen NTLM-Proxyserver installierte, der Unternehmensproxyanforderungen umleitete. Die Proxy-Server-Distribution finden Sie hier .
    Nach erfolgreicher Konfiguration müssen Sie den Proxy für Git konfigurieren. Führen Sie dazu die folgenden Befehle aus:

    git config --global http.proxy localhost : {cntlm-proxy-port}
    git config --global https.proxy localhost : {cntlm-proxy-port}

    Nach dem Klonen des Repositorys im Projektordner (GIT) sollten Sie in Visual Studio eine neue Lösung erstellen (ASP.NET Web Form Project + UnitTestProject). Führen Sie Commit-
    und Push-Änderungen direkt im Studio durch.



    Danach erscheint Ihr neuer Check-In auf GitHub.



    Hinweis: Sie können Änderungen auch mit git-Befehlen in der
    git add- Befehlszeile festschreiben . (Dateien zum Git-Repository hinzufügen)
    git commit –am "Test commit". (Änderungen festschreiben)
    git push {git-url} (Änderungen vom lokalen Speicher auf GitHub übertragen)

    Erstellen Sie eine Website in Azure



    Erstellen einer leeren neuen Website über die Azure-Konsole



    Klicken Sie nach dem Erstellen der Website auf den Link "Bereitstellung im Versionskontrollsystem konfigurieren" und verknüpfen Sie das GitHub-Repository mit der neuen Website.
    Öffnen Sie die Site-Einstellungen. Auf der Registerkarte Einstellungen sind wir daran interessiert , in:
    URL - Adresse des GIT
    URL - Adresse der Bereitstellung zu starten



    , wenn die erste URL Deploy cifromgittestsite.git zu ersetzen und die resultierende Verbindung in dem Befehl git push übergeben, wird es Befehl deploya Website starten.

    git.exe push -f Adresse

    Deaktivieren Sie als Nächstes die automatische Bereitstellung von GitHub. Wenn dies nicht erfolgt, führt jede Überprüfung zu einer automatischen Bereitstellung der Site. Unser Ziel ist es, CI zu implementieren - um die Bereitstellung nur dann durchzuführen, wenn der Code erfolgreich zusammengestellt und Komponententests ausgeführt wurden.

    Setup erstellen



    Öffnen Sie die TeamCity-Benutzeroberfläche (http: // TeamCityServerDns) und erstellen Sie ein neues Projekt (Create Project).



    Legen Sie den Projektnamen fest. Fügen Sie eine neue Build-Konfiguration hinzu. Erstellen Sie einen



    Konfigurationsnamen. Konfigurieren Sie



    VCS (Versionskontrollsystem). Hier müssen Sie den VCS (Git) -Typ, den Namen und die Abruf-URL eingeben (Lesen Sie nur die URL Ihres Repositorys, beachten Sie nur das https- oder http-Protokoll auf git über den Repository-Zugriffslink), den Brunch angeben (ich habe nur den Master erstellt) und den Pfad auf git festlegen. exe auf dem Agenten



    Nach der Konfiguration können Sie auf TestConnection klicken und überprüfen, ob die Verbindung zum GitHub-Repository
    erfolgreich ist. Geben Sie nach erfolgreichem Einrichten von VCS in den CheckOut-Optionen den VCS-Checkout-Modus an - Automatisch auf Agent.
    Wählen Sie Build-Schritte und fügen Sie die Schritte unseres Builds hinzu (Build-Schritt hinzufügen).



    Der erste Schritt besteht darin, unser Solyushin zusammenzubauen. Hier müssen Sie alles wie im Screenshot ausfüllen: Der



    zweite Schritt ist das Starten der Tests:



    Der dritte Schritt ist die Bereitstellung (das Bereitstellungsteam wurde beim Einrichten der Site gebildet).



    Ähnliches sollte passieren:



    Erstellen Sie einen neuen Auslöser. Hier aktivieren wir das Kontrollkästchen Bei jedem Check-in einen Build auslösen.

    Hinzufügen und Starten von Cloud-Agenten



    Stellen Sie über RDP eine Verbindung zur virtuellen Maschine mit dem TeamCity-Server her. Download-Plugin zur Verwaltung von Cloud-Agenten .
    Legen Sie das Plugin im Ordner F: \ plugins ab (das F-Laufwerk ist TeamCityDataDirectory) und starten Sie den TeamCity Server-Dienst neu.



    Öffnen Sie die TeamCity-Benutzeroberfläche (Menü Administrations => Plugins Lists).
    In der Liste der Plugins sollte ein neues Azure- Integrations- Plugin



    angezeigt werden. Erstellen Sie anschließend über die Azure-Konsole einen neuen leeren Cloud-Dienst, der als Repository zum Speichern von TeamCity-Agenteninstanzen dient.



    Gehen Sie zu Administration => Globale Einstellungen und schreiben Sie das korrekte DNS des vollständigen TeamCity-Servers:



    Gehen Sie zum Erstellen eines neuen Profils des Cloud-Agenten Administration => Agent Cloud => Neues Profil erstellen



    Hier sollten Sie den Profilnamen, den Cloud-Typ - Azure, das Verwaltungszertifikat und die Abonnement-ID aus Ihrem Azure-Abonnement festlegen (diese Daten können unter https://manage.windowsazure.com/publishsettings heruntergeladen werden ).



    Klicken Sie nach dem Ausfüllen der Hauptprofileinstellungen auf Bilder hinzufügen und geben Sie den Bildnamen an Name der virtuellen Maschine des Cloud-Agenten, Name des leeren Cloud-Dienstes, maximale Anzahl von Agenten, Agentengröße und Namenspräfix für erstellte Agenten



    Hinweis. Die Anzahl der Agenteninstanzen hängt von der Anzahl der in der Firewall geöffneten Ports im Cloud-Image des virtuellen Agenten ab.
    Beispiel : Wenn für den Agenten ein Standardport angegeben ist, d. H. 9090, dann in diesem Fall , wenn FirewallWenn Sie nur Port 9090 geöffnet haben, können Sie nur einen Agenten erstellen. Wenn Sie in Ihrem Image einen Bereich von 9090-9099 haben, können Sie 10 Agenten erstellen.

    Nach dem Speichern der Einstellungen startet TeamCity automatisch einen neuen Cloud-Agenten.



    Menü "Agentenverwaltung" Agenten => Cloud-Agent, Sie können Agenten verwalten.



    Der Agent erstellt beim Start automatisch eine virtuelle Maschine:



    Arbeitskontrolle



    Alles wird erstellt und konfiguriert. Jetzt können Sie unseren Build überprüfen.
    Dazu können wir im Menü "Projekte" auf "Ausführen" klicken.



    Wenn Sie sich die Protokolle des Builds ansehen, werden Sie feststellen , dass der Code von GitHub heruntergeladen, erstellt und dann Unit-Tests gestartet werden. Wenn alles erfolgreich ist, beginnt die Bereitstellung.
    Wir haben einen Build-Trigger erstellt, d. H. Wenn wir neue Änderungen an GitHub vornehmen,



    wird unser Build automatisch und in wenigen Minuten gestartet. Der Build wird automatisch erstellt, Tests ausgeführt und die Site in Azure automatisch heruntergefahren


    Jetzt auch beliebt: