前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >使用Github Action自动同步仓库到Gitee

使用Github Action自动同步仓库到Gitee

作者头像
凡梦星尘
发布2024-11-20 17:30:07
发布2024-11-20 17:30:07
1550
举报
文章被收录于专栏:Hugo博客Hugo博客

背景

作为程序员出生的你,肯定知道备份的重要性。再说现在大环境背景下,美国的政治关系还是比较混乱的,而对于存放在Github上面的项目,也不再是技术自由的国度啦。所以说我们的代码还是有必要进行“双”备份的,接下来就是介绍下,如何使用Github上面的Action功能,将Github上面的代码同步备份到国内的Gitee仓库站点。

准备工作

在一次无意间浏览到了yanglbme的贡献的一个 Git Page Action 代码,经过简单的尝试验证,感觉还是挺好用的,便在自己的博客项目中加入相应的Github Action。大部分的步骤在上面那个站点都有介绍,在此就大概小结一下要注意的点。

准备SSH密钥

在你的本地使用ssh-keygen命令生成用密钥时,千万不要使用密码,在执行ssh-keygen -t rsa -C "youremail@example.com"命令时,直接不断敲下回车键即可。

gen_ssh_key.png
gen_ssh_key.png

Gitee相关

建议Github和Gitee使用同一个密钥,他们的设置方法如下:

1.Github: Settings -> SSH and GPG keys

add_ssh_key_github.png
add_ssh_key_github.png

2.Gitee: 安全设置 -> SSH 公钥

add_ssh_key_gitee.png
add_ssh_key_gitee.png

另外还有一个重点就是,一定要关注Gitee的公众号: giteecom,不然后面Github workflow执行就会失败的。

wechat_notification.png
wechat_notification.png

Github加密设置

切换到Github,然后在当前项目下「​Settings -> Secrets」中进行添加[Repository secrets],分别为:

GITEE_PASSWORD: Gitee登录的密码 GITEE_RSA_PRIVATE_KEY: 前面生成的SSH密钥的私钥

Git workflow准备

在你的Github的仓库中,添加个.github/workflows/目录结构,创建个名称为sync-2-gitee.yml文件,填充如下的文件内容:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

name: Sync on: push: branches: [main, hugo] jobs: sync-2-gitee: runs-on: ubuntu-latest steps: - name: Sync to Gitee uses: wearerequired/git-mirror-action@master env: # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }} with: # 注意替换为你的 GitHub 源仓库地址 source-repo: git@github.com:doocs/advanced-java.git # 注意替换为你的 Gitee 目标仓库地址 destination-repo: git@gitee.com:Doocs/advanced-java.git reload-pages: needs: sync-2-gitee runs-on: ubuntu-latest steps: - name: Build Gitee Pages uses: yanglbme/gitee-pages-action@main with: # 注意替换为你的 Gitee 用户名 gitee-username: yanglbme # 注意在 Settings->Secrets 配置 GITEE_PASSWORD gitee-password: ${{ secrets.GITEE_PASSWORD }} # 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错 gitee-repo: doocs/advanced-java # 要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在) branch: main

注: 这里对原版本做了个小修改,分成2个job,体现一个workflow的效果。

运行效果

那后续在给Github仓库推送代码时,便会有自动同步代码到Gitee仓库,同时也会重新reload静态页面服务,省去手动干预的流程。

02-25-sync-2-gitee-flow-01.png
02-25-sync-2-gitee-flow-01.png

小结

整个方案执行起来还是比较简单的,唯一个可能存在的风险,便是那个密码流程的流程。不过本只是个CI过程,日志中也有脱敏操作,这样也就安全多啦,而且像个人的账户也不会受到特别的关注。

这是首次体验到Github Action的魅力,后续可以持续关注下,这个功能对于一些开源小项目的自动化测试还是有很大的帮助。

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 准备工作
    • 准备SSH密钥
    • Gitee相关
    • Github加密设置
    • Git workflow准备
    • 运行效果
  • 小结
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档