钱欢 發表於 2023-8-16 13:01:00

自动同步 github 仓库到 gitee

<h1 id="自动同步-github-仓库到-gitee">自动同步 github 仓库到 gitee</h1>
<h2 id="先上最终效果">先上最终效果</h2>
<p>代码仓库: github2gitee</p>
<p>Github Action 同步结果:</p>
<p><img src="https://picgo-1256712489.cos.ap-chongqing.myqcloud.com/img/202308161306768.png"></p>
<h2 id="为什么要同步到-gitee">为什么要同步到 gitee</h2>
<p>将 gitee 仓库作为备份镜像仓库,以防不测</p>
<h2 id="网上的同步方法">网上的同步方法</h2>
<p>大致在网上查找了一通,基本都是使用 github action 做到自动同步,也有一些前人封装好的 action,所以做起来还是相对轻松的,由于不排除有新的更好的轮子出现,所以建议想要用的同学们先去市场上搜一搜,说不定有新惊喜, 进入 action marketplace</p>
<p>但是逐一去尝试,实在是费时费力,所以我还是更愿意看别人做好的分享,发现用Yikun/hub-mirror-action 这个工具的比较多,也有很多用户分享自己使用这个工具的博文,这里列举我参考的博文,网上的类似文章不少,可以多搜几篇参考,基本大同小异。</p>
<p>3步自动同步你的 Github 仓库到 Gitee 仓库</p>
<h2 id="写一个合适自己的脚本">写一个合适自己的脚本</h2>
<p>用 Yikun/hub-mirror-action 这个工具实现后,主要遇到几个问题:</p>
<ol>
<li>每个新建的仓库,都需要自己加 action, 而且同样的密钥配置,需要每建一个仓库,都在仓库下重复配置一遍(可能因为本人是免费用户?),复杂度 O(n),我不能忍</li>
<li>将 github 和 gitee 私钥放得到处都是的做法(每个仓库都有一个备份),没有安全感</li>
</ol>
<p>因此,觉得做一个适合自己的轮子</p>
<h2 id="专门的仓库--定时任务-来处理同步">专门的仓库 + 定时任务 来处理同步</h2>
<p>由于水平有限,还不会写 github action,所以用最简单的方法,搞几个小脚本,做成定时任务,周期拉取所有仓库,然后同步。</p>
<p>结合自己的情况,我自己有一台云主机,那么直接在云主机上搞定时任务,就很简单,只需要几个脚本,实现代码 github2gitee</p>
<p>这样做的好处:</p>
<ol>
<li><strong>自动更新</strong>: 当 github 的仓库发生变更时,自动同步代码变更以及commit历史记录到 gitee 对应的仓库</li>
<li><strong>一次配置,适配所有仓库</strong>:不需要针对每个仓库进行单独的设置,也不需要在每个 github 仓库上增加 github action</li>
<li><strong>支持私有仓库</strong>: 同时支持同步 github 公有仓库和私有仓库</li>
<li><strong>灵活选择同步仓库</strong>:支持仓库的黑白名单配置,默认同步所有 github 仓库, 可以只同步指定仓库,也可以屏蔽特定仓库</li>
</ol>
<p>同时,由于私钥都放在云主机上,相对比放仓库要放心许多。</p>
<h2 id="没有云主机怎么办">没有云主机怎么办?</h2>
<p>如果没有云主机,可以参考项目中的 github action,用 schedule 进行定时触发,此时需要将 github 和 gitee 的私钥都放到 action 的 secret 中。</p>
<p>使用 github action 需要的变量:</p>
<pre><code class="language-secret">GITEE_PRIVATE_KEY: gitee 的私钥,用于提交代码
GIT_PRIVATE_KEY: github 的私钥,用于拉取代码
GITEE_TOKEN: gitee 的个人令牌,用于获取仓库列表,查询 commit id 等
GIT_TOKEN: github 的个人令牌,用于获取仓库列表,查询 commit id 等
</code></pre><br><br>
来源:https://www.cnblogs.com/coreylin/p/17633738.html
頁: [1]
查看完整版本: 自动同步 github 仓库到 gitee