如何在 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 project
和 Import 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?的主要内容,如果未能解决你的问题,请参考以下文章
Gitlab CI/CD 到 Digital Ocean 使用 docker-compose 进行多个 repos