github博客自动同步到gitee(保姆级教程)

前言:

由于国内网访问github实在太慢!虽然在公司可以连接外网访问还算可以,但是回学校想看看博客或者分享给别人的时候经常会崩掉!于是我想可不可以把github博客迁移同步到gitee呢?我期望实现的需求是,依然用github写博客,然后push仓库后可以自动同步到gitee,结合devops流水线的工作原理,无需增加我的操作复杂度,这样国内也可以轻松的访问。完美!

说干就干,开始去网上查资料!

迁移github仓库

迁移很简单,直接gitee右上角的+,选择从Github/Gitlab导入仓库,可以直接从URL倒入,也可以登陆github账号直接导入。

重要!这里建议导入和自己gitee用户名同名的文件(不是github原名!)

如果不同名的话会出现博客无法访问css样式,也无法链接到其他地址。避免后续排坑,最好这里直接改了。

原因见https://gitee.com/help/articles/4136#article-header0常见问题1.

同步完成后,查看仓库,点击右上角的服务下的第一个图标,GiteePages,点击进去默认配置部署就好。(无需勾选)

不出意外点击部署后的地址就可以访问博客了。

github仓库实时同步到gitee

方法一

在 Gitee 仓库主页点击同步更新按钮即可!*这里的同步功能默认是强制同步(新代码直接覆盖)*

定时同步目前官方是不支持。

https://gitee.com/oschina/git-osc/issues/IKH12

虽然很简单,但是明显不够丝滑,每一次push代码都需要点一下同步。显然不是我们的预期。

方法二

可以通过本地仓库的形式,同时推送到github和gitee,相当于执行两次commit的操作,push两次。但显然也不是我想要的。

1、首先通过 git remote -v 查看您要同步的仓库的远程库列表,如果在列表中没有您 Gitee 的远程库地址,您需要新增一个地址

git remote add 远程库名 远程库地址
eg: git remote add gitee git@github.com:xxx/xxx.git

如果在 add 的时候出现error: Could not remove config section ‘remote.xxx’.一类的错误,通过把仓库下.git/config 文件里面的 [remote “xxx”] 删掉或者是用别的远程库名即可。

2、从 GitHub 上拉取最新代码到本地

git pull 远程库名 分支名
eg:git pull origin master

3、推送本地最新代码到 Gitee 上

git push 远程库名 分支名
eg:git push gitee master

如果出现有差异的话需要自己手动解决差异

方法三

官方的Action方法Github Action

运用CI/CD的思想,从github中自动化的执行流程,完美符合我们的预期。

原理

Github Action提供了2种方式去实现Action:

  • Docker container. 这种方式相当于在Github提供的计算资源起个container,在container里面把功能实现。具体的原理大致如下:
  • JavaScript. 这种方式相当于在Github提供的计算资源上,直接用JS脚本去实现功能。

作为以后端开发为主的我们,没太多纠结就选择了第一种类型。关于怎么构建一个Github的Action可以参考Github的官方文档Building actions。官方文档真的写的非常详细了,并且也通了了hello-world级别的入门教程。

同步的核心代码实现

而最终的关键实现就是,我们需要定义这个容器运行的脚本,原理很简单:

大致就是以上4步:

  1. 通过Github API读取Repo列表。
  2. 下载或者更新Github repo的代码
  3. 设置远端分支
  4. 将最新同步的commit、branch、tag推送到Gitee。

关心细节的同学,具体可以参考代码:https://github.com/Yikun/gitee-mirror-action/blob/master/entrypoint.sh

如何使用?

举了个简单的例子,我们想将Github/zhangsan同步到Gitee/zhangsan上面。

前提条件需要自己电脑的私钥和公钥。gitee的token。私钥和公钥生成可自行百度。

