Wykonywanie poleceń git wewnątrz zadania budowania w Visual Studio Team Services (was VSO)

[Environment: Team Services, GIT, hosted build agent]

Chciałbym stworzyć definicję Team Services build, która jest w stanie wykonać następujące czynności:

  1. Wykonanie skryptu do generowania nowych plików na podstawie istniejących plików w repo

  2. Commit / push te wygenerowane pliki z powrotem do repo

Mogę zrobić numer 1 bez problemu. Ale nie jestem pewien, jak Mogę zrobić #2.

Odkryłem, że jestem w stanie uruchomić Gita.exe z w pracy budowlanej. Ale nie jestem pewien, jak mogę przekazać poświadczenie gitowi. Bazując na logach budowania, nie powiodło się, ponieważ próbuje uzyskać nazwę Użytkownika ze standardowego wejścia.

Próbowałem dodać krok w definicji budowania z czymś w rodzaju "Git config --global user.name xxxx", ale i tak nie pomogło.

Czy jest to w ogóle wspierany scenariusz? Jakieś sugestie?

Dzięki!

Edit

Wypróbowałem następujące podejście w mojej konstrukcji skrypt:

git -c http.extraheader="AUTHORIZATION: bearer %SYSTEM_ACCESSTOKEN%" pull ...

Wydawało się, że działa dla poleceń takich jak pull, itp. Ale kiedy próbowałem wypchnąć zmiany, dostałem poniższy błąd:

fatal: unable to access 'https://example.visualstudio.com/SampleTeam/_git/SampleRepo/': SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
Myśli?
Author: jessehouwing, 2016-07-30

6 answers

Przepraszam, że odpowiadam na moje pytanie...

Właśnie dostałem podpowiedź od jakiegoś eksperta TFS, który wskazał mi ten artykuł: https://www.visualstudio.com/en-us/docs/build/scripts/git-commands , który doskonale rozwiązał mój problem.

Myślę, że powinienem się tym podzielić, aby pomóc każdemu, kto może znaleźć się w tej samej sytuacji,co ja.

Tutaj cytuję kluczowe kroki (nieco sformatowane):

Nadaj uprawnienia kontroli wersji usłudze budowania

Idź do Zakładka Panel sterowania wersji

  • Usługi zespołu: https://{your-account}.visualstudio.com/DefaultCollection/{your-team-project}/_admin/_versioncontrol

  • W związku z tym, że nie jest to możliwe, nie jest to konieczne, ponieważ nie jest to konieczne.]}

Na karcie Version Control wybierz repozytorium, w którym chcesz uruchomić polecenia Git, a następnie wybierz Project Collection Build Service (account_name) . Przyznaj uprawnienia wymagane dla poleceń Gita, które chcesz uruchomić. Typowo będziesz chciał przyznać:

  • Tworzenie gałęzi: Zezwalaj
  • Contribute: Allow
  • Czytaj :]}
  • tworzenie tagów: dziedziczenie allow

Kiedy skończysz nadawać uprawnienia, kliknij Zapisz zmiany.

Włącz definicję budowania, aby uruchomić Git.exe

  • On zakładka zmienne ustaw tę zmienną: system.prefergit = true
  • w zakładce opcje wybierz Zezwól skryptom na dostęp do tokena OAuth .

Z tymi ustawieniami, nie ma potrzeby instalowania rozszerzenia Git Build Tools ani dostosowywania Menedżera poświadczeń. Nie musisz też jawnie ustawiać dodatkowego nagłówka dla tokena OAuth. Uważam, że to naprawdę bardzo zgrabne rozwiązanie. :)

Ale naprawdę doceniam pomoc Eddiego i Vonca!
 40
Author: Yutao Huang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Visual Studio Team Services (VSTS) ma teraz wbudowaną funkcjonalność, aby to zrobić:

  1. Udostępnij konto Project Collection Build Service (account_name) dostęp do odpowiedniego repozytorium w VSTS.
  2. w fazie agenta zaznacz pole Zezwalaj skryptom na dostęp do tokena OAuth .
  3. Teraz w zadaniu możesz odwołać się do zmiennej SYSTEM_ACCESSTOKEN, aby uzyskać dostęp do repozytorium git: git clone https://randomusername:${SYSTEM_ACCESSTOKEN}@instance.visualstudio.com/proj1/_git/repo

Ref: https://github.com/Microsoft/vsts-tasks/issues/962

 5
Author: PotatoFarmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-12 22:15:25

Możesz zainstalować rozszerzenie Git Build Tools , a następnie dodać zadanie" Allow Git remote access " w definicji budowania. Upewnij się, że funkcja "Zezwalaj skryptom na dostęp do tokena OAuth" w zakładce "Opcje" jest włączona.

Enable Git Remote Access

Niektóre operacje wymagają dostępu do zdalnego repozytorium z Budowa. To zadanie aktualizuje zdalne repozytorium Git w agencie aby umożliwić dostęp do wyższego repozytorium w zespole Visual Studio Usługi.

Wymagania

