自動同步你的 Github 倉庫到 Gitee 倉庫
個人公私鑰的建立
ssh-keygen -t ed25519 -C "Gitee SSH Key for Github Action"
輸出,如:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_ed25519):#輸入儲存路徑
Enter passphrase (empty for no passphrase):#輸入密碼
Enter same passphrase again:#再次確認密碼
Your identification has been saved in /home/git/.ssh/id_ed25519
Your public key has been saved in /home/git/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
| .o |
| .+oo |
| ...O.o + |
| .= * = +. |
| .o +..S*. + |
|. ...o o..+* * |
|.E. o . ..+.O |
| . . ... o =. |
| ..oo. o.o |
+----[SHA256]-----+
Gitee的token建立
頭像-->設定-->私人令牌-->生成令牌
填寫私人令牌描述後點選提交,將token進行儲存
Actions secrets設定
專案目錄-->setting-->Secrets and variables-->Actions-->New repository secret
需要生成三個:
GITEE_AND_GITHUB_PRIVATE_KEY :上面生成的私鑰
GITEE_TOKEN:上面生成的token
GITEE_USER:頭像-->設定-->個人資料-->個人空間地址 有個自己填寫的地址,寫那個地址名稱
yml檔案提交
在.github/workflows
下建立檔案sync2gitee.yml
,內容如下:
# 透過 Github actions, 在 Github 倉庫的每一次 commit 後自動同步到 Gitee 上
name: sync2gitee
on:
push:
branches:
- master
jobs:
repo-sync:
env:
dst_key: ${{ secrets.GITEE_AND_GITHUB_PRIVATE_KEY}}
dst_token: ${{ secrets.GITEE_TOKEN }}
gitee_user: ${{ secrets.GITEE_USER }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: sync github -> gitee
uses: Yikun/hub-mirror-action@master
if: env.dst_key && env.dst_token && env.gitee_user
with:
# 必選,需要同步的 Github 使用者(源)
src: 'github/${{ github.repository_owner }}'
# 必選,需要同步到的 Gitee 使用者(目的)
dst: 'gitee/${{ secrets.GITEE_USER }}'
# 使用ssh方式clone,保證原倉的可讀性
clone_style: "ssh"
# 必選,Gitee公鑰對應的私鑰,https://gitee.com/profile/sshkeys
dst_key: ${{ secrets.GITEE_AND_GITHUB_PRIVATE_KEY }}
# 必選,Gitee對應的用於建立倉庫的token,https://gitee.com/profile/personal_access_tokens
dst_token: ${{ secrets.GITEE_TOKEN }}
# 如果是組織,指定組織即可,預設為使用者 user
# account_type: org
# 直接取當前專案的倉庫名
static_list: ${{ github.event.repository.name }}
# 目的端的可見性設定為私有倉
# dst_visibility: 'private'
# 還有黑、白名單,靜態名單機制,可以用於更新某些指定庫
# static_list: 'repo_name,repo_name2'
# black_list: 'repo_name,repo_name2'
# white_list: 'repo_name,repo_name2'
之後就可以沒次提交後自動同步了,GitHub Actions 對於個人賬號,每個月有 2000 分鐘的免費額度,普通的一次 GitHub Action 執行需要 2-3 分鐘,2000 / 3 = 666
次提交,足足滿足一天 22 次的改動提交,幾乎沒有任何顧慮。