如何正确设置 Github 应用程序提交者以显示应用程序创建了提交?

How to correctly set a Github App committer to show the app created the commit?

使用 GitHub Api 时,您可以提供作者和提交者信息,例如当您 PUT 一个 content 文件时。

我希望能够将 GitHub 应用程序用作 committer,以便人们了解提交是使用第三方工具完成的,并且作者信息作为经过身份验证的用户保存.

目前我正在使用应用程序名称作为 committername 和应用程序域的电子邮件。但这根本不会将提交绑定到应用程序(例如:我必须使用该电子邮件创建一个机器人帐户才能显示任何类型的个人资料等,但这不会真正绑定到我的 Github应用程序)。

正确的做法是什么?或者我不应该尝试将应用程序用作 committer 而只是将经过身份验证的用户用作 committer?

您可以使用您提到的相同 content api 来确定您需要什么。您通过创建文件获得的响应是​​一个 json,它将告诉您分配给您的 github 应用程序的用户 ID。注意 commit 下的 author 对象,你应该看到这样的东西:

    curl \
      -X PUT \
      -H "Authorization: token ${TOKEN}" \
      -H "Accept: application/vnd.github.v3+json" \
      https://api.github.com/repos/msgongora/fubectl/contents/test-file \
      -d '{"message":"message","content":"Y29udGVudA==","branch":"mrsg"}'

    {
      "content": {
      ...
      "commit": {
            ...
            "author": {
                "name": "myciapp[bot]",
                "email": "1234545665+myciapp[bot]@users.noreply.github.com",
                "date": "2021-04-07T06:28:18Z"
            },
    ...
    }

完成后,您可以为您的应用设置名称和电子邮件,就像为普通用户设置一样:

git config --global user.name "myciapp[bot]"
git config --global user.email 1234545665+myciapp[bot]@users.noreply.github.com

如果您对如何从 Marcel 的示例中获取 TOKEN 感到困惑,就像我一样,这里有一个命令,您可以从 shell 中获取 运行。您需要您的应用 ID(数字)、应用私钥和您的存储库名称。

export APP_ID=123456
export APP_SECRET="$(cat app.private-key.pem)"
export GH_REPO=owner/repo
export TOKEN=$(bash get_github_app_token.sh)
curl -X PUT \
    -H "Authorization: token ${TOKEN}" \
    -H "Accept: application/vnd.github.v3+json" \
    https://api.github.com/repos/$GH_REPO/contents/test-file \
    -d '{"message":"message","content":"Y29udGVudA==","branch":"test"}'

这将在分支 test 上创建一个提交。分支必须存在。 该命令将 return 一个需要凭据的 JSON。 这需要 open-ssljqcurlthis neat script