日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2025/3/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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仓库同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。