问题标签 [github-app]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
371 浏览

git - 验证 GitHub 拉取请求的标题和正文

有没有办法验证 GitHub 拉取请求的标题和正文。我知道我们可以使用拉取请求模板来预填充拉取请求消息。GitHub 也确实提供了针对每个提交运行的WebHooksChecks API 。

但是我正在寻找某种方式,当贡献者点击“发送拉取请求”按钮并基于验证接受拒绝拉取请求。

我正在考虑通过GitHub App来实现这一点,它将安装在组织级别的存储库中。

我不关心检查提交。

我遇到了ContentReferenceEvent,它似乎提供了一个类似但不完整的功能,其中仅读取URLcontent_reference并触发事件。我希望这也能提供一种获取 PullRequest 的标题和正文的方法。

但是,使用内容附件表示此功能仅供测试使用:

注意:内容附件 API 目前处于公开测试阶段,仅可用于 GitHub 应用程序。在此期间,功能和要求可能随时更改。

由于处于测试阶段,我无法使用此功能。

请让我知道还有哪些其他替代方案,或者如果不存在这样的替代方案,我该如何自己实现。

0 投票
1 回答
726 浏览

node.js - 传递给 createTokenAuth 的令牌不是字符串:octokit, auth-token

我正在尝试构建一个 GitHub 应用程序并遵循https://probot.github.io/docs/https://octokit.github.io/rest.js/v17#authentication。它基本上是一个nodejs应用程序。

我没有使用 nodejs 或 typescript 甚至 probot 框架的经验。

PRIVATE_KEY_PATH 位于.env文件中,如下所示:

.pem文件位于项目的根目录中

typeof 打印字符串: -------------TypeOf token ---- string

index.js

我不断收到以下错误:

无法通过互联网找到有关此主题的太多帮助。我什至尝试浏览 octokit https://github.com/octokit/auth-token.js/blob/master/src/index.ts的代码,看来我的代码没有做错任何事情。

除了文档之外,没有太多资源可以参考 GitHub 应用程序或 probot 框架的问题。StackOverflow 也只有大约 20-30 个与 GitHub 应用程序或 probot 框架相关的问题。

编辑 1:开始

运行以下代码:

产生以下错误:

编辑 1:结束

0 投票
1 回答
153 浏览

github - 通用 pull_request 事件和其他更具体的 pull_request 事件(如 pull_request.opened)的意义

