如何在 API 触发的 repo 导入 GitLab 中包含 GitHub 问题和 PR?

Posted

技术标签:

【中文标题】如何在 API 触发的 repo 导入 GitLab 中包含 GitHub 问题和 PR?【英文标题】:How to include GitHub issues & PRs in API-triggered repo import into GitLab? 【发布时间】:2019-01-18 22:30:55 【问题描述】:

许多学术组织都存在于 GitHub 上,但也可能有一个自托管的 GitLab CE 实例。

为了自动将前者完全备份到后者,他们可能想要运行某种脚本来触发他们的 GitLab 从他们的 GitHub 组织导入所有 repos。这可以通过带有github_importer (docu) 的GUI 实现。对于许多 repos 来说,手动和连续是不可行的。

使用 GitLab 的 Create projectImport file API,我将这段 (Bash) 代码拼凑在一起,它从给定的 GitHub 存储库创建 GitLab 项目:

curl --request POST --header "PRIVATE-TOKEN: $API_SCOPE" \ --form "namespace_id=$GROUP_ID" \ --form "path=$REPO" \ --form "import_url=https://github.com/$ORG/$REPO \ https://git.domain.edu/api/v4/projects/

ORG 将是 GitHub 上的源组织,GROUP_ID 将是 GitLab CE 实例上的专用 GitHub-archive 组。

但是,这只会导入文件和 Git 历史记录,而不是 GitHub 问题、PR、标签等,但这些都是完整备份所需要的。所以,我想知道:

    是否有与此任务相关的第三个 API 端点? /projects/import 似乎需要一个 file 属性,但尝试先从 GitHub 读取文件列表,对于可行的备份解决方案而言,可能会过快耗尽 API 限制。 是否有另一个--form "" 标志可以添加到/projects 请求中,使其行为类似于github_importer? 后者是否可能有未记录的 API? 是否需要使用gitlab-rake import:github[…]

感谢您对上述问题的任何提示,或指向现有解决方案/工具/脚本的指针,无论语言如何。谢谢!

PS:是的,与 GitLab's built-in Repository mirroring 相比,上面的脚本有点过头了,但这也不包括问题、PR 和标签。

【问题讨论】:

【参考方案1】:

截至 2018 年 8 月,4. 似乎是唯一的答案。一旦GitLab's own "Import repositories API endpoint" issue 实施,它可能成为1. 的一个选项。

【讨论】:

以上是关于如何在 API 触发的 repo 导入 GitLab 中包含 GitHub 问题和 PR?的主要内容,如果未能解决你的问题,请参考以下文章

注册 Nuxt 插件:全局与手动导入

Gitlab CI/CD 到 Digital Ocean 使用 docker-compose 进行多个 repos

用于 ARM 部署的 GitHub 操作

Github API 列出所有存储库和 repo 的内容

如何使用 GitHub API v3 创建提交并推送到 repo?

在 github 操作中触发工作流之前,我们可以等待另一个 repo 工作流完成吗?