In Azure DevOps, by default, indipendentemente dal ruolo che ricopriamo all'interno di un team project, non abbiamo la possibilità di fare un force push all'interno dei repository. Questo ha una ragione legata alla sicurezza e all'uso corretto dei processi perché, di fatto, sarebbe necessario fare uso delle Pull Request per fare merge di changes all'interno di un branch.
Tuttavia, in scenari molto particolari legati all'automation, il concetto di force push potrebbe assumere un altro significato e diventare una operazione "necessaria". Per fare ciò, dobbiamo grantare il permesso corretto all'interno di Azure DevOps.
Ci serviranno queste tre informazioni principali:
# Security namespace: GIT_SECURITY_NAMESPACE="2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87" # Project ID: PROJECT_ID=$(az devops project show --project "<project>" --organization "<organization>" --query "id" -o tsv || true) # Repository ID REPOSITORY_ID=$(az repos show --repository "<repository>" --project "<project>" --organization "<organization>" --query "id" -o tsv)
In particolare per quanto riguarda il primo parametro, c'è da notare che c'è un GUID già specificato. Questo è standard, e identifica in modo univoco le risorse di tipo "repository" (e infatti andremo ad impostare il force push proprio su un repository).
A questo punto posso recuperare l'identificativo del gruppo alla quale voglio dare i permessi (in questo caso usiamo Project Administrator, ma potrebbe essere un gruppo ad-hoc):
GROUP_DESCRIPTOR=$(az devops security group list --organization "<organization>" --project "$PROJECT_ID" --scope project --query "graphGroups[?displayName=='Project Administrators'].descriptor" -o tsv)
E, infine, possiamo grantare il permesso sempre sfruttando la Azure DevOps CLI:
az devops security permission update --organization "<organization>" --id "$GIT_SECURITY_NAMESPACE" --subject "$GROUP_DESCRIPTOR" --token "repoV2/${PROJECT_ID}/${REPOSITORY_ID}/" --allow-bit 128 --merge trueIn sostanza non abbiamo fatto altro che chiamare gli endpoint di permission all'interno dell'area security, per impostare sul gruppo Project Administrator, il bit 128 (quello che identifica il force push sul repository) a true, nel token che rappresenta il repository di riferimento.
Cambiando semplicemente il bit possiamo abilitare, per esempio, altre funzionalità come il bypass delle Pull Request:
az devops security permission update --organization "<organization>" --id "$GIT_SECURITY_NAMESPACE" --subject "$GROUP_DESCRIPTOR" --token "repoV2/${PROJECT_ID}/${REPOSITORY_ID}/" --allow-bit 32768 --merge trueCommenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione dei codeowners in GitHub
Bloccare il traffico di rete in uscita dal runner di GitHub
Personalizzare i parametri del CSS Scroll Snap
Migrare applicazioni legacy nel cloud con Azure App Service Managed Instance
Effettuare un clone parziale di un repository di GitHub
Avviare rapidamente un container con Azure Container Apps Express
Building Custom Developer Agents
How to be a DevOps engineer in the AI era
Utilizzo di CSS Scroll Snap per realizzare un carousel
Evitare il cache poisoning nei workflow di GitHub
Come automatizzare il download dei report di billing da GitHub Enterprise
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Esaminare documenti con namespace con LINQ e XDocument
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE


