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

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

    Wybierz ustawienia organizacji.

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

    Wybierz projekt.

  3. W obszarze Projekt Ustawienia wybierz pozycję Repozytoria. Wybierz repozytorium, w którym chcesz uruchomić polecenia Git.

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

    Wybierz pozycję Zabezpieczenia, aby edytować zabezpieczenia repozytorium.

  5. 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

zarządzanie projektem

Jeśli zostanie wyświetlona ta strona, wybierz repozytorium, a następnie wybierz link:

Panel sterowania u góry do projektu

Karta kontroli wersji projektu panelu sterowania

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.

uprawnienia

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

Dodaj sekcję z ustawioną checkoutpersistCredentials wartością true.

steps:
- checkout: self
  persistCredentials: true

Dowiedz się więcej o usłudze checkout.

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:

Upewnij się, że checkout ustawiono clean wartość true.

steps:
- checkout: self
  clean: true

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?

Skrypt usługi Batch

Wiersz polecenia

Program PowerShell

Skrypt powłoki

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 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ę 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.