检查是否创建了新的拉取请求
Check if a new pull request was created
是否可以每隔 x
秒检查一次并确定是否在 github 存储库上创建了新的拉取请求,并对其执行功能(我正在使用 JavaScript 图书馆 @octokit/rest
)?
到目前为止我有
const { Octokit } = require('@octokit/rest');
const octokit = new Octokit({
auth: "REDACTED"
});
var data = (async () => {
var response = await octokit.request('/repos/foo/bar/pulls?state=all');
return response;
})();
将数据作为 github api 的响应。我如何确定是否创建了一个新的 pr,我想出的最简单的方法是 ofc 实际比较变量的长度 data
,但到目前为止我实际上无法弄清楚如何这样做。
默认情况下,pulls
按 created
排序,因此我们可以检查第 0 个索引是否有 number
属性 大于旧的 [=13] =]. (number
就像网站上显示的 #1、#4 等)。在我们等待新的 PR 期间,可能会产生多个 PR,因此我们需要过滤掉 data
以便我们可以有多个 PR 高于之前的值。
这是基于文档:
- https://octokit.github.io/rest.js/v18#pulls-list
- https://docs.github.com/en/rest/reference/pulls#list-pull-requests
并使用 curl 测试路由
const { Octokit } = require('@octokit/rest');
const octokit = new Octokit({
auth: "REDACTED"
});
const getData = () => octokit.request('/repos/foo/bar/pulls?state=all');
const getLatestPRNumber = (data) => data.length === 0 ? 0 : data[0]["number"];
const getPRsAboveNumber = (data, prNumber) => data.filter(({number}) => number > prNumber)
(async () => {
const data = await getData();
let latestPR = getLatestPRNumber(data);
setInterval(async () => {
const data = await getData();
const firstPRNumber = getLatestPRNumber(data);
if (firstPRNumber > latestPR) {
const newPRs = getPRsAboveNumber(data, latestPR);
console.log(newPRs);
latestPR = firstPRNumber;
}
}, 1000 * 60); // 1000ms * 60 = 60s
})();
如果创建的 PR 太多,那么某些 PR 将无法访问,因为 GitHub API 使用分页
根据文档:
Name
Type
In
Desc
per_page
integer
query
Results per page (max 100). Default: 30
page
integer
query
Page number of the results to fetch. Default: 1
是否可以每隔 x
秒检查一次并确定是否在 github 存储库上创建了新的拉取请求,并对其执行功能(我正在使用 JavaScript 图书馆 @octokit/rest
)?
到目前为止我有
const { Octokit } = require('@octokit/rest');
const octokit = new Octokit({
auth: "REDACTED"
});
var data = (async () => {
var response = await octokit.request('/repos/foo/bar/pulls?state=all');
return response;
})();
将数据作为 github api 的响应。我如何确定是否创建了一个新的 pr,我想出的最简单的方法是 ofc 实际比较变量的长度 data
,但到目前为止我实际上无法弄清楚如何这样做。
默认情况下,pulls
按 created
排序,因此我们可以检查第 0 个索引是否有 number
属性 大于旧的 [=13] =]. (number
就像网站上显示的 #1、#4 等)。在我们等待新的 PR 期间,可能会产生多个 PR,因此我们需要过滤掉 data
以便我们可以有多个 PR 高于之前的值。
这是基于文档:
- https://octokit.github.io/rest.js/v18#pulls-list
- https://docs.github.com/en/rest/reference/pulls#list-pull-requests
并使用 curl 测试路由
const { Octokit } = require('@octokit/rest');
const octokit = new Octokit({
auth: "REDACTED"
});
const getData = () => octokit.request('/repos/foo/bar/pulls?state=all');
const getLatestPRNumber = (data) => data.length === 0 ? 0 : data[0]["number"];
const getPRsAboveNumber = (data, prNumber) => data.filter(({number}) => number > prNumber)
(async () => {
const data = await getData();
let latestPR = getLatestPRNumber(data);
setInterval(async () => {
const data = await getData();
const firstPRNumber = getLatestPRNumber(data);
if (firstPRNumber > latestPR) {
const newPRs = getPRsAboveNumber(data, latestPR);
console.log(newPRs);
latestPR = firstPRNumber;
}
}, 1000 * 60); // 1000ms * 60 = 60s
})();
如果创建的 PR 太多,那么某些 PR 将无法访问,因为 GitHub API 使用分页
根据文档:
Name | Type | In | Desc |
---|---|---|---|
per_page | integer | query | Results per page (max 100). Default: 30 |
page | integer | query | Page number of the results to fetch. Default: 1 |