利用Github Action实现Github到Gitee的持续同步
1、什么是Github Action
github action
是github
推出的自动化CI/CD
的功能,随着2019
年11
月后github
对该功能的全面开放,现在所有的github
用户可以直接使用该功能
github action
的语法类似于gitlab ci
,与之相比,还有更多优势,例如:
action
对github
各个事件的支持更为全面,如release
、pull-request
、issue
事件等等action
支持直接使用别人编写好的action
action
的执行器类似于gitlab runner
,可以使用github
托管的执行器,也可以托管自己的执行器。甚至在action
运行的时候,还可以通过某些特殊技巧进入到执行器里面,相当于一台临时的服务器供我们使用
更多这里不再介绍,感兴趣的小伙伴可以自行搜索
2、github 和 gitee 同步
github
的服务器在国外,因为某些原因,在大多数的网络环境下都是无法顺畅访问的
gitee
的服务器在国内,由国内公司运营
纵使如此,大多数开发者还是习惯使用github
(远在海外,也要想尽各种办法)
那么为什么需要把github
和gitee
的仓库进行同步呢?原因不言而喻
目前可用的进行同步的方法可能有:
利用
gitee
官方的同步(导入github
项目),这种方法只能一次性导入本地同时关联
gitee
和github
,提交时都push
一份,这种方法纯属手动利用
github action
下面介绍利用github action
如何实现github
到gitee
的持续同步
3、选用或编写 action
实现github
和gitee
同步的思路主要是基于我们的账户调用github
和gitee
各自的api
接口和密钥通信,在执行器内拉取并推送代码库到gitee
action
的编写语法和gitlab ci
很相似,同时github
还推出了官方的action
市场,地址为 https://github.com/marketplace
这里我们使用的action
是Yikun/hub-mirror-action
4、准备5.1 设置 dst_key
在github
上打开一个自己的仓库,这里以我的个人公开仓库为例
首先在本地生成一个ssh
密钥对工作
# ssh-keygen -t rsa -f ~/Documents/ssh-key/id_rsa |
在github
打开settings
—>secrets
,新建一个secret
,名为GITEE_PRIVATE_KEY
,值为上面生成的密钥对的私钥
然后登录到gitee
,在个人设置—>安全设置—>SSH
公钥中添加上面生成的密钥对的公钥,命名随意
5.2 设置 dst_token
在gitee
打开个人设置—>安全设置—>私人令牌,新建一个私人令牌,命名随意,复制生成的令牌值
在github
打开settings
—>secrets
,新建一个secret
,名为GITEE_TOKEN
,值为上面复制的令牌值
6、github 同步到 gitee
在刚才的GitHub
仓库中,新建 .github/workflows/SyncToGitee.yml
文件,其中.github/workflows/
是固定的目录名
内容如下
name: Sync Github Repos To Gitee |
提交该action
,观察github
上的执行视图
执行完毕后
此时打开gitee
,就会发现自动创建了同名称的仓库且自动提交了同样的代码