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 | Azure DevOps Server 2020
Příkazy Gitu jsou k dispozici pro vytváření pracovních postupů v agentech hostovaných Microsoftem a v místním prostředí . 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 Gitu ve skriptech sestavení Azure Pipelines.
Povolení skriptů ke spouštění příkazů Gitu
Ujistěte se, že GitHub používá výchozí identitu vašeho účtu Azure DevOps. V případě potřeby nastavte uživatele GitHubu 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 nastavení projektu zvolte možnost Úložiště pod Repozitáře.
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>) v části Uživatelé, nikoli Project Collection Build Service Accounts. 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 GitHubu:
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é Microsoftem, 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 GitHubu nebo jiné službě Git, jako je Bitbucket Cloud?
Ano, příkazy Gitu můžete spustit, pokud je vzdálené úložiště v GitHubu 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í úlohy Azure Pipelines:
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 potvrzení do Gitu Azure Repos, Bitbucket Cloudu, GitHubu nebo GitHubu Enterprise Serveru můžete použít také 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č na místním Serveru Azure DevOps nevidím některé z těchto funkcí?
Některé z těchto funkcí jsou dostupné jenom v Azure DevOps Services a nejsou dostupné pro místní Azure DevOps Server. Některé funkce jsou dostupné jenom v nejnovější verzi Azure DevOps Serveru.