极狐GitLab 许可和兼容性
极狐GitLab 采用 “The JiHu Edition License” 进行许可,其中包含更多限制说明。
自动化测试
为了遵守我们使用的库的许可条款,我们必须确保在添加新 gem 时检查兼容的许可证。为了自动化这个过程,我们使用了 Pivotal 的 license_finder gem。每次推送新提交时它都会运行,并验证捆绑包中的所有 gem 和节点模块是否使用与极狐GitLab 的许可证不冲突的许可证。
但是,自动化测试存在一些限制。未通过 Bundler、npm 或 Yarn 包含的 CSS、JavaScript 或 Ruby 库(例如那些手动复制到我们的 vendor
目录中的源代码树中的库),必须手动且独立地进行验证。每次使用此类库时都要小心,因为自动化测试不会从其中捕获有问题的许可证。
有些 gem 可能不会在他们的 gemspec
文件中包含他们的许可信息,并且一些 node modules 可能不会在它们的 package.json
文件中包含许可信息。License Finder 无法检测到这些,必须手动验证。
License Finder 命令
License Finder 提供了一些基本命令,您需要这些命令来管理许可证检测。
要验证检查是否通过,和/或查看导致检查失败的依赖项:
bundle exec license_finder
要将新许可证列入白名单:
license_finder permitted_licenses add MIT
要将新许可证列入黑名单:
license_finder restricted_licenses add Unlicense
如果没有自动检测到依赖项的许可证,则通知 License Finder:
license_finder licenses add my_unknown_dependency MIT
对于上述所有内容,请包含 --why "Reason"
和 --who "My Name"
,以便 decisions.yml
文件可以跟踪何时、为什么以及谁批准了依赖项。
License Finder README 中提供了有关 gem 及其命令如何工作的更多详细信息。
加密密钥
如果您的许可证是在 Customers Portal 或 License App 的本地开发或 staging 环境中创建的,则需要设置一个名为 GITLAB_LICENSE_MODE
且值为 test
的环境变量,来使用正确的解密密钥。
这些项目默认设置为使用测试许可证加密密钥。