Ps:我不太理解为什么github和gitee的通信需要用电脑的公私钥,可能是需要通过电脑做媒介?未来还需要多多了解。

  1. 基于 SSH 配置公钥和私钥,参考或网上N多资料。

  2. 将私钥传到 GitHub 仓库,通过设置中的 Secrets 创建一个 GITEE_PRIVATE_KEY 变量,将私钥内容拷贝到值区域。

  1. 同理将公钥传到 Gitee 上,这样就可以实现 GitHub 和 Gitee 的通信。

  1. 在 Gitee 上创建一个私人令牌(token),这个记得保存,因为它只会出现一次

  1. 类似第 2 步,创建一个 GITEE_TOKEN 变量,将私人令牌作为值粘贴进去。

  1. 新建一个Github workflow,在这个workflow里面使用Gitee Mirror Action,复制gitee-repos-mirror.yml文件修改参数即可。

gitee-repos-mirror.yml

name: Gitee repos mirror periodic job
on:
# 如果需要PR触发把push前的#去掉
# push:schedule:# 每天北京时间9点跑- cron:  '0 1 * * *'
jobs:build:runs-on: ubuntu-lateststeps:- name: Mirror the Github organization repos to Gitee.uses: Yikun/gitee-mirror-action@v0.01#代表我们用的仓库,不用同步with:# 必选,需要同步的Github用户(源)src: github/Yikun# 必选,需要同步到的Gitee的用户(目的)dst: gitee/yikunkero# 必选,Gitee公钥对应的私钥,https://gitee.com/profile/sshkeysdst_key: ${{ secrets.GITEE_PRIVATE_KEY }}# 必选,Gitee对应的用于创建仓库的token,https://gitee.com/profile/personal_access_tokensdst_token:  ${{ secrets.GITEE_TOKEN }}# 如果是组织,指定组织即可,默认为用户user# account_type: org# 还有黑、白名单,静态名单机制,可以用于更新某些指定库# static_list: repo_name# black_list: 'repo_name,repo_name2'# white_list: 'repo_name,repo_name2'

将配置文件中的源和目标设置为你自己的账号即可。

src: github/<这里改成自己的GitHub名字>
dst: gitee/<这里改成自己的Gitee名字>

上图,大概是每个阶段的原理和最终的效果。现在,这个使用Gitee Mirror Action的workflow已经运行起来了。

说再后面

看似小小的一个功能优化也花费了很久的时间,看似仅仅增加了一个自动同步的功能,优化了用户(我)写博客的体验,但中间做的很多事情。致敬伟大的程序员前辈们!

如果把我的博客当成一个产品。那我的产品经历了一下几个阶段。

  • 需求:期望有一个干净独立自己的博客网站(还不用花钱)
  • 实现:Typora+PicGo+github搭建免费稳定图床写博客如行云流水(mac+window)
  • 需求:github的图床加载访问太慢,图片多的文章本根看不到。
  • 解决办法:Github无法加载或不显示图片问题(window+mac)+优化方法:https://cdn.jsdelivr.net/gh/用户名/图床仓库名
  • 需求:期望国内网也可以流畅丝滑的访问blog
  • 解决办法:也就是本篇文章所写。

通过发现问题也借此了解了很多知识,github竟然还有Action这么神奇的功能,感觉很有趣。回想起之前只会git clone就太狭隘了。有时间还是要多多了解这些东西,以及背后的原理。任何事物的出现和发展都是有其必然原因和规律。就像伟大的git诞生一样。(这样说突然想学习一下程序的历史,给自己挖个坑有空了解一下,也可以用自己的语言写一篇历史故事,感觉会蛮有趣。 - - )

一个产品的本质就是有需求才会推动实现,而为了实现需要尝试很多方法,学习很多知识。

我料想,人生也应如是。

