Eclipse 破折号许可证节点
这个包装器可以方便地整合和运行 Eclipse Dash 许可证 Eclipse 基金会项目存储器中的工具,包括本地和GitHub上的CI(即Pull Evolutions). 这样做是及早捕获任何不兼容或许可证不明确的3PP组件的最佳办法。 可以选择, dash-licenses 可以运行在 automatic IP review mode,以 Eclipse Foundation Gitlab 为例,自动创建 IP Check 门票,每3PP 组件中有一个失败的门票,供进一步检查. 这些入场券往往可以在几分钟内自动获得批准.
运行时间要求
- 调用
bash node.js已安装node可执行文件在路径中- 在 Linux (测试) 上, 可能使用 Windows 子系统为 Linux (WSL) 在 mac 和 Windows 上工作
- 要运行
dash-licenses:JDK或JRE 11或以后安装java可执行文件在路径中 - 要运行
dash-licenses内 自动审查模式数字 :- 由Eclipse项目参与者在Eclipse Foundation Gitlab上生成的 PAT(个人访问托肯)
- 本地运行: PAT 需要设置在环境变量中
DASH_TOKEN例如.export DASH_TOKEN=<PAT> - GitHub 工作流程运行: PAT 需要设置为 GitHub 密钥,然后在 GitHub 工作流程中用于定义环境变量
DASH_TOKEN注: GitHub 对于来自叉子的 PR , 无法获取机密. 这意味着"自动IP审查模式"不能被用在GitHub上,用于来自非承诺者的PR或来自来自来自分叉中分支的被承诺者的PR.
如何安装和使用
从此寄存器生成的 npm 软件包包含 dash-licenses-wrapper.js 使用脚本 dash-licenses under-the-hood,一个使用包和一些示例配置文件的 GitHub 工作流程实例.
要将此软件包作为“ devdependency” 安装到您的项目中, 请根据项目 npm 客户端使用您项目根部的以下命令之一 :
# yarn:
# note: if prompted to do so, you may need to add option "--ignore-workspace-root-check"
yarn add @eclipse-dash/nodejs-wrapper --dev
# npm:
npm install @eclipse-dash/nodejs-wrapper --save-dev
安装后,您可以从 repo 根进行许可证检查,其命令如下:
# using yarn lock file as input (default)
npx dash-licenses-wrapper
# using npm lock file as input
npx dash-licenses-wrapper --inputFile=./package-lock.json
要得到帮助 使用包装,做:
npx dash-licenses-wrapper --help
可选择添加一个或多个 scripts 项目根中的条目 package.json那叫"包装" 和通缉犯辩论 例如:
"scripts": {
"license:check": "npm run dash-licenses-wrapper --inputFile=./package-lock.json",
"license:check:review": "npm run dash-licenses-wrapper --inputFile=./package-lock.json --review --project=ecd.cdt-cloud",
可以使用配置文件,而不是在 CLI 上添加所有想要的选项或 scripts 输入。 关于配置文件的细节,见下文一节.
npx dash-licenses-wrapper --configFile=./configs/license-check-config.json
配置文件
可以使用配置文件 。 其中所定义的值将覆盖包设默认值,自身会被CLI所覆盖.
dashLicensesConfig.json数字 :
{
"project": "ecd.theia",
"review": true,
"inputFile": "./package-lock.json",
"batch": "50",
"timeout": "240",
"exclusionsFile": "configs/license-check-exclusions.json",
"summaryFile": "dash-licenses-summary.txt"
}
配置文件可以这样使用 :
npx dash-licenses-wrapper --configFile=configs/dashLicensesConfig.json
微调结果: 排除文件
dash-licenses 目的是帮助Eclipse基金会的项目管理他们的3PP的许可证方面,而不是绝对的"真理仲裁者". 因此,一个项目可能希望一些据报需要更多审查的依赖性立即被"忽略". 这意味着 dash-licenses 将仍然处理这些,但包件不会把它们算作未通过检查。 如果只报告被排除在外的 3PP dash-licenses 由于需要进一步检查, 包装将返回一个成功状态代码.
这个 exclusions file 包含每行一个依赖性,并附有一个可选的注释,可用于跟踪排除依赖性的理由,从而避免许可证检查失败. 例如,在审查中但据信拥有相容许可证的依赖性方面,这一点可能是有益的.
{
"<3PP as reported by dash-licenses>": "<comment>",
"<another 3PP>": "<comment>"
}
实例情景:一个重要的拉动请求(PR)增加了3PP的依赖性,项目认为其许可证是相容的,但为此 dash-licenses 不同意(例如因为得分低). 依赖性被提交IP团队进行进一步分析,但不能被自动批准,很快. 在此期间,为了避免延迟合并重要的公关或合并,并使得"License Check"的CI工作失败,直到依赖关系得到正式批准,可以将其添加到其中 exclusions file数字 :
假设项目排除文件是 configs/license-check-exclusions.json
添加以下条目: 第一个字段是所报的 3PP dash-licenses 而第二个字段是一个可选的注释,可以用来跟踪排除依赖性不成功许可证检查的原因. 例如:
"npm/npmjs/-/<some dependency>/1.2.3": "We believe this dependency is license-compatible. Under review by the IP team to confirm: https://gitlab.eclipse.org/eclipsefdn/emo-team/iplab/-/issues/555555",
然后可以使用 CLI 参数调用包装器 --exclusions 指着 exclusions 文件, 像这样 :
npx dash-licenses-wrapper --inputFile=./package-lock.json --exclusions=configs/license-check-exclusions.json
排除文件 : <repo_root>/dependency-check-baseline.json
GitHub 工作流程
目录中提供了运行许可证检查的示例工作流程 examples (默认情况下) node_modules/@eclipse-dash/nodejs-wrapper/examples/license-check-workflow.yml) (中文(简体) ). 它可以复制到 GitHub 项目的目录 <repo root>/.github/workflows 并适应给定项目.
如果项目增加了 scripts 在根中输入 package.json 以运行许可证检查,该检查可用于代替 npx dash-licenses-wrapper [...]. e.g. (中文(简体) ). yarn license:check [...]。 。 。 .
运行效率很高 dash-licenses 内 review cI中模式,可以自动创建 IP 检查票,每个3PP 组件有一个失败检查. 要做到这一点,一个承诺者(拥有写入权限的用户)需要设置一个包含 Eclipse Foundation Gitlab PAT 的 GitHub 秘密,并在工作流程中使用它,以便环境可变 DASH_TOKEN 被设定与它。 请注意,出于安全原因,GitHub只允许在PR作者是罪犯时使用这个秘密. 如果不是那样的话 包装器会掉到不使用 review 模式,IP票应当根据需要手动打开.
鸣谢
这项工作的基础是: Eclipse Theia 主 git 仓库爱立信等人的作品. 主要为脚本 检查 3pp 许可证.js。 。 。 .