当前位置: 首页 > news >正文

【版本控制】Github同步Gitee镜像仓库自动化脚本

文章目录

  • Github同步Gitee镜像仓库自动化脚本
    • 前言
    • 什么是Hub Mirror Action?
      • 1.介绍
      • 2.用法
    • 配置步骤
      • 1.生成密钥对
      • 2.GitHub私钥配置
      • 3.Gitee公钥配置
      • 4.Gitee生成私人令牌
      • 5.Github绑定Gitee令牌
      • 6.编写CI脚本
      • 7.多仓库同步推送
      • 8.定时运行脚本
    • 总结

Github同步Gitee镜像仓库自动化脚本


前言

在软件开发中,使用Git作为代码管理工具是非常普遍的。而GitHub和Gitee则是我们熟知的两个在线Git代码托管平台。如果我们在这两个平台上都有代码仓库,并且希望实现自动同步,应该怎么做呢?这就需要使用GitHub Action中的Hub Mirror Action了。

什么是Hub Mirror Action?

image-20230411153729450

1.介绍

Hub Mirror Action是GitHub Action中的一个组件,可以将GitHub仓库内容自动同步到Gitee上,也可以实现从Gitee到GitHub的自动同步。Hub Mirror Action提供了多种同步方式,支持单向同步和双向同步,可以在配置文件中进行灵活设置。

2.用法

steps:
- name: Mirror the Github organization repos to Gitee.uses: Yikun/hub-mirror-action@masterwith:src: github/kunpengcomputedst: gitee/kunpengcomputedst_key: ${{ secrets.GITEE_PRIVATE_KEY }}dst_token: ${{ secrets.GITEE_TOKEN }}account_type: org# src_account_type: org# dst_account_type: org

附:详细使用案例请查看官方仓库 https://github.com/Yikun/hub-mirror-action

配置步骤

1.生成密钥对

我们先在本地使用git命令行打开终端,输入如下命令:

ssh-keygen -t rsa -f ~/Documents/ssh-key/id_rsa

注:请确保文件夹~/Documents/ssh-key/存在,当然你也可以选择放置在其他地方

过程中一路回车即可,注意不要设置密码。

image-20230411154330166

image-20230411155124878

2.GitHub私钥配置

首先为了存放自动化脚本,我们需要创建一个新的GitHub仓库,并为其配置相关环境。

image-20230411154716849

  • 依次点击Settings->Secrets and variables->Actions

  • 点击New respository secret,创建一个名为GITEE_PRIVATE_KEY的secret,值为我们之前生成的密钥对中的私钥(id_rsa)

image-20230411155314101

3.Gitee公钥配置

我们打开Gitee账号,进入Settings->安全设置->SSH公钥

添加一个名为gitee_sync的公钥,值也就是我们前面生成的公钥(id_rsa.pub)

image-20230411155846562

4.Gitee生成私人令牌

image-20230411155958898

令牌名称随意,同时复制生成的令牌值。

image-20230411160127393

5.Github绑定Gitee令牌

  • 依次点击Settings->Secrets and variables->Actions

  • 点击New respository secret,创建一个名为GITEE_TOKEN的secret,值为Gitee生成的令牌值

image-20230411160340721

6.编写CI脚本

ci_bot仓库(放置及部署自动化脚本的仓库)下载到本地,同时创建这样的文件层次目录:

.ci_bot/|——.github|——workflows|——Sync.yml

Sync.yml文件中,添加以下代码:

name: Sync Github Repos To Giteeon: [ push, delete, create ]jobs:build:runs-on: ubuntu-lateststeps:- name: Sync Github Repos To Gitee  # 名字随便起uses: Yikun/hub-mirror-action@master  # 使用Yikun/hub-mirror-actionwith:src: github/kurisaW  # 源端账户名(github)dst: gitee/kurisaW  # 目的端账户名(gitee)dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}  # SSH密钥对中的私钥dst_token:  ${{ secrets.GITEE_TOKEN }}  # Gitee账户的私人令牌account_type: user  # 账户类型clone_style: "https"  # 使用https方式进行clone,也可以使用sshdebug: true  # 启用后会显示所有执行命令force_update: true  # 启用后,强制同步,即强制覆盖目的端仓库static_list: "kurisaW_docs"  # 静态同步列表,在此填写需要同步的仓库名称,可填写多个timeout: '600s'  # git超时设置,超时后会自动重试git操作

