为何要做同步

github是国际通用的代码托管平台,奈何身处国内,往往受限于网速,如果个人博客项目主页托管在github上的话,访问速度也是十分堪忧

让我们把目光瞄准国内,国内的知名替代品主要是giteecoding, 因为在国内,同时有pages的这两家成了我们的首选,这里以gitee为例子,让两个 githubgitee的仓库和pages自动进行同步

为何可以同步

git设计之初其实就是分布式管理的,同步很正常

同步方案

同步方案主要三种

同步上传

通过remote 设定不同的别名,上传两遍

gitee =》 github

这应该是最常用的一种,git远程仓库选用国内的gitee,然后通过gitee的 webhook 触发devops进行同步,缺点是要自己准备devops,出一份钱

github =》 gitee

借助万能的github actions在代码提交,合并之后自动调用写好的action进行同步

当然,人工点也可以,gitee提供了对应服务

github => gitee 同步方案

代码库同步

借助wearerequired/git-mirror-action@master这个git自动同步的actions, 我们可以实现任意仓库自动同步
闲着没事上去点一下也没问题

actions

以下是我使用的.github/workflows/sync.yml 记得修改 source-repodestination-repo为对应的两个仓库

name: Sync To Gitee
on: page_build
jobs:sync:runs-on: ubuntu-lateststeps:- uses: wearerequired/git-mirror-action@masterenv:SSH_PRIVATE_KEY: ${{ secrets.GITEE_PRIVATE_KEY }}with:source-repo: "git@gitee.com:mizuka/Mizuka.gitee.io.git"destination-repo: "git@gitee.com:mizuka/Mizuka.gitee.io.git"

因为有page的关系,所以触发条件改为了page_build,如果只是普通的同步的话,可以把on换成对应的触发条件

添加钥匙

接下来是增加私钥, 因为同步过程通过ssh触发,我们需要使用 ssh-keygen 命令生成一对公钥私钥,注意命名,然后将公钥(***.pub)的内容添加到githubgitee的可信名单里

接下来,在对应的仓库settingsecrets中添加GITEE_PRIVATE_KEY,内容为之前的私匙

这样子,每次部署之后,github 会自动推送到 gitee

pages 同步

如何开启 pages

  • github 普通项目gh-pages分支和 用户名.github.iomaster分支会自动开启github pages
  • gitee 服务里有gtiee pages服务,点击打开

gitee 的问题

giteepages服务如果没有花费99/年开启gitee pages pro服务的话,每次仓库有更新的话,是不会自动更新重新部署的,也就是说你还得进去更新部署一次

gitee 自动部署方案

花钱

99/年,有钱可以为所欲为

人工

上去自己点一下重新部署就行啦

模拟登录调用

其实抓取以下接口就能发现 直接通过POST: https://gitee.com/${repository}/pages/rebuild 这个接口进行的,那么我们只要模拟登录就可以了

以下是爬取的接口,用axios调用的例子

