如何使用Github Action同步代码到其他平台

当使用多个基于git的平台时,同步各个平台代码就比较麻烦,这时就可以借助Github Action来优雅的进行自动同步,该教程将介绍如何使用github-action来完成这件事情

1、生成SSH公钥

执行命令:ssh-keygen -t rsa -C "youremail@example.com",连续三次回车,id_rsa 为私钥,id_rsa.pub为公钥
不使用默认SSH参考:生成/添加SSH公钥

2、GitHub项目配置SSH密钥

在Github项目
Settings->Secrets->Actions,名称为:GITEE_RSA_PRIVATE_KEY,值为:上面生成SSH的私钥

3、GitHub配置SSH公钥

在Github
Settings->SSH and GPG keys->New SSH key,名称为:GITEE_RSA_PUBLIC_KEY,值为:上面生成SSH的公钥

4、Gitee配置SSH公钥

在Gitee
设置->安全设置->SSH公钥,标题为:GITEE_RSA_PUBLIC_KEY,值为:上面生成SSH的公钥

5、GitHub创建Github workflow

在项目根目录新建一个.github/workflows文件夹,新建一个Sync-to-gitee.yml文件,填入下面的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
name: Sync To Gitee

on: # 这里是github action的触发条件
schedule:
- cron: '0 8 * * *' # 每日24点进行同步
push:
delete:
create:

jobs:
build:
runs-on: ubuntu-latest
steps:

- name: Sync yourreponame to Gitee
uses: wearerequired/git-mirror-action@master
env:
# 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
with:
# 注意替换为你的 GitHub 源仓库地址
source-repo: git@github.com:username/yourreponame.git
# 注意替换为你的 Gitee 目标仓库地址
destination-repo: git@gitee.com:username/yourreponame.git

如果是同步多个项目可以这样填

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
name: Sync To Gitee

on: # 这里是github action的触发条件
schedule:
- cron: '0 8 * * *' # 每日24点进行同步
push:
delete:
create:

jobs:
build:
runs-on: ubuntu-latest
steps:

- name: Sync yourreponame_1 to Gitee
uses: wearerequired/git-mirror-action@master
env:
# 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
with:
# 注意替换为你的 GitHub 源仓库地址
source-repo: git@github.com:username/yourreponame_1.git
# 注意替换为你的 Gitee 目标仓库地址
destination-repo: git@gitee.com:username/yourreponame_1.git

- name: Sync yourreponame_2 to Gitee
uses: wearerequired/git-mirror-action@master
env:
# 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
with:
# 注意替换为你的 GitHub 源仓库地址
source-repo: git@github.com:username/yourreponame_2.git
# 注意替换为你的 Gitee 目标仓库地址
destination-repo: git@gitee.com:username/yourreponame_2.git

保存,并把文件推送到github中,这时应该可以在github action看见刚刚的workflow在运行了

如果同步到gitee的github Action出现remote: error: GE007: Your push would publish a private email address.这个报错,则在gitee 设置->邮箱管理 , √去掉

后记

如果需要将github的代码同步到gitlab也是类似的方法,则第4步方法改为:
左上角点击头像,Preferences->SSH Keys->Add new key,在Title输入GITEE_RSA_PUBLIC_KEY,Key输入上面生成SSH的公钥

如果同步到gitlab的action运行报错时可以在项目中的Settings->Repository->Protected branches右边的Expand,把Allowed to force push按钮打开,或者点Unprotect


如何使用Github Action同步代码到其他平台
http://licyk.github.io/2023/11/18/how-to-use-github-action-to-sync-repo/
作者
licyk
发布于
2023年11月18日
许可协议