保存退出后,将本次修改push到远端仓库。

查看Action运行情况:

image-20230411161143741

7.多仓库同步推送

如果你想同时同步多个仓库,只需要完成如下修改

static_list 默认为'', 配置后,仅同步静态列表,不会再动态获取需同步列表(黑白名单机制依旧生效),如“repo1,repo2,repo3”。

image-20230411163307283

image-20230411163135259

8.定时运行脚本

为了方便该脚本每天定时完成自动同步任务,我们可以使用GitHub提供的schedule事件完成:

修改Sync.yml文件:

name: Sync Github Repos To Giteeon: schedule:- cron: '0 0 * * *'push:branches: [ main ]delete:branches: [ main ]create:branches: [ main ]jobs:build:runs-on: ubuntu-lateststeps:- name: Sync Github Repos To Gitee  # 名字随便起uses: Yikun/hub-mirror-action@master  # 使用Yikun/hub-mirror-actionwith:src: github/kurisaW  # 源端账户名(github)dst: gitee/kurisaW  # 目的端账户名(gitee)dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}  # SSH密钥对中的私钥dst_token:  ${{ secrets.GITEE_TOKEN }}  # Gitee账户的私人令牌account_type: user  # 账户类型clone_style: "https"  # 使用https方式进行clone,也可以使用sshdebug: true  # 启用后会显示所有执行命令force_update: true  # 启用后,强制同步,即强制覆盖目的端仓库static_list: "kurisaW_docs,rt-thread,my_tools,pkgs,Npdf,kurisaW.github.io"  # 静态同步列表,在此填写需要同步的仓库名称,可填写多个timeout: '600s'  # git超时设置,超时后会自动重试git操作

也就是说该自动化脚本会每天零时进行自动化脚本的运行,自动更新镜像仓库,同时如果该配置文件发生推送、删除和创建文件操作时也会触发Action行为。

image-20230411173142865

总结

通过以上步骤,我们已经完成了GitHub同步Gitee镜像仓库自动化脚本配置的操作。Hub Mirror Action作为GitHub Action中的一个组件,可以帮助我们在两个平台之间实现代码自动同步,极大地减轻了我们手动同步代码的工作量。当然如果你有任何问题欢迎留言区提出,我将竭力为你解答。

相关文章:

【版本控制】Github同步Gitee镜像仓库自动化脚本

文章目录Github同步Gitee镜像仓库自动化脚本前言什么是Hub Mirror Action?1.介绍2.用法配置步骤1.生成密钥对2.GitHub私钥配置3.Gitee公钥配置4.Gitee生成私人令牌5.Github绑定Gitee令牌6.编写CI脚本7.多仓库同步推送8.定时运行脚本总结Github同步Gitee镜像仓库自动…...

索引的分类