我正在使用nodejsprobot框架开发一个GitHub 应用程序。我可以看到 probot 框架的Application类(https://probot.github.io/api/latest/classes/application.html)包含如下事件:

我注意到,当单击“创建拉取请求”按钮时,会触发pull_requestpull_request.opened事件。

为了理解在单击同一个按钮时触发多个看似相似的事件的这种行为,我尝试重新打开一个关闭的请求并打印出pull_request事件和pull_request.reopened事件的 Context 对象。

我对这两个上下文进行了差异比较,发现两个事件返回的上下文是相同的,只是pull_request事件的上下文包含在附加属性下面:

我们知道返回的上下文对象的一般格式如下:

上述信息在两种情况下都存在。我们可以看到,这也告诉我们执行的具体操作,这由context.payload.action表示。因此,如果有人要求获取pull_request.opened,他/她可以通过使用pull_request事件来做到这一点,如下所示:

并且不需要关心其他更具体的事件(这里是pull_request.opened),即除了从上面的代码中实现的之外,下面的代码不会提供真正的额外帮助:

所以这是困扰我的问题:  pull_request 事件的目的是什么,如果它的其他特定形式(如 pull_request.reopened)没有不同的信息(更准确地说,如果它们的上下文不包含不同的信息)?

我很确定这背后确实隐藏着一些智慧。我在互联网上找不到任何东西,文档中没有任何东西可以解释这一点。

请帮助我了解隐藏的智慧。

编辑 1:开始

忘了提到一个观察,那就是:重新打开拉取请求也会触发issue_comment.created事件。因此,一个操作(单击Create Pull Request)触发了三个事件。

编辑 2:开始

0 投票
1 回答
138 浏览

github - 如果 PR 消息正文验证失败,则拒绝 Pull Request 创建请求

如果某些条件失败,我们有没有办法拒绝创建拉取请求?我正在nodejsprobot中开发 GitHub 应用程序,并且希望在开发人员单击“创建拉取请求”按钮时拒绝创建拉取请求(例如检查拉取请求正文中是否存在某些模式)拉取请求正文失败。

因此,从根本上说,如果某些验证失败,则不应首先创建拉取请求(并且应将用户带回 PR 创建页面)。

即,如果拉取请求正文(或任何其他逻辑)的验证失败,则在同一个拉取请求创建页面上。

0 投票
1 回答
715 浏览

node.js - 错误事件:未找到;从另一个事件触发事件时:nodejs中内置的probot应用程序

我正在 probot 和 nodejs 中构建一个 GitHub 应用程序,并尝试在pull_request.synchronize事件发生时更新 PR。我知道这没有多大意义,但关键是我希望能够在某个事件发生时更新 PR。

我每次都得到以下错误:

为什么它无法从上下文中获取详细信息,而实际上上下文确实由我的控制台语句打印出来并包含 pull_request 详细信息。

我只是 probot 和 nodejs 的初学者,所以我不确定这是否与语法有关。

0 投票
1 回答
269 浏览

node.js - 如何通过 GitHub APP API 更新拉取请求?

我开发了 GitHub APP 来管理拉取请求过程,我正在使用两个 API
1.状态检查 API
2. update-a-pull-request API
当请求更新由一个人创建的现有拉取请求时,我收到此错误消息的用户。

如何获得具有正确权限的安装令牌?

要执行 API 调用,我需要令牌,我以这种方式生成令牌:

  • 在 GitHub 帐户中创建应用程序

  • 在 APP 中创建了 PEM 私钥

  • 在代码中,使用 PEM 密钥创建 JWT 令牌

  • 使用 JWT 令牌创建安装令牌,如下所示

标题

获取安装令牌

更新由其中一位用户创建的现有拉取请求

0 投票
1 回答
146 浏览

github - 在没有用户交互的情况下以编程方式创建 github 应用程序?

就像标题提到的那样,我检查了以下资源:

似乎需要手动用户交互来创建应用程序,因为它需要将人们重定向到 GitHub 以创建新的 GitHub 应用程序。

0 投票
2 回答
520 浏览

node.js - GitHub API 在尝试生成访问令牌时返回 401

我正在尝试通过 GitHub API 为我的 GitHub 应用程序生成访问令牌。

我收到 401 未经授权的响应错误:

expiration time' claim ('exp') is too far in the future

我的代码:

Github 文档 - https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/

0 投票
2 回答
564 浏览

github - 如何解决无法访问特定 GitHub 集成的问题

如果 GitHub 集成失败,一般会发生什么。假设我们有一个验证拉取请求的 GitHub 应用程序。如果那个应用程序宕机了,GitHub 会显示一些关于它的消息吗?

当应用程序未启动时,拉取请求似乎会通过。这是相当危险的。我的意思是,GitHub 是否为 GitHub 集成提供了任何后备机制。

编辑 1:开始

我只是想知道,由于 webhook 是从 GitHub 端发送到我们在应用程序设置中配置的 webhook url,如果 webhook url 无法访问,GitHub 有没有办法通知用户。

编辑 1:结束

0 投票
1 回答
309 浏览

github - 无法在我的集成中实施检查,为创建检查方法获取“地图未定义”

我正在尝试在我的 GitHub 应用程序中实施 Checks。我的应用程序是用 probot 构建的。

我只是无法实施检查。我尝试过查看演示 ruby​​ 示例的文档,其中包括几个不同的设置(不确定 probot 是否需要)。我只是对那里的例子感到困惑。

下面是驻留在我的 index.js 中的代码:

我得到以下错误

错误日志抱怨 index.js:24:35,这正是该create行中的方法await context.github.checks.create

上面的代码是否足以创建检查test-check-1还是我还需要处理其他事情。我已经在我的仓库的分支保护设置下启用了“在合并之前通过所需的状态检查”选项。该部分显示对不起,我们在上周找不到此存储库的任何状态检查。

不知道如何连接一切。

编辑 1:开始

以下是包含@OscarDOM 建议的所需参数后的代码:-

不幸的是,我仍然在完全相同的行和列上遇到相同的错误。

编辑 1:结束

编辑 2:开始

以下是修正 mediaType 参数后的最终工作代码:

请注意,我还必须纠正一个错误,那就是价值所有者参数。正确的方法是指定 context.payload.repository.owner.login ,这是我最近从StackOverflow 帖子中学到的

编辑 2:结束