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仓库同步的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 查看操作系统版本linux_查看电脑操作
- 下一篇: excel两个表格数据对比_Excel小