Udostępnij za pośrednictwem


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 pipeline kompilacji uruchamiający polecenia Git. Na przykład po zakończeniu zadania budowania w gałęzi funkcjonalnej, zespół może chcieć scalić daną gałąź z gałęzią główną.

Git jest dostępny na agentach hostowanych przez Microsoft i na 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. To musi być zrobione jako pierwszy krok po pobraniu kodu.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Udzielanie uprawnień kontroli wersji do usługi kompilacji

  1. Przejdź do strony ustawień projektu dla organizacji w Ustawienia organizacji>Ogólne projekty>.

    Wybierz ustawienia organizacji.

  2. Wybierz projekt, który chcesz edytować.

    Wybierz projekt.

  3. W ustawienia projektuwybierz pozycję Repozytoria . Wybierz repozytorium, w którym chcesz uruchomić polecenia Git.

  4. Wybierz pozycję Security, aby edytować zabezpieczenia repozytorium.

    Wybierz zabezpieczenia, aby edytować zabezpieczenia repozytorium.

  5. Wyszukaj Project Collection Build Service. Wybierz tożsamość {{nazwa projektu}} Usługa kompilacji ({Twoja organizacja}) (a nie grupę Konto usług kompilacji kolekcji projektów ({Twoja organizacja})). Domyślnie ta tożsamość może odczytywać dane z repozytorium, lecz nie może wprowadzać zmian. Udziel uprawnień wymaganych dla poleceń git, które chcesz uruchomić. Zwykle będziesz chciał przyznać:

    • Utwórz gałąź: Zezwalaj
    • Współpracuj : Zezwalaj
    • odczyt : zezwalaj na
    • Tworzenie tagu: Zezwalaj

Zezwalaj skryptom na dostęp do tokenu systemowego

Dodaj sekcję checkout, ustawiając persistCredentials na true.

steps:
- checkout: self
  persistCredentials: true

Dowiedz się więcej o checkout.

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:

Upewnij się, że checkout ma clean ustawione na true.

steps:
- checkout: self
  clean: true
  • Na karcie repozytorium ustaw Clean na true.

  • Na karcie zmienne utwórz lub zmodyfikuj zmienną Build.Clean i ustaw ją na source

Przykłady

Wyświetl listę plików w swoim repozytorium

Na karcie kompilacjidodaj następujące zadanie:

Zadanie Argumenty (w programowaniu)

Narzędzie: wiersz poleceń
Wyświetl listę plików w repozytorium Git.
Narzędzie: git

Argumenty: ls-files

Scalanie gałęzi funkcjonalności z gałęzią główną

Chcesz, aby budynek CI został scalony z główną gałęzią, jeśli zakończy się pomyślnie.

Na karcie Wyzwalacze wybierz pozycję Ciągła integracja (CI) i uwzględnij gałęzie, które chcesz budować.

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 dodać to jako ostatnie zadanie:

Zadanie Argumenty (w programowaniu)

narzędzie : skrypt wsadowy
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?

Skrypt wsadowy

wiersz poleceń

PowerShell

skryptu powłoki

Jak uniknąć wyzwalania budowy CI, gdy skrypt przesyła zmiany?

Dodaj [skip ci] do komentarza 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 lub skip-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ę ustawić w kolejce kompilowania ani publikowania. Jak to naprawić?

Zobacz Pule agentów.

Moje zadanie przesyłania NuGet kończy się niepowodzeniem z powodu następującego błędu: "Błąd: nie można uzyskać certyfikatu od lokalnego wystawcy". 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 konfiguracji potoku. Aby uzyskać więcej informacji na temat tej zmiennej, zobacz dokumentację Node.js. Zobacz Ustawianie zmiennych w potoku, aby uzyskać instrukcje, jak ustawić zmienną w swoim 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.