【问题标题】:Add CLA confirmation to pull request process in GitHub [closed]将 CLA 确认添加到 GitHub 中的拉取请求流程
【发布时间】:2023-01-13 12:52:40
【问题描述】:

需要将哪些具体步骤放在一起才能添加一个步骤,要求任何贡献者在尝试向公共 GitHub 存储库提交拉取请求时单击按钮以“同意”贡献者许可协议 CLA?

这似乎是一个广泛的用例,因为每个开源项目都必须确保任何贡献的代码都来自已授予开源项目合法使用拉取请求中包含的代码的权利的来源。例如,证明贡献者有权贡献代码等。

我已阅读this link 的 GitHub Checks 文档和this other link 的 Checks API 文档。我曾想象过使用来自存储库所有者帐户的 CLI 命令设置它,该命令上传许可证文本,包括用于附加“接受”按钮的任何参数以及用于将带有按钮的许可证放置在开始时的特定位置的任何参数拉取请求工作流程。

但是最好的方法是什么?

应遵循哪些具体步骤,包括代码。

【问题讨论】:

    标签: github github-api licensing github-app


    【解决方案1】:

    您需要添加一个 CI 检查来验证 CLA 是否已签名,如果没有则失败。 CLA 必须托管在一个单独的网站上,并具有某种 API,CI 检查必须调出该 API 才能执行此操作。为此所需的代码非常庞大,无法在此处提供,而且它也是根据您的特定用例定制的。

    例如,如果您使用 GitHub Actions,您只需设置一个操作来爬取作者和提交者电子邮件地址的整个提交范围,并将它们发送到您的服务以进行验证。如果全部通过,则检查成功;否则,检查将打印一条错误消息并失败。

    您可以使用 git log --format='%ae %ce' BASE..HEAD 替换 BASEHEAD 来爬取提交历史记录。

    请注意,许多开源项目(例如 Git)使用 Git 签名来声明开发人员和任何贡献者拥有 agreed to the Developer Certificate of Origin,这是他们有权根据项目条款许可代码的声明。这比 CLA 更灵活,因为它只能用于某些代码而不能用于其他代码,它在许多用例中更容易,并且它对不想授予比许可证更多权利的开源开发人员的敌意更少,或者谁不想授予全权更改许可证,而 CLA 通常会这样做。这意味着实际上,更多的开发人员将希望并且能够为您的项目做出贡献。

    如果你想这样做,你可以简单地使用 git log 爬取与以前相同的提交范围,只需检查每个提交者和作者是否有一个 Signed-off-by 条目。或者,you can use the built-in GitHub functionality for that

    【讨论】:

    • 您在答案部分发布了 cmets。如果您认为这些 cmet 中的任何一个应该保留,请删除您的“答案”并将您输入的简明版本作为 cmets 放在 OP 下方。
    • 我确实回答了这个问题,并且还提供了有关替代方法的相关上下文,该方法也可能满足您的需求并且需要更少的代码。
    猜你喜欢
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2012-02-12
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多