惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Recent Announcements
Recent Announcements
V
Visual Studio Blog
博客园 - 叶小钗
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
D
DataBreaches.Net
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 Go语言中“糟糕”的日期时间格式化设计 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 如何不关机重启WSL2恢复虚拟服务 在Windows上安装Podman容器平台做虚拟化 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅
使用Github Action自动同步仓库到Gitee
凡梦星尘 · 2021-02-25 · via 热爱生活与梦想

背景

作为程序员出生的你,肯定知道备份的重要性。再说现在大环境背景下,美国的政治关系还是比较混乱的,而对于存放在Github上面的项目,也不再是技术自由的国度啦。所以说我们的代码还是有必要进行“双”备份的,接下来就是介绍下,如何使用Github上面的Action功能,将Github上面的代码同步备份到国内的Gitee仓库站点。

准备工作

在一次无意间浏览到了yanglbme的贡献的一个 Git Page Action 代码,经过简单的尝试验证,感觉还是挺好用的,便在自己的博客项目中加入相应的Github Action。大部分的步骤在上面那个站点都有介绍,在此就大概小结一下要注意的点。

准备SSH密钥

在你的本地使用ssh-keygen命令生成用密钥时,千万不要使用密码,在执行ssh-keygen -t rsa -C "youremail@example.com"命令时,直接不断敲下回车键即可。

gen_ssh_key.png

Gitee相关

建议Github和Gitee使用同一个密钥,他们的设置方法如下:

1.Github: Settings -> SSH and GPG keys

add_ssh_key_github.png

2.Gitee: 安全设置 -> SSH 公钥

add_ssh_key_gitee.png

另外还有一个重点就是,一定要关注Gitee的公众号: giteecom,不然后面Github workflow执行就会失败的。

wechat_notification.png

Github加密设置

切换到Github,然后在当前项目下「​Settings -> Secrets」中进行添加[Repository secrets],分别为:

GITEE_PASSWORD: Gitee登录的密码 GITEE_RSA_PRIVATE_KEY: 前面生成的SSH密钥的私钥

Git workflow准备

在你的Github的仓库中,添加个.github/workflows/目录结构,创建个名称为sync-2-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
25
26
27
28
29
30
31
32
33
34
35
36
name: Sync

on:
  push:
    branches: [main, hugo]

jobs:
  sync-2-gitee:
    runs-on: ubuntu-latest
    steps:
      - name: Sync 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:doocs/advanced-java.git
          # 注意替换为你的 Gitee 目标仓库地址
          destination-repo: git@gitee.com:Doocs/advanced-java.git

  reload-pages:
    needs: sync-2-gitee
    runs-on: ubuntu-latest
    steps:
      - name: Build Gitee Pages
        uses: yanglbme/gitee-pages-action@main
        with:
          # 注意替换为你的 Gitee 用户名
          gitee-username: yanglbme
          # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
          gitee-password: ${{ secrets.GITEE_PASSWORD }}
          # 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错
          gitee-repo: doocs/advanced-java
          # 要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在)
          branch: main

注: 这里对原版本做了个小修改,分成2个job,体现一个workflow的效果。

运行效果

那后续在给Github仓库推送代码时,便会有自动同步代码到Gitee仓库,同时也会重新reload静态页面服务,省去手动干预的流程。

02-25-sync-2-gitee-flow-01.png

小结

整个方案执行起来还是比较简单的,唯一个可能存在的风险,便是那个密码流程的流程。不过本只是个CI过程,日志中也有脱敏操作,这样也就安全多啦,而且像个人的账户也不会受到特别的关注。

这是首次体验到Github Action的魅力,后续可以持续关注下,这个功能对于一些开源小项目的自动化测试还是有很大的帮助。

参考