3
votes

Azure Devops - Hooks Git côté serveur

Comment pouvons-nous implémenter des hooks côté serveur, ou toute solution similaire, pour restreindre git push dans git server?

Par exemple, nous voulons désactiver le push de commits contenant des fichiers * .class.


1 commentaires

Le hook de service ne peut pas vous aider, car le hook n'a démarré qu'APRÈS le code est poussé, vous ne pouvez pas saisir le moment précédent. la meilleure chose est d'utiliser le fichier .gitignore .


3 Réponses :


3
votes

Je ne pense pas qu'Azure DevOps utilise des hooks.

Vous pouvez utiliser Stratégies de branche pour utiliser un service de validation externe (si je comprends bien, cela utilise des web hooks).

Supplémentaire: l'état de cette requête User Voice indique que ce qui précède est la réponse officielle.

Mais peut-être que le cas le plus simple serait .gitignore et les révisions de code?


7 commentaires

Azure DevOps possède des services hooks - docs .microsoft.com / fr-fr / azure / devops / service-hooks / services‌ /… Branch Politiques uniquement pour fusionner entre les branches, pas pour chaque push.


Si je comprends bien, les stratégies de branche permettent d'appliquer des restrictions pour désactiver le push direct sans pull requests. Mais je ne trouve pas de moyen d'inspecter les métadonnées et le contenu des validations.


À propos des hooks de service - Je comprends que je peux m'abonner à des événements push, mais uniquement à des fins de notification. L'événement push est-il annulable?


@Yael Azure DevOps prend en charge les hooks Web pour diverses choses, celles-ci sont uniquement push. Les stratégies de branche permettent également un service de validation externe qui permet une réponse.


Salut @Richard, désolé, j'ai vraiment besoin de plus de conseils. Pouvez-vous expliquer comment je peux utiliser les politiques de branche pour restreindre la poussée des commits en fonction de leur contenu? Merci!


@Yael Vous devrez implémenter un service pour héberger la logique. Cela signifiera le déploiement vers un point accessible depuis Azure DevOps. Il n'y a rien d'incorporé.


Pour tous ceux qui recherchent également les commentaires depuis la fermeture d'Uservoice: developercommunity.visualstudio.com/idea/365841/… Veuillez voter pour que MS en soit conscient au moins ...



3
votes

Ce que je fais, c'est utiliser l'option de compilation avec des stratégies dans Azure DevOps. Ceci est mon fichier azure-pipelines.yml :

---
trigger:
  branches:
    exclude:
      - '*'

pool:
  vmImage: 'ubuntu-latest'

steps:
  - script: sudo apt-get install python3-pip
    displayName: 'Install Python PIP'

  - script: sudo apt-get install python3-setuptools
    condition: succeeded()
    displayName: Install Python SetupTools

  - script: sudo pip3 install -r requirements.txt
    condition: succeeded()
    displayName: Install Python PIP Packages

  - task: PythonScript@0
    inputs:
      scriptSource: filePath
      scriptPath: hooks/lint_checker.py
      pythonInterpreter: python3
    condition: succeeded()
    displayName: Lint Checker


0 commentaires

2
votes

Utilisez les politiques de branche et définissez la fusion uniquement avec PR, une fois que la poussée directe vers la branche sera désactivée, vous pouvez ignorer ces politiques pour certains utilisateurs (utilisateurs de build ou administrateurs) entrez la description de l'image ici


0 commentaires