1.唯一索引 给表中某一列设置为了唯一约束(这列不允许出现重复数据)后,数据库会为将这一列设置索引,这个索引叫做唯一索引(主键那一列是一个特殊的唯一索引,不仅要满足唯一索引这一列不可以出现重复数据,而且这一列还…...

【整理九】

目录1.说说你对递归的理解?封装一个方法用递归实现树形结构封装2.Link和import有什么区别?3.什么是FOUC? 如何避免?4.说说你对预编译器的理解?5.shouldComponentUpdate 的作用6.概述下 React 中的事务处理逻辑7.React组件的划分业…...

钢网是SMT生产使用的一种工具,如何制作?

钢网是SMT生产使用的一种工具,其主要功能是将锡膏准确地涂敷在有需要焊接的PCB焊盘上。 钢网的好坏,直接影响印刷工作的质量,目前一般使用的金属钢网,是由薄薄的、带有小孔的金属板制作成的,在开孔处,锡膏…...

如何创建自己的gym环境

我们为什么要创建一个gym的环境呢?因为需要,哈哈哈,这是一句废话,但是也是一句真话。因为我不想自己写强化学习的算法了,我想用一些现成的框架,这些框架训练的都是gym的游戏,那我把我自己想要训…...

使用Marshaller 将Java对象转化为XML格式和字符串转为xml

使用Marshaller 将Java对象转化为XML格式 对象转xml内容 ①工具类 public static String convertObjectToXml(Object obj) throws Exception {StringWriter writer new StringWriter();// 创建 JAXBContext 和 MarshallerJAXBContext context JAXBContext.newInstance(obj.ge…...

NumPy 秘籍中文第二版:八、质量保证

原文:NumPy Cookbook - Second Edition 协议:CC BY-NC-SA 4.0 译者:飞龙 “如果您对计算机撒谎,它将帮助您。” – Perry Farrar,ACM 通讯,第 28 卷 在本章中,我们将介绍以下秘籍: …...

[ 应急响应篇基础 ] 日志分析工具Log Parser配合login工具使用详解(附安装教程)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

什么是MVVM?

MVVM 是 Model-View-ViewModel 的缩写,是M-V-VM三部分组成。它本质上就是MVC的改进版。 M:Model 代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。 V:View 代表视图UI,它负责将数据模型转化成UI 展现出来。…...

Java 企业电子招投标采购系统源码:采购过程更规范,更透明

满足采购业务全程数字化, 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的全过程管理。 电子招标采购,是指在网上寻源和采购产品和服务的过程。对于企业和企业主来说,这是个既省钱又能提高供应链效率的有效方法…...

1384:珍珠(bead)

1384:珍珠(bead) 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 有n颗形状和大小都一致的珍珠,它们的重量都不相同。n为整数,所有的珍珠从1到n编号。你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量…...

34岁本科男,做了5年功能测试想转行,除了进厂还能干什么?

我的建议是不要给自己设限。任何一个行业只要做到顶尖都是很有作为的,何况是IT行业,本身就比别的行业有优势,如果你现在是功能测试,应该想的是进阶自动化测试或者测试开发 如何在半年时间由功能测试成长为年薪30W的测试开发&#…...

一文理解Transformer整套流程

【备注】部分图片引至他人博客,详情关注参考链接 【PS】query 、 key & value 的概念其实来源于推荐系统。基本原理是:给定一个 query,计算query 与 key 的相关性,然后根据query 与 key 的相关性去找到最合适的 value。举个例…...

04、SpringBoot运维实用篇

一、配置文件1、临时属性设置目前我们的程序包打好了,可以发布了。但是程序包打好以后,里面的配置都已经是固定的了,比如配置了服务器的端口是8080。如果我要启动项目,发现当前我的服务器上已经有应用启动起来并且占用了8080端口&…...

3.Java运算符

Java运算符 运算符基本分为六类:算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、三元(条件)运算符。 一、算术运算符 算数运算符,是指在Java运算中,计算数值类型的计算符号,既然是操作数值…...

《RockectMQ实战与原理解析》Chapter4-分布式消息队列的协调者

4.1 NameServer 的功能 NameServer 是整个消息队列中的状态服务器,集群的各个组件通过它来了解全局的信息 。 同时,各个角色的机器都要定期向 NameServer 上报自己的状态,超时不上报的话, NameServer 会认为某个机器出故障不可用了…...

Spring Boot 最适配的 UI 是什么

与Spring Boot一起使用的最佳 UI 是什么? 我经常碰到的一个常见问题是“与 Spring Boot 一起使用的最佳 UI 是什么?” UI,也称为“用户界面”,有许多不同的风格。 UI 应用程序可能是用 Java Swing、FX 或其他一些技术编写的桌面应…...

TensorFlow 1.x 深度学习秘籍:6~10

原文:TensorFlow 1.x Deep Learning Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如…...

分布式场景下,Apache YARN、Google Kubernetes 如何解决资源管理问题?

所有的资源管理系统都需要解决资源的有效利用、任务的有效响应、调度策略的灵活配置这三个最基本问题。那么在分布式的场景下,YARN和Kubernetes是怎么解决的呢?本篇进行介绍。 — Apache YARN — YARN全称为(Yet Another Resource Negotiato…...

RK3399平台开发系列讲解(基础篇)POSIX 定时器

🚀返回专栏总目录 文章目录 一、clockid二、sigevent三、timerid四、flags五、 value & old_value六、POSIX 定时器的优势沉淀、分享、成长,让自己和他人都能有所收获!😄 📢为了克服传统定时器的局限性,POSIX 标准组织设计了新的计时器接口和规范,使它们能提供更…...

论文查重会查表格么?

会,但不是所有表格都按同一种方式查。先说结论:论文里的表格,学校查重一般是会处理的。只是“查到什么程度”,看系统。分几种情况说。1. Word里的可编辑表格:会查如果你的表格是这种:Word 直接插入的表格单…...

Perplexity事实核查引擎技术白皮书(2024Q3最新架构拆解)

更多请点击: https://kaifayun.com 第一章:Perplexity事实核查引擎的演进脉络与核心定位 Perplexity事实核查引擎并非从零构建的全新系统,而是深度整合学术验证机制、实时知识图谱更新能力与多源交叉比对逻辑的第三代事实推理基础设施。其演…...

终极音乐格式转换指南:3步完成音频解密与跨平台播放

终极音乐格式转换指南:3步完成音频解密与跨平台播放 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...

二层与三层交换机核心差异解析:从MAC地址到IP路由的实战指南

1. 项目概述:从“傻”到“聪明”的进化之路如果你刚接触网络设备,看到“二层交换机”和“三层交换机”这两个名词,可能会有点懵。它们长得都差不多,都是方方正正的铁盒子,前面板一堆网口,后面插着电源和风扇…...

AutoMdxBuilder终极指南:3分钟零代码制作专业MDX词典的完整教程

AutoMdxBuilder终极指南:3分钟零代码制作专业MDX词典的完整教程 【免费下载链接】AutoMdxBuilder Automatically make mdx dictionaries 项目地址: https://gitcode.com/gh_mirrors/au/AutoMdxBuilder 还在为制作电子词典而烦恼吗?传统MDX词典制作…...

告别命令行!用这个免费软件5分钟搞定Abaqus三维Voronoi泡沫模型

五分钟可视化构建Abaqus三维Voronoi泡沫模型:零代码解决方案全指南 在材料科学与工程仿真领域,三维Voronoi泡沫结构的建模一直是学术研究和工业应用的热点。这种仿生多孔结构因其优异的力学性能和轻量化特性,被广泛应用于缓冲材料、骨科植入物…...

告别寄存器操作:在RA4M2上体验瑞萨FSP库点灯,对比STM32 HAL/LL库有何不同?

从STM32到RA4M2:FSP库与HAL/LL库的深度对比与实践指南 如果你已经习惯了STM32的HAL库或LL库开发,初次接触瑞萨RA4M2的FSP库可能会感到既熟悉又陌生。本文将带你深入比较这两种开发方式的异同,并通过一个实际的LED控制案例,展示如何…...

Cadence SKILL脚本实战:5分钟搞定TESTKEY原理图批量创建(附完整代码)

Cadence SKILL脚本实战:5分钟搞定TESTKEY原理图批量创建(附完整代码) 在集成电路设计领域,TESTKEY(测试结构)的创建是验证工艺模型和器件特性的基础工作。传统手动放置器件的方式不仅效率低下,还…...

终极免费方案:3分钟掌握Ofd2Pdf轻松转换OFD为PDF

终极免费方案:3分钟掌握Ofd2Pdf轻松转换OFD为PDF 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 还在为OFD文件无法打开而烦恼吗?Ofd2Pdf是一款完全免费、简单易用的开源工具&…...

5分钟搞定虚拟显示器:ParsecVDD终极指南,解锁4K游戏串流新境界

5分钟搞定虚拟显示器:ParsecVDD终极指南,解锁4K游戏串流新境界 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否曾经因为物理显示器限制而无法获得完…...