Abilitare automaticamente il force push di un gruppo su Azure DevOps

di Matteo Tumiati, in DevOps,

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 true

In 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 true

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi