Uruchamianie poleceń Git w skrypcie
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
W przypadku niektórych przepływów pracy potrzebny jest potok kompilacji uruchamiający polecenia usługi Git. Na przykład po zakończeniu kompilacji ciągłej integracji w gałęzi funkcji zespół może chcieć scalić daną gałąź z gałęzią główną.
Usługa Git jest dostępna na agentach hostowanych przez firmę Microsoft i agentach lokalnych.
Włączanie skryptów do uruchamiania poleceń usługi Git
Uwaga
Przed rozpoczęciem upewnij się, że tożsamość domyślna konta jest ustawiona przy użyciu następującego kodu. Należy to zrobić jako pierwszy krok po wyewidencjonowaniu kodu.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Udzielanie uprawnień kontroli wersji do usługi kompilacji
Przejdź do strony ustawień projektu dla organizacji w Ustawienia> Ogólne>projekty.
Wybierz projekt, który chcesz edytować.
W obszarze Projekt Ustawienia wybierz pozycję Repozytoria. Wybierz repozytorium, w którym chcesz uruchomić polecenia Git.
Wybierz pozycję Zabezpieczenia , aby edytować zabezpieczenia repozytorium.
Wyszukaj usługę kompilacji kolekcji projektów. Wybierz tożsamość {{nazwa projektu}} Usługa kompilacji ({Twoja organizacja}) (a nie konta usługi kompilacji kolekcji projektów grupy ({twoja organizacja})). Domyślnie ta tożsamość może odczytywać z repozytorium, ale nie może z powrotem wypchnąć żadnych zmian. Udziel uprawnień wymaganych dla poleceń git, które chcesz uruchomić. Zazwyczaj należy udzielić:
- Utwórz gałąź: Zezwalaj
- Współtworzenie: Zezwalaj
- Przeczytaj: Zezwalaj
- Utwórz tag: Zezwalaj
Przejdź do karty Panel sterowania wersją
Azure Repos:
https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol
Lokalnie:
https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol
Jeśli zostanie wyświetlona ta strona, wybierz repozytorium, a następnie wybierz link:
Na karcie Kontrola wersji wybierz repozytorium, w którym chcesz uruchomić polecenia Git, a następnie wybierz pozycję Usługa kompilacji kolekcji projektów. Domyślnie ta tożsamość może odczytywać z repozytorium, ale nie może z powrotem wypchnąć żadnych zmian.
Udziel uprawnień wymaganych dla poleceń git, które chcesz uruchomić. Zazwyczaj należy udzielić:
- Utwórz gałąź: Zezwalaj
- Współtworzenie: Zezwalaj
- Przeczytaj: Zezwalaj
- Utwórz tag: Zezwalaj
Po zakończeniu udzielania uprawnień upewnij się, że wybrano pozycję Zapisz zmiany.
Zezwalaj skryptom na dostęp do tokenu systemowego
Na karcie opcje wybierz pozycję Zezwalaj skryptom na dostęp do tokenu OAuth.
Pamiętaj, aby wyczyścić repozytorium lokalne
Niektóre rodzaje zmian w repozytorium lokalnym nie są automatycznie czyszczone przez potok kompilacji. Upewnij się więc, że:
- Usuń utworzone gałęzie lokalne.
- Cofanie zmian konfiguracji usługi Git.
Jeśli wystąpią problemy z używaniem agenta lokalnego, upewnij się, że repozytorium jest czyste:
Na karcie repozytorium ustaw wartość Clean na true.
Na karcie Zmienne utwórz lub zmodyfikuj zmienną
Build.Clean
i ustaw ją nasource
Przykłady
Wyświetlanie listy plików w repozytorium
Na karcie kompilacji dodaj następujące zadanie:
Zadanie | Argumenty |
---|---|
Narzędzie: wiersz polecenia Wyświetl listę plików w repozytorium Git. |
Narzędzie: git Argumenty: ls-files |
Scalanie gałęzi funkcji z gałęzią główną
Chcesz, aby kompilacja ciągłej integracji scaliła się z głównymi, jeśli kompilacja zakończy się pomyślnie.
Na karcie Wyzwalacze wybierz pozycję Ciągła integracja (CI) i uwzględnij gałęzie, które chcesz skompilować.
Utwórz merge.bat
w katalogu głównym repozytorium:
@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
ECHO Building main branch so no merge is needed.
EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status
Na karcie kompilacji dodaj to jako ostatnie zadanie:
Zadanie | Argumenty |
---|---|
Narzędzie: Skrypt usługi Batch Uruchom merge.bat. |
Ścieżka: merge.bat |
Często zadawane pytania
Czy mogę uruchomić polecenia Git, jeśli repozytorium zdalne znajduje się w usłudze GitHub lub innej usłudze Git, takiej jak Bitbucket Cloud?
Tak
Których zadań można używać do uruchamiania poleceń usługi Git?
Jak mogę uniknąć wyzwalania kompilacji ciągłej integracji podczas wypychania skryptu?
Dodaj ***NO_CI***
do komunikatu zatwierdzenia. Oto przykłady:
git commit -m "This is a commit message ***NO_CI***"
git merge origin/features/hello-world -m "Merge to main ***NO_CI***"
Dodaj [skip ci]
do komunikatu lub opisu zatwierdzenia. Oto przykłady:
git commit -m "This is a commit message [skip ci]"
git merge origin/features/hello-world -m "Merge to main [skip ci]"
Możesz również użyć dowolnej z tych odmian w przypadku zatwierdzeń w usługach Azure Repos Git, Bitbucket Cloud, GitHub i GitHub Enterprise Server.
[skip ci]
lub[ci skip]
skip-checks: true
lubskip-checks:true
[skip azurepipelines]
lub[azurepipelines skip]
[skip azpipelines]
lub[azpipelines skip]
[skip azp]
lub[azp skip]
***NO_CI***
Czy potrzebuję agenta?
Do uruchomienia kompilacji lub wydania potrzebny jest co najmniej jeden agent .
Mam problemy. Jak można je rozwiązać?
Zobacz Rozwiązywanie problemów z kompilacją i wydaniem.
Nie mogę wybrać domyślnej puli agentów i nie mogę w kolejce kompilacji ani wydania. Jak mogę to naprawić?
Zobacz Pule agentów.
Moje zadanie wypychania NuGet kończy się niepowodzeniem z powodu następującego błędu: "Błąd: nie można pobrać certyfikatu wystawcy lokalnego". Jak rozwiązać ten problem?
Można to naprawić przez dodanie zaufanego certyfikatu głównego. Możesz dodać zmienną środowiskową NODE_EXTRA_CA_CERTS=file
do agenta kompilacji lub dodać zmienną zadania NODE.EXTRA.CA.CERTS=file
w potoku. Aby uzyskać więcej informacji na temat tej zmiennej, zobacz dokumentację platformy Node.js. Zobacz Ustawianie zmiennych w potoku, aby uzyskać instrukcje dotyczące ustawiania zmiennej w potoku.
Używam lokalnego serwera TFS i nie widzę niektórych z tych funkcji. Dlaczego nie?
Niektóre z tych funkcji są dostępne tylko w usłudze Azure Pipelines i nie są jeszcze dostępne lokalnie. Niektóre funkcje są dostępne lokalnie, jeśli przeprowadzono uaktualnienie do najnowszej wersji serwera TFS.