【问题标题】:Azure devops - server-side git hooksAzure devops - 服务器端 git 挂钩
【发布时间】:2019-06-10 07:16:13
【问题描述】:

我们如何实现服务器端挂钩或任何类似的解决方案,以限制 git push 进入 git 服务器?

例如,我们想要禁用包含 *.class 文件的提交的推送。

【问题讨论】:

  • 服务钩子帮不了你,因为钩子是在代码被推送之后才开始的,你无法捕捉到之前的时刻。最好使用.gitignore 文件。

标签: git tfs azure-devops azure-repos


【解决方案1】:

我不认为 Azure DevOps 使用钩子。

您可以使用Branch Policies 来使用外部验证服务(据我了解,这使用了网络挂钩)。

补充:this User Voice请求的状态表明以上为官方答复。

但也许最简单的情况是.gitignore 和代码审查?

【讨论】:

  • Azure DevOps 确实有服务挂钩 - docs.microsoft.com/en-us/azure/devops/service-hooks/services/… 分支策略仅用于分支之间的合并,而不是每次推送。
  • 据我了解,分支策略允许应用限制以禁用直接推送而无需拉取请求。但我找不到检查提交元数据和内容的方法。
  • 关于服务挂钩 - 我知道我可以订阅推送事件,但仅用于通知目的。推送事件可以取消吗?
  • @Yael Azure DevOps 为各种事物提供 web hook 支持,这些只是推送。分支策略还允许允许响应的外部验证服务。
  • 对于在 Uservoice 关闭后还在搜索反馈的任何人:developercommunity.visualstudio.com/idea/365841/… 请对此投票以至少让 MS 了解...
【解决方案2】:

我所做的是将构建选项与 Azure DevOps 中的策略一起使用。这是我的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

【讨论】:

    【解决方案3】:

    使用分支策略并设置仅与 PR 合并,之后直接推送到分支将被禁用,您可以为某些用户(构建用户或管理员)跳过这些策略

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多