Quando lavoriamo in ambienti che richiedono un certo livello di automatizzazione, ci può capitare di avere il bisogno di avere codice sorgente sempre sincronizzato con alcune metriche che vengono calcolate a runtime. Facendo un esempio specifico, ad esempio, potrebbe venire comodo aggiornare la versione dell'applicazione una volta che questa è stata rilasciata, magari vogliamo aggiornare un deployment file di Kubernetes se troviamo misconfiguration e così via.
Ci sono alcuni dettagli, soprattutto a livello di security, che potenzialmente devono essere sempre aggiornati e non c'è bisogno che siano verificati da una persona/team ad-hoc. In questi frangenti, infatti, anche se siamo obbligati a creare una pull request poichè abbiamo delle branch policy impostate, vogliamo fare in modo che le change vengano mergiate immediatamente, talvolta bypassando i check impostati.
Come prima cosa, simuliamo lo scenario in cui da un workflow di GitHub creiamo una pull request, dando per assodato che le change siano già in un branch dedicato.
- name: Create pull request shell: pwsh run: | gh pr create --title "PR TITLE" ` --body "PR DESCRIPTION" ` --base "main" ` --head "feature/new-feature" ` --repo "my-repository"
La pull request è quindi tecnicamente visibile in GitHub. Tuttavia, non ci serve che qualcuno faccia la review poichè è stata creata dal sistema automatico. Per fare l'auto-merge della pull request ci è sufficiente richiamare la CLI di GitHub:
- name: Merge pull request shell: pwsh run: | gh pr merge ` "feature/new-feature" ` --admin ` --rebase ` --delete-branch ` --repo "my-repository"
Con questa modalità e passando il flag --admin, stiamo andando a fare anche il bypass delle branch policy. Se non ci interessa, possiamo mettere il flag --auto, ma chiaramente dipende dalle nostre esigenze e dai permessi del GITHUB_TOKEN che gli viene assegnato durante l'esecuzione del workflow.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare la command injection in un workflow di GitHub
Generare token per autenicarsi sulle API di GitHub
Miglioramenti agli screen reader e al contrasto in Angular
Ottimizzazione dei block template in Angular 17
Creare gruppi di client per Event Grid MQTT
Usare una container image come runner di GitHub Actions
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Code scanning e advanced security con Azure DevOps
Installare le Web App site extension tramite una pipeline di Azure DevOps
Controllare gli accessi IP alle app con Azure Container Apps
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
I più letti di oggi
- Impostare un elemento come ridimensionabile tramite CSS
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Personalizzare l'errore del rate limiting middleware in ASP.NET Core
- Accedere alla console di una Azure Container App
- Modificare i metadati nell'head dell'HTML di una Blazor Web App
- Gli oggetti CallOut di Expression Blend 4.0
- SQL Server 2005 December CTP
- Sfruttare le nuove tipologie di input di HTML5 con ASP.NET 4.0
- Upload da una pagina web con Dundas Upload