Sdílet prostřednictvím


Spouštění příkazů Git ve skriptu

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Abyste mohli spouštět příkazy Git, u některých pracovních postupů potřebujete kanál buildu. Například po dokončení buildu CI na větvi funkcí může tým chtít sloučit větev do hlavní.

Git je k dispozici pro agenty hostované Microsoftem a místní agenty.

Povolení skriptů ke spouštění příkazů Gitu

Poznámka:

Než začnete, ujistěte se, že je výchozí identita vašeho účtu nastavená následujícím kódem. Tento krok musí být proveden jako první krok po rezervaci kódu.

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

Udělení oprávnění ke správě verzí službě sestavení

  1. Přejděte na stránku nastavení projektu pro vaši organizaci v organizaci Nastavení> General>Projects.

    Vyberte nastavení organizace.

  2. Vyberte projekt, který chcete upravit.

    Vyberte projekt.

  3. V aplikaci Project Nastavení vyberte Úložiště. Vyberte úložiště, na které chcete spouštět příkazy Gitu.

  4. Vyberte Zabezpečení a upravte zabezpečení úložiště.

    Zvolte Zabezpečení a upravte zabezpečení úložiště.

  5. Vyhledejte službu sestavení kolekce projektů. Zvolte identitu {{název vašeho projektu}} Build Service ({vaše organizace}) (nikoli skupinový účet služby sestavení kolekce projektů ({vaše organizace})). Ve výchozím nastavení může tato identita číst z úložiště, ale nemůže do něj odesílat žádné změny. Udělte oprávnění potřebná pro příkazy Gitu, které chcete spustit. Obvykle budete chtít udělit:

    • Vytvoření větve: Povolit
    • Přispívání: Povolit
    • Čtení: Povolit
    • Vytvořit značku: Povolit

Přechod na kartu Ovládací panely správy verzí

  • Azure Repos: https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol

  • Místní: https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol

správa projektu

Pokud se zobrazí tato stránka, vyberte úložiště a pak vyberte odkaz:

Horní panel ovládacích panelů do projektu

Karta řízení verzí projektu v ovládacích panelech

Na kartě Správa verzí vyberte úložiště, ve kterém chcete spouštět příkazy Gitu, a pak vyberte Službu sestavení kolekce projektů. Ve výchozím nastavení může tato identita číst z úložiště, ale nemůže do něj odesílat žádné změny.

oprávnění

Udělte oprávnění potřebná pro příkazy Gitu, které chcete spustit. Obvykle budete chtít udělit:

  • Vytvoření větve: Povolit
  • Přispívání: Povolit
  • Čtení: Povolit
  • Vytvořit značku: Povolit

Až oprávnění udělíte, nezapomeňte vybrat Uložit změny.

Povolit skriptům přístup k systémovému tokenu

Přidejte oddíl s nastaveným persistCredentials parametrem .checkouttrue

steps:
- checkout: self
  persistCredentials: true

Přečtěte si další informace o checkout.

Na kartě Možnosti vyberte Povolit skriptům přístup k tokenu OAuth.

Nezapomeňte vyčistit místní úložiště.

Kanál buildu automaticky nevyčistí určité druhy změn místního úložiště. Proto se ujistěte, že:

  • Odstraňte místní větve, které vytvoříte.
  • Vrácení změn konfigurace Gitu zpět

Pokud při používání místního agenta narazíte na problémy, ujistěte se, že je úložiště čisté:

Ujistěte se, že checkout je clean nastavená hodnota true.

steps:
- checkout: self
  clean: true
  • Na kartě úložiště nastavte hodnotu Vyčistit na true.

  • Na kartě Proměnné vytvořte nebo upravte proměnnou Build.Clean a nastavte ji nasource

Příklady

Výpis souborů v úložišti

Na kartě sestavení přidejte tuto úlohu:

Úloha Argumenty

Nástroj: Příkazový řádek
Vypište soubory v úložišti Git.
Nástroj: git

Argumenty: ls-files

Sloučení větve funkcí do hlavní větve

Chcete, aby se sestavení CI sloučilo tak, aby bylo hlavní, pokud sestavení proběhne úspěšně.

Na kartě Triggery vyberte Kontinuální integrace (CI) a zahrňte větve, které chcete sestavit.

Vytvořte merge.bat v kořenovém adresáři úložiště:

@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 kartě sestavení přidejte tento úkol jako poslední úkol:

Úloha Argumenty

Nástroj: Dávkový skript
Spusťte merge.bat.
Cesta: merge.bat

Často kladené dotazy

Můžu spouštět příkazy Gitu, pokud je vzdálené úložiště v GitHubu nebo jiné službě Git, jako je Bitbucket Cloud?

Ano

Které úlohy můžu použít ke spouštění příkazů Gitu?

Dávkový skript

Příkazový řádek

PowerShell

Skript prostředí

Návody vyhnout se aktivaci sestavení CI při nasdílení skriptu?

Přidejte ***NO_CI*** do zprávy potvrzení. Tady jsou příklady:

  • git commit -m "This is a commit message ***NO_CI***"
  • git merge origin/features/hello-world -m "Merge to main ***NO_CI***"

Přidejte [skip ci] zprávu nebo popis potvrzení. Tady jsou příklady:

  • git commit -m "This is a commit message [skip ci]"
  • git merge origin/features/hello-world -m "Merge to main [skip ci]"

Jakékoli z těchto variant můžete použít také k potvrzení do Gitu Azure Repos, Bitbucket Cloudu, GitHubu a GitHubu Enterprise Serveru.

  • [skip ci] nebo [ci skip]
  • skip-checks: true nebo skip-checks:true
  • [skip azurepipelines] nebo [azurepipelines skip]
  • [skip azpipelines] nebo [azpipelines skip]
  • [skip azp] nebo [azp skip]
  • ***NO_CI***

Potřebuji agenta?

Ke spuštění sestavení nebo vydání potřebujete aspoň jednoho agenta .

Mám problémy. Jak je můžu vyřešit?

Viz Řešení potíží s sestavením a vydáním.

Nemůžu vybrat výchozí fond agentů a nemůžu zařadit sestavení nebo vydání do fronty. Jak to můžu vyřešit?

Viz fondy agentů.

Moje úloha nabízení NuGet selhává s následující chybou: Chyba: Nejde získat certifikát místního vystavitele. Jak to můžu opravit?

Tento problém je možné vyřešit přidáním důvěryhodného kořenového certifikátu. Buď můžete přidat proměnnou prostředí NODE_EXTRA_CA_CERTS=file do agenta sestavení, nebo proměnnou úlohy NODE.EXTRA.CA.CERTS=file do kanálu. Další podrobnosti o této proměnné najdete v dokumentaci k Node.js. Pokyny k nastavení proměnné v kanálu najdete v části Nastavení proměnných v kanálu.

Používám místně TFS a některé z těchto funkcí nevidím. Proč ne?

Některé z těchto funkcí jsou dostupné jenom v Azure Pipelines a zatím nejsou dostupné místně. Některé funkce jsou dostupné místně, pokud jste upgradovali na nejnovější verzi TFS.