利用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支持直接使用别人编写好的actionaction的执行器类似于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,就会发现自动创建了同名称的仓库且自动提交了同样的代码
