Loading

自动同步 Github 仓库到 Gitee 仓库

自动同步你的 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 次的改动提交,几乎没有任何顾虑。

posted @ 2024-03-23 19:25  Jurij  阅读(62)  评论(0编辑  收藏  举报