web-dev-qa-db-fra.com

Protection d'une branche git dans Visual Studio Team Services

Je voudrais seulement que les développeurs autorisent explicitement à fusionner dans une branche "maître". J'ai trouvé l'emplacement des paramètres de sécurité, mais rien ne semble me permettre de dire "cette branche, seulement permettre à Rob de s'y fondre". Des conseils spécifiques s'il vous plaît?

35
Rob Ellis

Vous pouvez protéger MASTER dans VSTS assez facilement car TFS fournit des capacités Git d'entreprise. Il y a deux façons d'y parvenir.

1) Autorisations de branche Git

Dans les pages d'administration sous l'onglet Contrôle de version, vous pouvez modifier l'autorisation pour chaque branche publiée. Vous devez conserver l'accès au niveau du référentiel, mais sur MASTER, vous pouvez changer l'autorisation de validation "Contributeur" en "non configuré". Vous pouvez ensuite ajouter uniquement Rob ...

VSTS Git Branch permissions

Oh ... Utilisez toujours "not set" plutôt que "deny" car deny est toujours prioritaire.

2) Politiques de la branche Git

VSTS a introduit l'idée de politiques de branche. Ces politiques de branche peuvent être appliquées à n'importe quelle branche mais sont traditionnellement appliquées à MASTER.

VSTS Git Branch Policies

Ici, vous pouvez appliquer plusieurs politiques pour refléter vos besoins ... Je mets toujours

J'ai trouvé que je devais franchir un peu plus d'étapes pour y arriver

Il existe 2 emplacements pour définir des groupes dans Visual Studio en ligne - au niveau de la collection et au niveau du projet.

Au niveau de la collection, j'ai créé un groupe d'administrateurs et créé un groupe de développeurs. Je voulais uniquement que les membres du groupe admin aient un accès en écriture à la branche principale de mon référentiel.

Au niveau du projet, j'ai ajouté un groupe de développeurs et d'administrateurs à l'équipe de projet. Dans le groupe des contributeurs au projet, j'ai supprimé l'équipe du projet et ajouté uniquement le groupe de développeurs

Dans le groupe d'administrateurs de projet, j'ai ajouté le groupe d'administrateurs au niveau de la collection.

Ensuite, sur l'onglet de contrôle de version sur la branche principale, je définis contribuer = refuser pour le groupe de contributeurs

Étant donné que les administrateurs ne sont pas membres du groupe de contributeurs, l'autorisation de refus ne leur est pas appliquée et ils peuvent toujours transmettre les modifications au maître - soit directement, soit en approuvant les demandes d'extraction.

9
Anthony Brown

J'ai réussi à créer les (2) types de groupes basés sur @anthonybrown. Je voulais, cependant, donner quelques captures d'écran pour aider davantage l'explication de la résolution de la possibilité d'empêcher les utilisateurs de supprimer, de pousser et de contribuer à la branche master (ou aux autres branches de votre choix) au niveau du référentiel, pas au niveau global

Notez que sur la base de notre VSTS, nous avions déjà des utilisateurs ajoutés à l'équipe "globale". Je n'ai pas supprimé ces utilisateurs, mais les ai plutôt ajoutés à (2) groupes distincts.

  • Développeurs
  • Administrateurs

1) Accédez à votre écran VSTS de base (ce sera par défaut _ /_projects dans l'URL.

enter image description here

2) Cliquez sur le rouage et sélectionnez "Sécurité"

enter image description here

3) À l'extrême gauche, sélectionnez "Créer un groupe" et nommez-le "Développeurs". Une fois le groupe créé, sélectionnez-le et dans la section centrale, sélectionnez "Membres". Ajoutez tous les utilisateurs que vous NE PAS souhaitez avoir des droits de contribution à la branche "maître" de ce groupe. (note - vos utilisateurs doivent déjà être ajoutés à VSTS avant cette étape).

enter image description here

4) Créez le groupe "Administrateurs" et ajoutez les utilisateurs auxquels vous VOULEZ avoir accès. (Remarque - si vos utilisateurs du groupe "Administrateurs" sont déjà ajoutés à VSTS au niveau global ou au niveau du projet, vous pouvez ignorer cette étape. Je l'ai fait malgré tout).

5) Revenez à la page d'accueil VSTS (/ _projects) et sélectionnez votre référentiel dont vous souhaitez restreindre l'accès à la branche principale. Sélectionnez "Contrôle de version". Sur le côté gauche, sélectionnez la branche "maître". Dans la section du milieu, sélectionnez "Sécurité". Ajoutez le groupe "Développeurs. Sélectionnez le groupe" Développeurs "(une fois ajouté) et définissez l'accès à" Refuser "pour:

  • Contribuer (ce sera pousser
  • Modifier les politiques
  • Force Push
  • Gérer les autorisations

enter image description here

2
Rob Scott

Je crée généralement un groupe VSO spécial comme "Devs", puis j'y place les développeurs. Ensuite, j'utilise le groupe en tant que groupe membre de contributeurs de projet, puis spécifiquement sur la branche que je souhaite protéger, j'utilise le groupe "Devs" et je définis Contribute to Deny, donc seuls les membres du groupe "Devs" ont la contribution refusée , mais par exemple Les administrateurs de projet peuvent toujours le pousser.

Si vous définissez Contribute sur Refuser directement sur le groupe Contributeurs, personne ne peut pousser dans la branche, pas même les administrateurs et même si vous définissez spécifiquement Autoriser sur leur Contribute, simplement parce que Refuser est plus fort que Autoriser - à moins que vous apportiez des modifications plus vastes à la groupes originaux.

0
Santhos