极狐 GitLab

极狐GitLab 许可与兼容性

极狐GitLab 基础版 (CE) 基于 MIT 许可证条款 进行许可。极狐GitLab 企业版 (EE) 基于“极狐GitLab 企业版 (EE) 许可证”进行许可,其中包含更多限制。

自动化测试#

为了遵守我们使用的库的许可条款,每当添加新的 gem 时,我们必须检查兼容的许可证。为了自动化此过程,我们使用 Pivotal 的 许可证查找器 gem。每次推送新提交时它都会运行,并验证 bundle 中的所有 gem 和 node 模块使用的许可证是否与极狐GitLab 基础版或极狐GitLab 企业版的许可冲突。

然而,自动化测试存在一些限制。未通过 Bundler、npm 或 Yarn 包含的 CSS、JavaScript 或 Ruby 库(例如那些手动复制到我们源代码树中 vendor 目录的库),必须手动独立验证。在使用此类库时要小心,因为自动化测试不会捕获它们有问题的许可证。

有些 gem 可能未在其 gemspec 文件中包含许可证信息,有些 node 模块可能未在其 package.json 文件中包含许可证信息。这些不会被许可证查找器检测到,必须手动验证。

许可证查找器命令#

许可证查找器提供了一些基本命令,你需要用来管理许可证检测。

要验证检查是否通过,以及/或查看哪些依赖项导致检查失败:

shell
bundle exec license_finder

要允许一个新的许可证:

shell
license_finder permitted_licenses add MIT

要拒绝一个新的许可证:

shell
license_finder restricted_licenses add Unlicense

要告诉许可证查找器某个依赖项的许可证(如果未自动检测到):

shell
license_finder licenses add my_unknown_dependency MIT

对于上述所有命令,请包含 --why "原因"--who "我的名字",以便 decisions.yml 文件可以跟踪何时、为何以及谁批准了依赖项。

有关该 gem 及其命令如何工作的更多详细信息,请参阅 许可证查找器 README

获取未知或 Lead 许可软件的批准#

我们有时需要使用第三方软件,其许可证不在 Blue Oak Council 许可证列表中,或在列表中被标记为 Lead 评级。在这种情况下,使用案例需要获得法律批准,然后才能安装该软件。更多信息可 在 Handbook 中找到

要获得法律批准,请按照以下步骤操作:

  1. 创建一个新的 法律议题。确保包含尽可能多的详细信息:
    • 软件使用什么许可证?
    • 它将如何以及在哪里使用?
    • 它是被 vendored 或 forked,还是我们将使用上游项目?
    • 任何相关链接。
  2. 使用获得法律批准后,在极狐GitLab 项目中允许该软件。 参见上面的 许可证查找器命令
  3. 确保该软件也被 Omnibus 识别。针对 omnibus-gitlab 项目创建一个新的 MR。参考 这个 MR 了解更改应是什么样子。你需要编辑以下文件:
    • lib/gitlab/license/analyzer.rb
    • support/dependency_decisions.yml

加密密钥#

如果你的许可证是在本地开发或预发布环境中为 Customers Portal 或 License App 创建的,则需要设置一个名为 GITLAB_LICENSE_MODE 的环境变量,其值为 test,以使用正确的解密密钥。

这些项目默认设置为使用测试许可证加密密钥。

其他信息#

有关许可的更多信息,请参阅 开源 页面。