Aby to zadanie build działało, wymagane jest, aby Skrypty zezwalały na Opcja access OAuth Token jest ustawiona w opcjach definicji budowania.

Parametry

Enable Git Remote Access

Remote name: Nazwa pilota, który powinien zostać zaktualizowany. Domyślnie jest pochodzenie.

Powiązane Zadania

Restore Git Remote powinien być wywołany na końcu definicji build aby przywrócić pilota do jego oryginalna wartość.

Znane problemy

Operacje Git-Lfs, takie jak git lfs fetch nadal nie będą z tym działać. Zobacz też ten problem z Git-Lfs

Dodaj kroki korzystania ze skryptu powershell w rozszerzeniu:

  1. Utwórz skrypt power-shell z kodem w skrypcie "EnableGitRemoteAccess. ps1" i dodaj skrypt do kontroli źródła.
  2. Włącz opcję "Zezwól skryptom na dostęp do tokena OAuth" w definicji budowania.
  3. Dodaj PowerShell zadanie w definicji budowania i ustaw ścieżkę skryptu skrypt, aby umożliwić zdalny dostęp do git. Tutaj wpisz opis obrazka
  4. Dodaj kolejne zadanie PowerShell w definicji budowania, aby zatwierdzić i wypchnąć zmiany.

Kod, którego używam do zatwierdzania i wypychania zmian:

git add .
git commit -m "changesinbuild"
git push origin master 2>&1 | Write-Host
 3
Author: Eddie Chen - MSFT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-02 03:11:35

Każdy plik, który możesz wygenerować ze źródła jest ogólnie uważany za artefakt budowania, a nie dodawany/committed/pushed do repo Gita.

To powiedziawszy, jeśli możesz, powinieneś użyć adresu SSH zamiast https: ssh wymagałby klucza ssh, a jeśli twój prywatny klucz ssh jest pozbawiony hasła, git nie będzie musiał niczego sprawdzać na stdin.

Innym sposobem jest użycie Microsoft GCH (Git Credential Helper) , który jest zawarty w Git dla Windows (od Git 2.7.3 , Marzec 2016).
Zobacz ta odpowiedź dla przykładu. To buforuje Twój login/hasło w sklepie poświadczeń systemu Windows.

 1
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:31

To tylko kontynuacja bluesowej odpowiedzi Tony ' ego.

niestety nie mogę publikować linków, ponieważ moja reputacja jest poniżej 10, ale wszystkie są umieszczone na stronie visualstudio, więc jestem pewien, że możesz to rozgryźć samodzielnie.

Aby umożliwić wkład GIT w skrypcie musisz

  1. Upewnij się, że wszystkie rzeczy wymienione w warunkach wstępnych agenta VSTS zostały zrobione

  2. Upewnij się, że wykonałeś instrukcje w /en-us/Docs/build / scripts / Git-commands

    • szczególnie dodaj wymagane uprawnienia do konta usługi Project Build w swoim repozytorium - co najmniej Contribute (prosimy wziąć pod uwagę inne to jest prawdziwa przyczyna "SSL read error"(Błąd odczytu) - ]}

Czym różni się ten post od tego Tony ' ego jest to, że w naszej konfiguracji (TFS 2015; Agent VSTS zainstalowany na Mac OS Sierra) musieliśmy dodać uprawnienia "Contribute" dla konta "Project Build Service" - więc nie Konto ze słowem "collection" wymienione w nazwie. Bądź ostrożny i nie mieszaj go z grupą o nazwie Project Collection Build Konta usług - uważam, że może być używany pod pewnymi warunkami, ale domyślnie nie działa. Zwracam na to uwagę, ponieważ to jest to, co zrobiłem przypadkowo, a więc spędziłem dodatkowy czas debugowania, co jest nie tak.

Proszę sprawdzić poniższy obrazek znajduje się on w Twoim projekcie -- > Panel sterowania -- > Kontrola wersji -- > repozytorium GIT

Należy również uważać na wymagania systemowe, ponieważ w moim przypadku (na MacOS Sierra) część z dowiązaniami symbolicznymi dla dwóch konkretnych katalogów okazało się krytyczne. Szczegółowe wymagania systemowe dla OSX są umieszczone w [github]/Microsoft / VSTS-agent / blob/master/Docs/start / envosx.MD i stany

Install openssl

$ brew update
$ brew install openssl

Tworzenie dowiązań symbolicznych do bibliotek OpenSSL -- jest to wymagane w systemie MacOS (Sierra)

$ mkdir -p /usr/local/lib/
$ ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
$ ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/

Poznaj swoją wersję GIT

$ git --version

Zaktualizuj GIT w przypadku, gdy masz mniej niż 2.9.0

$ brew update
$ brew install git
 0
Author: T. Tiscalli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-19 12:46:30

Miałem ten sam problem. Rozwiązaniem było umieszczenie opcji konfiguracyjnych git w części skryptowej yaml. Zobacz ten problem z GitHub dla przykładów:

Https://github.com/Microsoft/azure-pipelines-agent/issues/1925

 0
Author: mwilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-08 17:46:46