仅允许对master进行验证的提交

时间:2017-08-01 14:56:39

标签: git gitlab

上下文

我们有一个repo,托管在本地gitlab实例上。

它包含一个ressource文件,该文件应该有效。有效性由给定的脚本检查。

我想要什么

我想确保,只要在master repo上更新gitlab分支,master新头的文件就会通过验证脚本。

探讨了可能性

  • master的所有更新都应通过合并请求

    1. 我没有找到根据脚本结果启用/禁用Merge按钮的方法,
    2. 我可以在gitlab管理的裸hooks/个回购的裸git目录中上传一个脚本,但我不知道git中有pre-merge个钩子
  • 可以通过开发人员推送对master的更新

    1. 我知道如何编写和上传update钩子,它验证了裸git仓库上的主分支,
      我不知道如何阻止其他方式更新master分支

问题

使用gitlabgit,如何确保master分支的更新仅允许跳转到文件的验证版本?

1 个答案:

答案 0 :(得分:2)

使用Gitlab管道

您尝试设置的是持续集成,(在Gitlab中称为“管道”),以检查合并请求是否会通过您的脚本。 Check out the Gitlab features page

设置非常简单:

  1. 您创建了一个.gitlab-ci.yml文件which describes what script needs to be run in order to test your resource file。请注意,如果测试通过,脚本应以0退出,否则返回非零值。
  2. 根据您的项目是否是开源项目,您可以选择是否要使用Gitlab的共享运行程序。 “runner”是一个服务器应用程序,每次切换时都会运行您的脚本。您可以在自己的服务器上设置跑步者或使用Gitlab的跑步者。
  3. 一旦设置正确,GitLab将始终显示您的资源文件是否有效。
  4. A configured pipeline 来源:https://docs.gitlab.com/ee/ci/pipelines.html

    实施例

    这个简短的示例可能会帮助您设置.gitlab-ci.yml文件

    stages:
        - tests
    
    ResourceFileTests:
        stage: tests
        allow_failure: false
        script:
            - bash /path/to/the/validation_script.sh
    

    您可以使用GitLab's CI lint tool检查配置文件是否有效。