github博客自动同步到gitee(保姆级教程)相关推荐

  1. mac中Typora+PicGo图床+gitee 保姆级教程

    查看全文 http://www.taodudu.cc/news/show-5900829.html 相关文章: 使用Typora+PicGo+Gitee打造全新Markdown博客创作环境 今天码云( ...

  2. 如何把Issue博客自动同步到github page中

    这个问题我问了chatgpt: 问题1 生成一段github的workflows配置文档,当有新issue的时候,自动将issue的内容同步到该GitHub项目的blog分支的content/post ...

  3. 财务福音。用Python+OCR人工智能识别发票自动存入Excel表格保姆级教程

    前言 对于所有公司财务而言,用肉眼看发票,再将信息手动录入excel绝对是人间十大酷刑之一,对于这种流程清晰,机械重复的工作场景,最适合用python自动化办公技术+人工智能技术来解决. 场景描述 我 ...

  4. 使用GitHub Actions实现Hexo博客自动发布

    我在使用jenkins实现hexo博客自动发布中介绍了可以使用jenkins实现博客自动发布,其实还有一种更简单的方法,就是GitHub提供的持续集成服务:GitHub Actions.下面就来介绍一 ...

  5. Python实现自动推本地github博客到远程仓库

    Python实现自动推本地github博客到远程仓库 以前的简单版本 通过python中的os模块操作系统命令 详情可参考:Python实现一行代码推本地git到远程仓库 升级版本 本次加入了监听文件 ...

  6. Github Actions 自动同步到 Gitee

    目录 引言 具体方案 引言 平时开源代码一般已Github为主,但是会遇到网不好的情况,于是考虑将Github仓库自动同步到Gitee上,作为备份. 考虑不能手动做这个事情,于是想到了Github A ...

  7. 【保姆级教程】基于WordPress在阿里云服务器上搭建个人博客网站

    写之前先回答几个问题: 1,网上类似的教程非常多,为什么写这篇教程? 答:博客网站我搭建过好几次,但是每次搭建都需要再去网上搜教程:然而网上的教程坑很多,甚至有些是错误的,不能完美解决自己的问题,有时 ...

  8. 使用Gitee用作图片床写博客(Picgo+typora+Gitee)

    使用Gitee用作图片床写博客(Picgo+typora+Gitee) 文章目录 使用Gitee用作图片床写博客(Picgo+typora+Gitee) 问题描述 解决办法 配置教程 第一步:安装Pi ...

  9. Hexo+GitHub 博客部署 个人踩坑记录(一)

    Hexo+GitHub 博客部署 个人踩坑记录(一) 前言 博客的作用 编程学习本身是持续性的学习行为,说明所学习的内容是在持续地增加.这要求我们要学会阶段性总结自己所学的东西,复习并巩固.所以写文章 ...

最新文章

  1. 【干货】目标检测比赛中的trick
  2. C++读取INI文件
  3. windows下jenkins常见问题填坑
  4. h0152. 故事计算题(计蒜客——西邮K题)解析
  5. 移动端实现蓝牙打印机打印_MBrush世界上最小的移动彩色打印机
  6. Redis学习笔记01---配置文件
  7. 第二期冲刺站立会议个人博客6(2016/5/30)
  8. mysql api是什么意思_什么是mysql c api? 解析mysql c api简单应用
  9. github创建远程仓库
  10. 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
  11. spring-boot设置静态文件路径
  12. js格式化显示xml
  13. 网页中嵌入网易云音乐播放器
  14. html 数据交互动画,H5交互动画创作平台推荐:爆米兔和木疙瘩
  15. linux连接蓝牙设备,Linux 下连接蓝牙设备
  16. 雷军若愿“赌”服输给董明珠10亿元 他的身家还会剩下多少?
  17. 巴东县黄土坡滑坡GNSS自动化位移监测解决方案
  18. 实现表格中的el-switch 开关切换
  19. 微信小程序滴滴服务器报错,如何使用mpx框架(滴滴)给微信小程序分包
  20. Node-RED教程(十五):工业仪表盘开发

热门文章

  1. 广和通眼中的5G时代通信智能化变革
  2. TEXT must be immediately followed by END_TAG and not START_TAG (position: START_TAG seen ...<depende
  3. 混合易失和非易失主存的日志结构文件系统NOVA[FAST'16]随笔二
  4. 送你一份2023Java学习路线,按图索骥,开启一路狂飙!
  5. Linux 系统发展史小览 (与Unix区别科普文)
  6. 使用gpio_direction_output()无法设置GPIO原因分析
  7. 1年时间从12K到30K,一位外卖小哥的真实逆袭历程!
  8. 几何画板(可绘制复杂函数等)下载方式
  9. 团队任务3:每日立会(2018-10-23)
  10. Ubuntu上Firefox字体太小--高分屏背锅