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