[Umgebung: Team Services, GIT, gehosteter Build-Agent]
Ich möchte eine Build-Definition für Team Services erstellen, die Folgendes ausführen kann:
Ausführen eines Skripts zum Generieren einiger neuer Dateien basierend auf vorhandenen Dateien im Repo
Übergeben Sie diese generierten Dateien zurück an Repo
Ich kann # 1 ohne Probleme machen. Aber ich bin mir nicht sicher, wie ich # 2 machen kann.
Ich habe festgestellt, dass ich git.exe tatsächlich innerhalb eines Build-Jobs ausführen konnte. Aber ich bin mir nicht sicher, wie ich die Anmeldeinformationen an Git weitergeben kann. Basierend auf den Build-Logs schlägt es fehl, weil es versucht, den Benutzernamen von stdin zu bekommen.
Ich habe versucht, einen Schritt in der Build-Definition mit etwas wie "git config --global user.name xxxx" hinzuzufügen, aber es hat immer noch nicht geholfen.
Ist dies überhaupt ein unterstütztes Szenario? Irgendwelche Vorschläge?
Danke!
Bearbeiten
Ich habe den folgenden Ansatz in meinem Build-Skript versucht:
%Vor%Es schien für Befehle wie Pull usw. zu funktionieren. Aber als ich versuchte, die Änderungen zu pushen, bekam ich den folgenden Fehler:
%Vor%Gedanken?
Entschuldigung, meine eigene Frage hier zu beantworten ...
Ich habe gerade einen Hinweis von einem TFS-Experten bekommen, der mich auf diesen Artikel hingewiesen hat: Ссылка , die mein Problem perfekt gelöst hat.
Ich denke, ich sollte es teilen, um denjenigen zu helfen, die in dieselbe Situation geraten könnten wie ich.
Hier zitiere ich die wichtigsten Schritte (ein wenig umformatiert):
Erteilen Sie dem Build-Service
VersionskontrollberechtigungenGehen Sie zur Registerkarte Systemsteuerung der Versionssteuerung
Teamdienste: https: // {Ihr-Konto} .visualstudio.com / DefaultCollection / {Ihr-Team-Projekt} / _admin / _versioncontrol
Lokal: https: // {Ihr-Server}: 8080 / tfs / DefaultCollection / {Ihr-Team-Projekt} / _admin / _versioncontrol
Wählen Sie auf der Registerkarte Versionssteuerung das Repository aus, in dem Sie Git-Befehle ausführen möchten, und wählen Sie dann Projektauflistungs-Erstellungsdienst (account_name) aus. Gewähren Sie Berechtigungen für die Git-Befehle, die Sie ausführen möchten. In der Regel möchten Sie Folgendes gewähren:
- Zweigstellenerstellung : Zulassen
- Beitrag : Erlaube
- Lesen : Vererbt zulassen
- Tag-Erstellung : Vererbt zulassen
Wenn Sie mit der Gewährung der Berechtigungen fertig sind, müssen Sie auf Änderungen speichern klicken.
Aktivieren Sie Ihre Build-Definition, um Git.exe
auszuführen
- Setzen Sie diese Variable auf der Registerkarte Variablen :
system.prefergit = true
- Wählen Sie auf der Registerkarte Optionen Skripts den Zugriff auf das OAuth-Token erlauben .
aus
Mit diesen Einstellungen müssen Sie nicht die Git Build Tools Erweiterung installieren oder den Credential Manager optimieren. Sie müssen den zusätzlichen Header für OAuth-Token auch nicht explizit festlegen. Ich denke, es ist in der Tat eine sehr saubere Lösung. :)
Aber ich danke Ihnen sehr für die Hilfe von Eddie und VonC!
Sie können die Erweiterung Git Build Tools installieren und dann "Git zulassen" hinzufügen Remote Access "Aufgabe in Ihrer Build-Definition. Stellen Sie sicher, dass die Option "Skripts auf OAuth-Token zugreifen" unter der Registerkarte "Optionen" aktiviert ist.
Aktiviere Git Remote Access
Bestimmte Operationen erfordern von Zeit zu Zeit Zugriff auf das Remote-Repository ein Build. Diese Aufgabe aktualisiert ein Remote des Git-Repositorys auf dem Agenten Erlauben des Zugriffs auf das Upstream-Repository in Visual Studio Team Dienstleistungen.
Anforderungen
Damit diese Build-Aufgabe funktioniert, ist es erforderlich, dass Skripts zulassen Die Option Zugriff auf OAuth-Token ist in den Build-Definitionsoptionen festgelegt.
Parameter
Aktiviere Git Remote Access
Name der Gegenstelle: Name der Gegenstelle, die aktualisiert werden soll. Standard ist Ursprung.
Verwandte Aufgaben
Restore Git Remote sollte am Ende der Build-Definition aufgerufen werden um den Remote auf seinen ursprünglichen Wert wiederherzustellen.
Bekannte Probleme
Git-Lfs-Operationen, wie git lfs fetch, funktionieren immer noch nicht. Sehen Dieses Git-Lfs Problem
Fügen Sie die Schritte für die Verwendung des Powershell-Skripts in der Erweiterung hinzu:
Der Code, den ich verwende, um Änderungen zu bestätigen und zu pushen:
%Vor%Jede Datei, die Sie aus der Quelle generieren können, wird im Allgemeinen als Build-Artefakt betrachtet und nicht wurde zu einem git-Repo hinzugefügt / committed / pushed.
Wenn das so ist, sollten Sie statt eines https eine ssh-URL verwenden: ssh würde einen ssh-Schlüssel benötigen, und wenn Ihr privater ssh-Schlüssel passwortfrei ist, muss git nichts abfragen stdin.
Eine andere Möglichkeit ist die Verwendung des Microsoft GCH (Git Credential Helper) , das enthalten ist in Git für Windows (seit Git 2.7.3 , März 2016).
Siehe diese Antwort für ein Beispiel. Das würde Ihren Login / Ihr Passwort im Windows Credential Store zwischenspeichern.
Dies ist nur eine Nachfolge von Tonys Blues-Antwort.
Leider kann ich keine Links posten, da meine Reputation unter 10 liegt, aber alle sind auf der visualstudio-Website platziert, also bin ich mir sicher, dass du das selbst herausfinden kannst.
Um GIT-Beiträge innerhalb eines Skripts zu ermöglichen, müssen Sie
verwendenStellen Sie sicher, dass alle in den VSTS-Agentenvoraussetzungen genannten Schritte abgeschlossen sind
Stellen Sie sicher, dass Sie den Anweisungen in / en-us / docs / build / scripts / git-commands
gefolgt sindWas in diesem Post und in Tony anders ist, ist, dass wir in unserer Konfiguration (TFS 2015; VSTS Agent auf Mac OS Sierra installiert) die Berechtigung "Contribute" für das Konto " Project Build Service "- also nicht das Konto mit dem Wort" Sammlung "im Namen erwähnt. Seien Sie auch vorsichtig und Verwechseln Sie es nicht mit der Gruppe namens Project Collection Build Service Accounts - ich glaube, dass es unter bestimmten Bedingungen verwendet werden kann, aber es funktioniert nicht standardmäßig. Ich weise darauf hin, da dies das ist, was ich versehentlich getan habe, und deshalb habe ich zusätzliche Zeit damit verbracht, zu debuggen, was falsch ist.
Bitte überprüfen Sie das folgende Bild Es kann unter Ihrem Projekt gefunden werden - & gt; Systemsteuerung - & gt; Versionskontrolle - & gt; GIT-Repository
Bitte seien Sie auch vorsichtig mit den Systemvoraussetzungen, da in meinem Fall (unter MacOS Sierra) der Teil mit symbolischen Links für zwei bestimmte Verzeichnisse kritisch geworden ist. Spezifische Systemanforderungen für OSX befinden sich unter [github] /Microsoft/vsts-agent/blob/master/docs/start/envosx.md und geben
anInstallieren Sie openssl
%Vor%Erstelle symbolische Links zu openssl libs - dies ist auf MacOS (Sierra) erforderlich
%Vor%Finden Sie Ihre Version von GIT heraus
%Vor%Aktualisieren Sie GIT, falls Sie weniger als 2.9.0 haben
%Vor%Visual Studio Team Services (VSTS) verfügt jetzt über integrierte Funktionen, um dies zu tun:
SYSTEM_ACCESSTOKEN
verweisen, um auf das git-Repository zuzugreifen:
%Code%
Hinweis: Ссылка
Tags und Links git vsts vsts-build