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
Introduzione a GitHub Copilot CLI
Blazor e InputHidden in .NET 10
Effettuare un clone parziale di un repository di GitHub
Running workloads and operations with Azure Kubernetes Service
Ospitare n8n su Azure App Service
Evitare la compressione degli artefatti in un workflow di GitHub
Impostare automaticamente l'altezza del font tramite CSS
Gestione delle issue type con GitHub
Importare repository da Bitbucket a GitHub Enterprise Cloud
Nuova modale riconnessione Blazor
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework


