git 仓库贡献准入规则:CLA 协议签署与 /compile 构建校验操作规范

仓库贡献准入规则:CLA 协议签署与 /compile 构建校验操作规范

CLA签署 + /compile构建 全解析(PR提交配套自动化校验)

一、CLA 签署是什么

1. 全称

CLA = Contributor License Agreement 贡献者许可协议

2. 作用

开源/企业代码仓库强制协议:

你向项目提交代码、设计文档、配置文件(通过PR)前,必须线上签署一份协议,约定:

  • 你提交的内容(代码/文档/图片)版权归项目/公司所有;
  • 保证提交内容无侵权、无抄袭、无涉密内容;
  • 允许项目方免费使用、修改、分发你的提交内容。

3. PR场景规则

  1. 首次提交PR,仓库机器人会自动评论一条签署链接;
  2. 点开链接登录账号(GitHub/Gitee/GitLab账号)勾选同意,完成签署;
  3. 没签CLA的PR会被拦截合并,评审、CI流水线都无法正常放行;
  4. 一般一次签署长期生效,后续提交PR不用重复签。

区分:CLA和普通保密协议NDA

  • NDA:对内保密;
  • CLA:对外开源/内部共建项目的版权授权,提交代码/文档准入门槛。

二、/compile 构建是什么

1. 含义

/compile 是仓库CI自动化流水线的触发指令 (评论指令)

compile直译:编译、构建,指自动化打包、校验、渲染流程。

2. 完整流程

PR创建后,不会自动跑完整构建,需要手动在PR评论区输入指令:

复制代码
/compile

回车发送,触发后端流水线自动执行一系列检查:

  1. 文档校验:如果是设计文档(md/图片):格式规范、图片链接、目录结构、语法错误检查;
  2. 代码编译:如果有代码,编译源码、检查语法报错;
  3. 产物构建:生成静态文档站点、PDF、页面预览包;
  4. 规范扫描:命名规范、注释、目录结构是否符合团队要求;
  5. 产出报告:流水线完成后自动在PR下回复结果:成功/报错清单。

3. 为什么必须执行

  • 只有/compile构建全部通过,PR才允许评审、合并;
  • 构建失败代表你的文档/代码有问题(结构缺失、格式错乱、图片失效、编译报错),需要修改后重新执行 /compile

三、结合你的PR流程:完整操作顺序(从提交PR到合并)

  1. 上传文档/代码,创建PR(Pull Request);
  2. 检查机器人消息,完成 CLA签署(不签直接锁死PR);
  3. 在PR评论框输入 /compile 发送,触发自动化构建;
  4. 等待CI流水线跑完,确认构建全部绿灯通过
  5. 再交给同事做人工评审(对应你上一句"PR提交评审");
  6. 评审无意见、CI全绿,才能合并到主干分支。

四、常见失败场景

CLA失败

  • 未点击链接签署;账号登录不一致(提交代码的账号≠签署账号);企业账号权限未同步。

/compile 构建失败

  1. 设计文档没搭好目录结构(和你上一句"必须进行结构搭建"对应,结构缺失会直接构建报错);
  2. 图片路径错误、附件缺失;
  3. Markdown语法错乱、标题层级混乱;
  4. 代码存在编译报错、依赖缺失;
  5. 文件命名、存放目录不符合仓库规范。

五、通俗总结

  1. CLA签署 = 入场门票:证明你有权贡献内容,版权合规,不签不让走后续流程;
  2. /compile构建 = 自动化质检打包 :机器自动检查你的设计文档/代码有没有格式、结构、编译问题,质检合格才能找人人工评审。
    两者都是PR提交后硬性前置操作,缺一不可。

CLA签署, 需要 ,设置开源协议吗

分两种场景:要不要设置开源协议,取决于你的项目是否要开源、CLA 用途

一、先分清两个东西:CLA ≠ 开源协议

  1. CLA(贡献者协议)
    管「别人往你项目提交代码/文档时的版权授权」,对内私有仓库、对外开源仓库都能用。
  2. 开源协议(LICENSE)
    管「项目本身对外怎么复制、修改、商用分发」,只有对外公开开源才必须配置;纯企业内部私有项目不用。

二、场景1:项目纯内部私有(公司自用,不对外公开)

不需要设置开源 LICENSE 文件

  • 仓库仅公司内网/企业Gitee/Gitlab,外部人看不到代码、设计文档;
  • 你们要求签署 CLA 只是内部版权约束:防止员工提交涉密、第三方侵权内容,约定公司拥有所有产出版权;
  • 操作:只保留 CLA 签署流程,根目录不用放 MIT/Apache/GPL 等开源协议文件。

三、场景2:项目对外开源(公开到 GitHub/Gitee,任何人可拉取下载)

必须配置开源协议 LICENSE,且 CLA 配套使用

  1. 法律强制:没有开源协议时,默认保留作者全部版权,他人不能复制、修改、商用,等于"名义开源实际闭源";
  2. CLA 配合开源协议的作用:
    开源协议规定外部使用者权限,CLA 规定贡献者提交内容的版权归属 ,避免后续代码版权纠纷;
    比如 Apache2.0 开源项目,几乎都会配套 Apache CLA。
  3. 常用开源协议推荐
    • 宽松商用无限制:MIT、Apache 2.0(推荐企业开源项目,允许商用、闭源二次开发)
    • 传染性开源:GPL(修改分发后必须全部开源,商用约束极强)

四、特殊情况:内部项目但未来计划开源

建议提前两步准备

  1. 仓库根目录提前新建 LICENSE 文件,选定后续要用的开源协议;
  2. 保留现有 CLA 签署流程,统一所有历史提交的版权授权,后续开源不用补签历史贡献者。

五、结合你之前的 PR 流程总结

  1. 仅公司内部使用、不对外公开:不用设置开源协议,只维持 CLA 签署 + /compile 构建校验即可;
  2. 代码/设计文档对外公开、允许外部人下载使用:必须添加开源 LICENSE 文件,CLA 作为提交前置流程保留;
  3. CLA 签署是独立要求,和是否开源没有绑定关系,私有仓库也完全可以启用 CLA。

补充小提示

  • CLA 是提交PR时的准入校验(人提交前签);
  • LICENSE 是仓库根目录静态文件(所有人查看项目时可见);
  • 二者功能不冲突,可以单独存在,也可以搭配使用。