Ausführen von Git-Befehlen in einem Build-Job in Visual Studio Team Services (war VSO)

9

[Umgebung: Team Services, GIT, gehosteter Build-Agent]

Ich möchte eine Build-Definition für Team Services erstellen, die Folgendes ausführen kann:

  1. Ausführen eines Skripts zum Generieren einiger neuer Dateien basierend auf vorhandenen Dateien im Repo

  2. Ü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?

    
Yutao Huang 30.07.2016, 04:21
quelle

5 Antworten

17

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

Versionskontrollberechtigungen      

Gehen 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!

    
Yutao Huang 02.08.2016, 22:35
quelle
2

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:

  1. Erstellen Sie ein Power-Shell-Skript mit dem Code im Script "EnableGitRemoteAccess.ps1" und fügen Sie das Skript der Quellcodeverwaltung hinzu.
  2. Aktivieren Sie die Option "Skripts auf OAuth-Token zugreifen" in der Build-Definition.
  3. Fügen Sie in der Builddefinition eine PowerShell-Aufgabe hinzu und legen Sie im Skriptpfad das Skript fest, um den Remotezugriff von git zu ermöglichen.
  4. Fügen Sie in der Build-Definition eine weitere PowerShell-Aufgabe hinzu, um die Änderungen zu bestätigen und zu übertragen.

Der Code, den ich verwende, um Änderungen zu bestätigen und zu pushen:

%Vor%     
Eddie Chen - MSFT 01.08.2016 02:53
quelle
1

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.

    
VonC 30.07.2016 06:14
quelle
0

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

verwenden
  1. Stellen Sie sicher, dass alle in den VSTS-Agentenvoraussetzungen genannten Schritte abgeschlossen sind

    • Mac OS: Ссылка
    • Windows: / de-de / docs / build / admin / agenten / v2-windows
    • Linux: / de-de / docs / build / admin / agents / v2-linux
  2. Stellen Sie sicher, dass Sie den Anweisungen in / en-us / docs / build / scripts / git-commands

    gefolgt sind
    • Fügen Sie dem Project Build Service-Konto in Ihrem Repository die erforderlichen Berechtigungen hinzu - mindestens Contribute (denken Sie daran, andere Berechtigungen entsprechend Ihren Anforderungen zu berücksichtigen) - dies ist die wahre Ursache von "SSL Lesefehler"

Was 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

an

Installieren 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%     
T. Tiscalli 18.11.2016 22:24
quelle
0

Visual Studio Team Services (VSTS) verfügt jetzt über integrierte Funktionen, um dies zu tun:

  1. Erteilen Sie dem Konto Project Collection Build Service (account_name) Zugriff auf das entsprechende Repository in VSTS.
  2. Aktivieren Sie in der Agentenphase das Kontrollkästchen Skripts den Zugriff auf das OAuth-Token erlauben .
  3. Nun können Sie innerhalb der Aufgabe auf die Variable SYSTEM_ACCESSTOKEN verweisen, um auf das git-Repository zuzugreifen: %Code%

Hinweis: Ссылка

    
PotatoFarmer 12.12.2017 22:15
quelle

Tags und Links