自動同步 Github 倉庫到 Gitee 倉庫

Jurij發表於2024-03-23

自動同步你的 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 次的改動提交,幾乎沒有任何顧慮。

相關文章