Quando parliamo di automatizzare il più possibile, spesso intendiamo il concetto di processi, così che le cose non debbano essere fatte manualmente, ma ciò può includere anche operazioni che riguardano l'aspetto tecnico come, per esempio, l'upgrade automatico di un file, del README di progetto, di una dashboard e così via.
Tutte queste operazioni necessitano interventi a livello di codice sorgente, ovvero in git, dove, tuttavia, spesso abbiamo delle branch policy applicate e quindi non possiamo fare il commit sul branch principale, ma dobbiamo crearne uno nuovo e poi procedere con le pull request. Se parliamo di procedure automatiche, però, dobbiamo avere cura di non ricreare un branch che esiste già, altrimenti il push sull'upstream andrebbe in fallimento.
- name: Check if branch exists
shell: pwsh
id: branch
run: |
if (git ls-remote --heads origin <my-branch-name>) {
Write-Host "Il branch esiste."
echo "branchExists=true" >> $env:GITHUB_OUTPUT
}
else {
Write-Host "Il branch non esiste"
echo "branchExists=false" >> $env:GITHUB_OUTPUT
}Con il codice in esempio, abbiamo creato uno step nel workflow di GitHub per controllare proprio che il branch non esista sfruttando uno script di PowerShell e il comando ls-remote che elenca le ref presenti sull'origin. In base all'output del comando, andiamo a creare poi una variabile d'ambiente che può essere sfruttata negli step successivi del workflow.
- name: Commit and push
shell: bash
if: ${{ steps.branch.outputs.branchExists == 'false' }}
run: |
git add .
git commit -m "my commit"
git push Infatti, l'esecuzione degli step successivi è vincolata alla valutazione dello statement if, che verifica proprio il valore della variabile branchExists impostata nello step precedente. Se la variabile assume valore false, allora lo step viene eseguito e viene fatto il push proprio perchè il branch non esiste, altrimenti, il workflow andrà avanti nella sua esecuzione.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Ottimizzare le API in ASP.NET con Feature Flags
Integrare email esterne con Azure Functions e Managed Connectors
Shadow DOM open e closed sulla gestione delle pagine
Integrare Agenti A2A in Azure API Management
DevSecOps per .NET: dalla teoria alla pratica
Cache temporanea in Javascript con oggetti
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Evitare la compressione degli artefatti in un workflow di GitHub
Gestione dei codeowners in GitHub
Enterprise Live Migrations - Migrare da Azure DevOps a GitHub
Integrare il Docker Model Runner in un workflow di GitHub
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


