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小