axios.post(url + "/rebuild",qs.stringify({branch: core.getInput("branch"),build_directory: core.getInput("directory"),force_https: core.getInput("https")}),{headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",Cookie: cookie,Referer: url,"X-Requested-With": "XMLHttpRequest","X-CSRF-Token": csrfToken}}
);

主要是headers里的 Content-Type, X-CSRF-Token, Cookie特别重要,页面的参数对应这页面的几个按钮,应该很好理解

其中,Cookie 可以devtools中直接拿到,X-CSRF-TOKEN经过调查,被写在了<meta content="" name="csrf-token"></meta>上,通过获取任意一个页面然后拿到即可,否则会403

具体参考我封装的插件

github actions

我个人封装了一个 actions 只要在steps上追加一个step即可

- name: reloaduses: mizuka-wu/gitee-pages-action@v1.0.0with:repository: mizuka/Mizukacookie: ${{ secrets.GITEE_COOKIE }}

当然,需要增加一个GITEE_COOKIE和设定repository

查看文档

总结

见山开山,遇水架桥github actions的推出真的是提供了很多新的玩法

欢迎来看我的博客

axios 同步_githubactions进行github仓库和gitee仓库同步相关推荐

  1. [编程开发工具-6]:github仓库、gitee仓库、git本地仓库混合管理的架构与详细实现步骤

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  2. 怎么把github上的东西传到码云_Git同步更新操作GitHub和码云仓库上面的代码

    一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...

  3. 如何迁移git仓库,gitee仓库迁移到gitlab

    方法1 首先 gitee上的仓库为A gitlab上创建一个空仓库为C 1.本机建一个任意名称文件夹:test,cmd进入test文件夹. 2.执行 git clone http://xxx.xxx. ...

  4. github怎么切换到gitee_Github 如何和 Gitee 进行同步?

    Github 如何和 Gitee 进行同步? 首先关联Github和Gitee的远程仓库:git remote add github git@github.com:code/demo.git git ...

  5. IDEA同时同步代码到GitHub和Gitee

    文章目录 命令行方式(不推荐) 初始化仓库 github仓库 gitee仓库 修改config配置 追加配置 提交代码到暂存区 推送以及拉取代码 命令总结 图形操作方式(推荐) IDEA配置git工具 ...

  6. Git系列(二)、Git连接远程仓库(Gitee码云)

    Git连接远程仓库 一.什么是Git远程仓库? 二.创建远程仓库 第一步:新建仓库 第二步:创建SSH公钥 第三步:查看公钥 第四步:登录码云Gitee,打开当前仓库设置,添加SSH公钥 第五步:从本 ...

  7. 如何将IDEA文件提交至Gitee仓库

    目录 Gitee IDEA 创建本地仓库 连接远程仓库 提交 准备:拥有一个Gitee账户并已安装IDEA.Git Gitee 1.登录Gitee,在页面右上角➕处新建一个仓库 2.仓库名可以任意填写 ...

  8. as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。

    Ⅰ.在GitHub Desktop上登陆账号 GitHub Desktop上只能用GitHub账户登陆 第一次打开GitHub Desktop使会直接有登陆界面出现的,直接用GitHub的账户登陆就好 ...

  9. title: hexo博客搭建流程(附gitee仓库同步等)

    title: hexo博客搭建流程(附gitee仓库同步等) 搭建前准备 1:安装git 官网网址:https://git-scm.com/downloads 2:安装node.js 版本检测 1 n ...

最新文章

  1. 确定安全威胁与漏洞-A
  2. 用Tableau画圆形网络关系图
  3. c# Parallel.For 并行编程 执行顺序测试
  4. Spring源码分析前篇
  5. mysql 报错解决思考Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column
  6. 2017.3.3 拔河比赛 思考记录
  7. [转载]高性能托管应用程序设计入门
  8. pv 6.3升级日志
  9. Linux 命令之 nohup 后台运行程序,tail 实时查看文件内容
  10. linux shell用变量的值作为新变量名
  11. 《推荐系统实践》算法纯享(附代码链接)(四)—— UGC推荐篇
  12. linux过滤端口抓包_linux抓包命令tcpdump
  13. 腾讯翻译君在线翻译怎么翻译整个文件_PDF文档如何直接翻译?有了这个逆天网站,3秒完成整个文件翻译...
  14. Linux傻瓜式安装k8s
  15. 初识马尔科夫链,原来是这样的
  16. PHP 获取微视无水印源地址_PHP实现西瓜视频、头条视频地址提取 无水印视频解析 视频去水印源码...
  17. 王者服务器维护公告2月,2月26日全服不停机更新公告
  18. 超大日志文件分割方法
  19. python爬取喜马拉雅音频
  20. linux安装 jenkins(清华大学镜像站)

热门文章

  1. Python入门100题 | 第067题
  2. Python编程基础:第十八节 字典Dictionaries
  3. numpy.empty详解
  4. arcgis-把X Y点展到arcgis中的陷阱
  5. 编译Tomcat9源码及tomcat乱码问题解决
  6. How web servers work?
  7. 在线支付之风控系统架构选型
  8. 去分库分表的亿级数据NewSQL实践之旅
  9. 关于VR技术和未来发展---转
  10. 谷歌研究发现优秀的团队必须具备这五个关键特质