Condividi tramite


Eseguire comandi Git in uno script

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Per alcuni flussi di lavoro, è necessaria la pipeline di compilazione per eseguire i comandi Git. Ad esempio, dopo che un build CI su un ramo di funzionalità è stato completato, il team potrebbe voler unire il ramo al ramo principale.

Git è disponibile su agenti ospitati da Microsoft e su agenti locali.

Abilitare gli script per eseguire comandi Git

Nota

Prima di iniziare, assicurarsi che l'identità predefinita dell'account sia impostata con il codice seguente. Questa operazione deve essere eseguita come primo passaggio dopo aver estratto il codice.

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

Concedere le autorizzazioni di controllo della versione al servizio di compilazione

  1. Vai alla pagina delle impostazioni del progetto per la tua organizzazione su Impostazioni organizzazione>Generale>Progetti.

    #B0 #A1 #A2 Seleziona le impostazioni dell'organizzazione. #B3 #A4 #C5

  2. Selezionare il progetto da modificare.

    #B0 #A1 #A2 Seleziona il tuo progetto. #B3 #A4 #C5

  3. All'interno di Impostazioni del Progetto, selezionare Repository. Selezionare il repository in cui si vogliono eseguire i comandi Git.

  4. Seleziona Sicurezza per modificare la sicurezza del repository.

    #B0 #A1 #A2 Scegliere Sicurezza per modificare le impostazioni di sicurezza del repository. #B3 #A4 #C5

  5. Cerca Servizio di compilazione della raccolta dei progetti. Scegliere l'identità {{nome progetto}} Build Service ({organizzazione}) (non il gruppo Project Collection Build Service Accounts ({organizzazione})). Per impostazione predefinita, questa identità può leggere dal repository, ma non può eseguire il push delle modifiche. Concedere le autorizzazioni necessarie per i comandi Git da eseguire. In genere si vuole concedere:

    • #B0 Crea ramo: #C1 Consenti
    • Contribuire: Consenti
    • #B0 Lettura: #C1 Consenti
    • Crea tag: Consenti

Consentire agli script di accedere al token di sistema

Aggiungere una sezione checkout con persistCredentials impostato su true.

steps:
- checkout: self
  persistCredentials: true

Altre informazioni su checkout.

Assicurarsi di pulire il repository locale

Alcuni tipi di modifiche al repository locale non vengono puliti automaticamente dalla pipeline di compilazione. Assicurarsi quindi di:

  • Eliminare quei rami locali che hai creato.
  • Annullare le modifiche alla configurazione Git.

Se incontri problemi con un agente locale, assicurati che il repository sia pulito:

Assicurati che checkout abbia clean impostato su true.

steps:
- checkout: self
  clean: true
  • Nella scheda repository, impostare Pulito su vero.

  • Nella scheda variabili, creare o modificare la Build.Clean variabile e impostarla su source

Esempi

Elencare i file nel repository

Nella scheda build, aggiungere questa attività:

Attività Argomenti

Utilità: Linea di comando
Elencare i file nel repository Git.
Strumento: git

Argomenti: ls-files

Unire un ramo delle funzioni al branch principale

Se la compilazione ha esito positivo, si vuole che una compilazione CI venga unione a main.

Nella tab Triggers, selezionare integrazione continua (CI) e includere i rami da costruire.

Crea merge.bat alla radice del repository.

@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

Nella scheda build aggiungerla come ultima attività:

Attività Argomenti

Utilità: script batch
Eseguire merge.bat.
Percorso: merge.bat

Domande frequenti

È possibile eseguire comandi Git se il repository remoto si trova in GitHub o in un altro servizio Git, ad esempio Bitbucket Cloud?

Quali attività è possibile usare per eseguire comandi Git?

Batch script

Riga di comando

PowerShell

Shell Script

Come si evita di attivare una compilazione CI quando lo script esegue il push?

Aggiungere [skip ci] al messaggio o alla descrizione del commit. Ecco alcuni esempi:

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

È anche possibile usare una di queste varianti per i commit in Git Azure Repos, Bitbucket Cloud, GitHub ed GitHub Enterprise Server.

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

È necessario un agente?

Per eseguire la compilazione o il rilascio, è necessario almeno un agente.

Ho problemi. Come è possibile risolvere i problemi?

Consulta Risolvere i problemi di compilazione e rilascio.

Non è possibile selezionare un pool di agenti predefinito e non è possibile accodamento della build o del rilascio. Com'è possibile risolvere il problema?

Vedere Pool di Agenti.

L'attività push NuGet ha esito negativo con l'errore seguente: "Errore: impossibile ottenere il certificato dell'autorità di certificazione locale". Come posso risolvere questo problema?

Questo problema può essere risolto aggiungendo un certificato radice attendibile. È possibile aggiungere la variabile di ambiente #D0 all'agente di compilazione oppure aggiungere la variabile di attività #D1 nella pipeline. Per altre informazioni su questa variabile, vedereNode.js documentazione . Vedi Impostare le variabili in una pipeline per istruzioni sull'impostazione di una variabile nella tua pipeline.

Uso TFS in locale e non vedo alcune di queste funzionalità. Perché no?

Alcune di queste funzionalità sono disponibili solo in azure Pipelines e non sono ancora disponibili in locale. Alcune funzionalità sono disponibili in sede se hai aggiornato alla versione più recente di TFS.