Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Příkazy Gitu jsou dostupné pro pracovní postupy sestavení na Microsoft hostovaných a vlastních agentech. Například po dokončení sestavení kontinuální integrace (CI) ve větvi funkce můžete sloučit větev do hlavní. Tento článek vysvětluje, jak spouštět příkazy Git ve skriptech sestavení Azure Pipelines.
Povolení skriptů ke spouštění příkazů Gitu
Ujistěte se, že Git používá výchozí identitu vašeho účtu Azure DevOps. V případě potřeby nastavte uživatele Gitu jako první krok po rezervaci.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Přiřaďte oprávnění ke službě sestavení
Služba sestavení projektu musí mít oprávnění k zápisu do zdrojového úložiště. Nastavte požadovaná oprávnění následujícím způsobem:
V Project Settings vašeho projektu vyberte Repositories v části Repos.
Na stránce Všechna úložiště vyberte Zabezpečení a nastavte oprávnění pro všechna úložiště v projektu. Nebo vyberte úložiště, na kterém chcete spouštět příkazy Gitu, a pak na stránce úložiště vyberte Zabezpečení .
Na stránce Oprávnění uživatele vyberte identitu Build Service. Nezapomeňte vybrat <název projektu> Build Service (<organizace>) pod Uživatelé, ne Účty služby sestavování kolekce projektu. 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.
Rozbalte seznam a vyberte Povolit vedle každého oprávnění potřebného pro příkazy Gitu, které chcete spustit, obvykle Vytvořit větev, Přispívat, Číst a Vytvořit značku.
Povolit skriptům přístup k systémovému tokenu
Povolení přístupu skriptů k tokenu OAuth GitHub:
Přidejte krok checkout do YAML potrubí s persistCredentials nastaveným na true.
steps:
- checkout: self
persistCredentials: true
Další informace o checkout kroku najdete v definici steps.checkout .
Vyčištění místního úložiště
Kanál buildu automaticky nevyčistí určité změny místního úložiště, například odstranění místních větví nebo vrácení místních git config změn zpět. Pokud při používání samo-hostovaného agenta narazíte na problémy, můžete úložiště před spuštěním sestavení vyčistit.
Obecně platí, že pro rychlejší výkon samoobslužních agentů nečistěte úložiště. Čištění není efektivní pro agenty hostované Microsoft, protože pokaždé používají nového agenta. Další informace najdete v tématu Vyčištění místního úložiště agenta.
Vyčištění úložiště před spuštěním sestavení:
Nastavte clean na true v kroku checkout. Tato možnost spustí git clean -ffdx a poté git reset --hard HEAD před načtením.
steps:
- checkout: self
clean: true
V editoru kanálu vyberte Proměnné , vytvořte nebo upravte Build.Clean proměnnou a nastavte její hodnotu na source.
Příklady příkazů Gitu
Následující příklady spouští příkazy Gitu v úloze příkazového řádku a úlohu skriptu Batch .
Výpis souborů v úložišti
Pokud chcete zobrazit seznam souborů v úložišti Git, použijte úlohu příkazového řádku v kanálu YAML následujícím způsobem:
- task: CmdLine@2
inputs:
script: 'git ls-files'
Sloučení funkční větve do hlavní větve
Následující příklad klasického kanálu sloučí sestavení CI do main, pokud se sestavení podaří.
Vytvořte soubor s názvem merge.bat v kořenovém adresáři úložiště s následujícím obsahem:
@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 statusNa záložce Triggery ve vašem klasickém kanálu zaškrtněte políčko Povolit kontinuální integraci.
V části Filtry větví a Filtry cesty vyberte větve a cesty, které chcete zahrnout nebo vyloučit z sestavení.
Přidejte Batch script jako poslední úlohu ve vaší pipeline.
V části Cesta v konfiguraci úlohy zadejte umístění a název souboru merge.bat.
časté otázky
Můžu spouštět příkazy Gitu, pokud je vzdálené úložiště v GitHub nebo jiné službě Git, jako je Bitbucket Cloud?
Ano, příkazy Gitu můžete spustit, pokud je vaše vzdálené úložiště v GitHub nebo jiné službě Git, jako je Bitbucket Cloud.
Které úlohy můžu použít ke spouštění příkazů Gitu?
Ke spouštění příkazů Gitu můžete použít následující Azure Pipelines úlohy:
Jak se můžu vyhnout spuštění procesu sestavení CI při odeslání skriptu?
Pokud se chcete vyhnout aktivaci sestavení CI při nasdílení skriptu, přidejte [skip ci] do potvrzovací zprávy nebo popisu. Například:
git commit -m "This is a commit message [skip ci]"git merge origin/features/hello-world -m "Merge to main [skip ci]"
K odeslání do Azure Repos Git, Bitbucket Cloud, GitHub nebo GitHub Enterprise Server můžete také použít některou z následujících variant:
-
[skip ci]nebo[ci skip] -
skip-checks: trueneboskip-checks:true -
[skip azurepipelines]nebo[azurepipelines skip] -
[skip azpipelines]nebo[azpipelines skip] -
[skip azp]nebo[azp skip] ***NO_CI***
Potřebuji agenta ke spouštění pipeline?
Ano, ke spuštění kanálu buildu nebo verze potřebujete aspoň jednoho agenta .
Jak můžu řešit problémy?
Viz Řešení potíží s běhy potrubí.
Jak mohu opravit nemožnost vybrat výchozí fond agentů nebo zařadit spuštění kanálu do fronty?
Viz Vytvoření a správa fondů agentů.
Jak mohu vyřešit problém selhání úlohy NuGet push s chybou "Nelze získat certifikát místního vystavitele"?
Tento problém můžete vyřešit přidáním důvěryhodného kořenového certifikátu. Buď přidejte proměnnou NODE_EXTRA_CA_CERTS=file prostředí do agenta sestavení, nebo přidejte proměnnou NODE.EXTRA.CA.CERTS=file úlohy do pipeline.
Další informace o této proměnné najdete v NODE_EXTRA_CA_CERTS=souboru v dokumentaci k Node.js. Pokyny k nastavení proměnné v kanálu najdete v tématu Nastavení proměnných v kanálu.
Proč nevidím některé z těchto funkcí v místním Azure DevOps Server?
Některé z těchto funkcí jsou dostupné jenom na Azure DevOps Services a nejsou dostupné pro místní Azure DevOps Server. Některé funkce jsou dostupné jenom v nejnovější verzi Azure DevOps Server.