简体中文 | English
一个用于在hub间(例如Github,Gitee)账户代码仓库同步的action
steps:
- name: Mirror the Github organization repos to Gitee.
uses: Yikun/hub-mirror-action@master
with:
src: github/kunpengcompute
dst: gitee/kunpengcompute
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
account_type: org
上面的配置完成了kunpencompute组织从github到gitee的同步,你可以在测试和demo找到完整用法。
src
需要被同步的源端账户名,如github/kunpengcompute,表示Github的kunpengcompute账户。dst
需要同步到的目的端账户名,如gitee/kunpengcompute,表示Gitee的kunpengcompute账户。dst_key
用于在目的端上传代码的私钥(默认可以从~/.ssh/id_rsa获取),可参考生成/添加SSH公钥或generating SSH keys生成,并确认对应公钥已经被正确配置在目的端。对应公钥,Github可以在这里配置,Gitee可以这里配置。dst_token
创建仓库的API tokens, 用于自动创建不存在的仓库,Github可以在这里找到,Gitee可以在这里找到。
account_type
默认为user,源和目的的账户类型,可以设置为org(组织)或者user(用户),目前仅支持同类型账户(即组织到组织,或用户到用户)的同步。clone_style
默认为https,可以设置为ssh或者https。cache_path
默认为'', 将代码缓存在指定目录,用于与actions/cache配合以加速镜像过程。black_list
默认为'', 配置后,黑名单中的repos将不会被同步,如“repo1,repo2,repo3”。white_list
默认为'', 配置后,仅同步白名单中的repos,如“repo1,repo2,repo3”。static_list
默认为'', 配置后,仅同步静态列表,不会再动态获取需同步列表(黑白名单机制依旧生效),如“repo1,repo2,repo3”。force_update
默认为false, 配置后,启用git push -f强制同步,注意:开启后,会强制覆盖目的端仓库。debug
默认为false, 配置后,启用debug开关,会显示所有执行命令。
同步Github的kunpengcompute组织到Gitee
- name: Organization mirror
uses: Yikun/hub-mirror-action@master
with:
src: github/kunpengcompute
dst: gitee/kunpengcompute
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
account_type: org
动态获取原端github/Yikun的repos,但仅同步名为hub-mirror-action,不同步hashes这个repo到Gittee
- name: Single repo mirror
uses: Yikun/hub-mirror-action@master
with:
src: github/Yikun
dst: gitee/yikunkero
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
white_list: "hub-mirror-action"
black_list: "hashes"
不会动态获取原端github/Yikun的repos,仅同步hub-mirror-action这个repo
- name: Black list
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: "hub-mirror-action"
使用ssh方式进行clone
- name: ssh clone style
uses: Yikun/hub-mirror-action@master
with:
src: github/Yikun
dst: gitee/yikunkero
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
clone_style: "ssh"
- name: Mirror with specific cache
uses: Yikun/hub-mirror-action@master
with:
src: github/Yikun
dst: gitee/yikunkero
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
cache_path: /github/workspace/hub-mirror-cache
- name: Mirror with force push (git push -f)
uses: Yikun/hub-mirror-action@master
with:
src: github/Yikun
dst: gitee/yikunkero
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
force_update: true
debug: true
- name: Mirror with force push (git push -f)
uses: Yikun/hub-mirror-action@master
with:
src: github/Yikun
dst: gitee/yikunkero
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
force_update: true
timeout: '1h'
- 如何在secrets添加dst_token和dst_key? 下面是添加secrets的方法,也可以参考secrets官方文档了解更多:
- Hub mirror template: 一个用于展示如何使用这个action的模板仓库. from @yi-Xu-0100
- 自动镜像 GitHub 仓库到 Gitee: 一个关于如何使用这个action的介绍. from @ShixiangWang
- 巧用Github Action同步代码到Gitee: Github Action第一篇软文
如果觉得不错,来个star支持下作者吧!你的Star是我更新代码的动力!:)
想任何想吐槽或者建议的都可以直接飞个issue.