检查Github repo是否是使用Probot中的模板创建的



我有一个Github Bot(Probet(,我用它来处理命名约定等方面的自动化。

我也有一些团队用于控制可见性,我想知道当从特定模板创建Repo时,是否可以使用Probet来分配特定团队的访问权限。

然而,我分析了上下文对象,并在其中搜索了模板repo名称,但似乎找不到确定repo从何处创建的可靠方法。也许我错过了什么,或者这根本不可能?参见随附的代码

const templateTeamAssignment = async (context) => {
const { github, payload } = context;
const repo = payload.repository.name;
console.log("context", context);
};
module.exports = templateTeamAssignment;

有什么想法吗?

事件负载不包括您要查找的template_repository属性。但是,您可以通过使用REST API调用或GraphQL查询检索存储库的信息来检索信息。例如,试试这个

const { template_repository } = await context.github.repos.get(context.repo())

如果未设置template_repository,则表示存储库不是使用模板存储库创建的。

不幸的是,我认为目前这是不可能的。我确实设法弄清楚了baptiste-preview需要作为标头提供,以便在结果中显示is_templatetemplate_repository属性。它们也只在listForOrg()函数上可见,所以我必须循环查看结果,找到单个回购信息。

const templateTeamAssignment = async (context) => {
const { github, payload } = context;
const repo = payload.repository.name;
console.log("context", context);
console.log("stackOverflow", await context.github.repos.get(context.repo()));
console.log(
"stackOverflow",
await context.github.repos.listForOrg({
org: payload.organization.login,
headers: {
accept: "application/vnd.github.baptiste-preview+json",
},
})
);
};

当我实现这一点时,我能够看到is_template属性,但不能看到template_repository,这让我相信它还不够稳定,无法用于生产,API文档上的警告证实了这一点。想知道目前是否有人成功获得template_repository房产?

最新更新