欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

axios 同步_githubactions进行github仓库和gitee仓库同步

发布时间:2025/3/21 编程问答 12 豆豆
生活随笔 收集整理的这篇文章主要介绍了 axios 同步_githubactions进行github仓库和gitee仓库同步 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

为何要做同步

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

让我们把目光瞄准国内,国内的知名替代品主要是gitee和coding, 因为在国内,同时有pages的这两家成了我们的首选,这里以gitee为例子,让两个 github和gitee的仓库和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-repo 和 destination-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)的内容添加到github和gitee的可信名单里

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

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

pages 同步

如何开启 pages

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

gitee 的问题

gitee的pages服务如果没有花费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仓库同步的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。