hub-mirror-action
hub-mirror-action copied to clipboard
无法同步私有仓库
能否给出解决方案将 github 的私有仓库同步到 gitee 的私有仓库?
@yi-Xu-0100 目前暂无支持计划。
另外,这个如果加的话,需要引入新的配置项:
- 目的端的token:用于创建私有仓。
- 源端的token:用于访问私有仓。
非常感谢,期待未来的更新,暂时对相关方面作不同步处理。☺
求支持私有仓库 👍
求支持私有仓库
我也遇到了不能同步私有仓库的问题:
通过actions/github-script和github-token获取私有库名成功,但是Yikun/hub-mirror-action@master下载github库的时候失败,错误如下
并且将仓库设为公开后同步成功
不知道这个是否是因为hub-morror-action还不支持同步私有库,如果是的话希望能进行支持,respect
@yi-Xu-0100 突然想到,如果依赖你的action获取私有仓库(替代src_token),加上把dst_key分别配置到github和gitee侧(替代src_key),再加上https://github.com/Yikun/hub-mirror-action/pull/152 。
是不是就可以支持仅私有仓同步了?
另外,之所以不想增加私有仓的同步是因为我觉得权限有点高,因为一些误配置导致私有仓泄露。
另外,前提是你的action支持gitee的repo list。
@Yikun 首先,我的 repo-list-generator 暂时只是支持获取 github 的仓库列表,只是为了方便获得仓库目录用来同步,后续会尝试实现 gitee 端的功能。
但是我对这个同步私有仓库有一定的建议。
之所以不想增加私有仓的同步是因为我觉得权限有点高,因为一些误配置导致私有仓泄露。
我们可以增加一个参数用来同步私有仓库。比如:private: true(default: false)
。也就是只有当 private
设置参数为 true
时,会将仓库名单全部同步到私有仓库(公有->私有,私有->私有)。
这样,我们不会考虑将私用同步到公有的可能,如果有这个需要,我建议是直接将仓库公有后,再同步。也就是从源头杜绝操作私有仓库公有化。
而私有仓库的同步,则只有个人设置相关参数用来控制同步私有仓库,所以理论上是自己操作完成的。
最后,对于会将仓库名单全部同步到私有仓库(公有->私有,私有->私有),则是为了将公有仓库转私有,或者私有仓库同步的2种问题的共同解决。也同时是建议使用 static_list
去完成设置的。
我们可以增加一个参数用来同步私有仓库。比如:private: true(default: false)。
这个就是 https://github.com/Yikun/hub-mirror-action/pull/152 做的事情。cc @dislazy
如果后续我们想不依赖repo-list-generator的话,我们也可以新增src_private: false/true/all
来控制源仓的获取。当然,前提是src_token也支持了。
另外,再想想:
- 参数命名:
private
VSdst_private
VSdst_visibility
,因为后续获取会存在src_private/visibility
,来控制是否同步源private仓库。 - 参数值:
dst_private
true代表同步为私有仓,false代表同步为公有仓,后续是不是还会有个auto
,来根据src repo类型自动处理。 - visibility是不是更合适?
- dst_visibility:
private/public/auto
,默认为auto
- src_visibility:
private/public/all
,默认为public
当然,对于 #152 来说,先支持:dst_visibility: private/public
,默认为public
。
@OxalisCu
通过actions/github-script和github-token获取私有库名成功,但是Yikun/hub-mirror-action@master下载github库的时候失败
这个是因为http模式目前无法读取私有仓,所以,当上面评论的实现完成,我们仅支持ssh模式的私有仓同步。
- name: Get private repository list
id: repo
uses: yi-Xu-0100/[email protected]
with:
# 使用src_token获取私有仓
my_token: ${{ secrets.SRC_TOKEN }}
- name: Mirror private repository
uses: Yikun/hub-mirror-action@master
with:
src: github/Yikun
dst: gitee/yikunkero
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
# 使用静态列表同步私有仓
static_list: ${{ steps.repo.outputs. repoList_PRIVATE }}
# 使用ssh模式,并且需要用户将dst_key配置到远端及目的端
clone_style: ssh
# 同步仓库的可见性为private,如果已存在则直接同步,不做可见性更新。
dst_visibility: private
当 #152 支持后。单独同步私有仓的最终形式应该是这样的。
@Yikun 就像 #49 所说的,如果想获取私有仓库,src_token 应该也是需要的。
@yi-Xu-0100 hub-mirror–action不需要src_token,只需要用repo list拿到私有仓列表就行了。
遇到了这个问题 保持关注
因有个人私有仓库的备份需求,且暂未找到私有仓库的同步方法。因此,参考 Yikun/hub-mirror-action 配置,使用 golang 重写同步功能 x-actions/git-mirrors,支持私有仓库从 github 同步到 gitee,一个不成熟的测试示例见 https://github.com/xiexianbin/gitee/commit/702b899c266dd8cce8ee003932cc2217bd6e6fce
@xiexianbin 赞一个~ 可以参考这个:https://github.com/Yikun/hub-mirror-action/issues/88#issuecomment-775640620 之前也有类似的想法。
因为可能每个同学的背景不太一样,所以,有不同种的语言背景,如果我们有多个语言的版本,可以合一作为一个组织,这样后续各种语言背景的同学,都可以参与进来。
https://github.com/Yikun/hub-mirror-action/pull/160 这个PR添加了dst_visibility
参数,来控制同步的目的仓是私有仓还是共有仓。
主要背景是:Gitee由于一些原因改变策略,普通用户无法直接创建共有仓库,因此,对于github到gitee同步的用户,可能亟需以私仓同步的功能。
我在 https://github.com/Yikun/hub-mirror-action/issues/38#issuecomment-1094033841 也提及了,后续API的可能演进方向:
- dst_visibility: private/public/auto,private表示同步为私有仓,public同步为共有仓(当前默认行为),auto表示根据原仓属性自动读取。
- src_visibility: private/public/all。public表示只同步共有仓,private表示只同步私有仓,all表示全部仓库都同步
当然,这个参数的引入,也意味着在一定程度上已经支持了私有仓的同步:
- name: Mirror private repo.
uses: Yikun/hub-mirror-action@master
with:
src: github/Yikun
dst: gitee/yikunkero
# 使用ssh方式clone,保证原仓的可读性
clone_style: "ssh"
# ssh模式目前需要将dst_key配置到原仓和目的仓
dst_key: ${{ secrets.GITEE_AND_GITHUB_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
# 目前列表只能指定为静态
static_list: 'hashes,simple-spring'
# 目的端的可见性设置为私有仓
dst_visibility: 'private'
@Yikun 听起来不错。
@xiexianbin 赞一个~ 可以参考这个:#88 (comment) 之前也有类似的想法。
因为可能每个同学的背景不太一样,所以,有不同种的语言背景,如果我们有多个语言的版本,可以合一作为一个组织,这样后续各种语言背景的同学,都可以参与进来。
听起来不错,支持
插眼关注,私有仓库现在是不是只能通过提高token权限这么弄呢