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
Gestire liste di tipi semplici con Entity Framework Core
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Code scanning e advanced security con Azure DevOps
Eseguire script pre e post esecuzione di un workflow di GitHub
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Eseguire le GitHub Actions offline
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Ordine e importanza per @layer in CSS
Sostituire la GitHub Action di login su private registry
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub