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

news2024/12/23 20:23:08

文章目录

  • 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@master
  with:
    src: github/kunpengcompute
    dst: gitee/kunpengcompute
    dst_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 Gitee

on: [ push, delete, create ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

    - name: Sync Github Repos To Gitee  # 名字随便起
      uses: Yikun/hub-mirror-action@master  # 使用Yikun/hub-mirror-action
      with:
        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,也可以使用ssh
        debug: 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 Gitee

on: 
  schedule:
    - cron: '0 0 * * *'
  push:
    branches: [ main ]
  delete:
    branches: [ main ]
  create:
    branches: [ main ]
    
jobs:
  build:
    runs-on: ubuntu-latest
    steps:

    - name: Sync Github Repos To Gitee  # 名字随便起
      uses: Yikun/hub-mirror-action@master  # 使用Yikun/hub-mirror-action
      with:
        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,也可以使用ssh
        debug: 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中的一个组件,可以帮助我们在两个平台之间实现代码自动同步,极大地减轻了我们手动同步代码的工作量。当然如果你有任何问题欢迎留言区提出,我将竭力为你解答。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Softmax和Cross Entropy Loss在分类问题中的作用

本文以三分类神经网络为例,讲解Softmax和Cross Entropy Loss在分类问题中的作用。 首先,对类别标签进行一位有效编码: y[y1,y2,y3]Ty[y_{1},y_{2},y_{3}]^{T}y[y1​,y2​,y3​]T yi{1,if(iy)0,otherwisey_{i}\left\{\begin{matrix} 1 ,& …

形式语言和自动机总结----正则语言RE

第3-4章正则表达式 正则表达式的设计举例 正则表达式的运算 正则表达式的优先级 举例 1.倒数第三个字符是1 (01)*1(01)(01) 2.不含有连续的0 (101)*(0) 3.含有000 (01)*000(01&a…

【算法LearnNO.1】算法介绍以及算法的时间复杂度和空间复杂度

目录 一、算法 1、算法概述 2、算法的5个特性 3、设计算法的标准 二、时间复杂度 1、时间复杂度的介绍 2、渐进时间复杂度的求法 3、计算时间复杂度的代码举例(平方阶示例) 4、时间复杂度排序 三、空间复杂度 一、算法 1、算法概述 算法就是解…

蔚来试水辅助驾驶订阅,NOP+能否吃蟹?

作者 | 德新 编辑 | 王博2021年的NIO Day上,随着当时ET7发布,蔚来最早宣布了智能驾驶订阅服务:NAD,月费680元。 两年后,辅助驾驶订阅模式终于开始落地:蔚来将从7月1日起,对NOP进行收费&#xff…

Nginx基础教程

Nginx 目标 Nginx简介【了解】 Nginx安装配置【掌握】 一、Nginx简介 Nginx称为:负载均衡器或 静态资源服务器:html,css,js,img ​ Nginx(发音为“engine X”)是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/P…

索引优化、优化,你又是一个好MongoDB!!!博学谷狂野架构师

MongoDB索引优化 作者: 博学谷狂野架构师GitHub:GitHub地址 (有我精心准备的130本电子书PDF)只分享干货、不吹水,让我们一起加油!😄 索引简介 索引通常能够极大的提高查询的效率,如果没有索引&a…

【pg数据库状态监控相关参数展示】

1、最近项目中做了一个postgresql数据库监控状态功能的需求,需求如下图 2、研究好久,终于在pg数据库的官方文档中找到了相关视图参数, 文档连接如下: 数据库基础信息: http://www.postgres.cn/docs/9.3/functions-in…

开源项目:数据库表结构生成文档工具

目录 一、软件介绍 二、技术框架 三、功能介绍 四、代码展示 1、获取数据库信息部分代码 2、导出Html文档代码 五、运行效果 六、项目开源地址 一、软件介绍 今天给大家分享我自己编写的数据库表结构文档生成工具,方便大家在实际开发当中,可以很方便导出…

JAVA常用工具-文件操作相关IO

IO技术在JDK中算是极其复杂的模块,文件管理都依赖IO技术,而且都是编程的难点,想要整体理解IO流,先从Linux操作系统开始, Linux空间隔离 Linux使用是区分用户的,这个是基础常识,其底层也区分用…

【MQTT协议】使用Mosquitto实现mqtt协议(二):编写视频帧的发布/订阅服务

目录一、Mosquitto中的QoS定义QoS1和3区别二、安装base64库三、cjson简介四、主程序代码五、调用Mosquitto库使用的cmakelist更多内容详见 【MQTT协议】使用c实现mqtt协议(Mosquitto源码编译)一、Mosquitto中的QoS定义 MQTT协议中的QoS(Qual…

CLIP论文拜读及理解

文章目录一、clip论文阅读二、prompt1.除prompt之外的预训练语言模型2.prompt2.1. prompt定义2.2. prompt类型2.3. prompt重构2.3.1 prompt template2.3.2 Answer engineering2.4 多个 prompt的使用2.5 prompt的训练总结参考(博文、论文)一、clip论文阅读…

Windows系统安装WSL,并安装docker服务

背景 因为工作需要,要在电脑上执行sh脚本,并启动docker服务执行具体逻辑。因为我的电脑是windows系统,对做本任务来说,比较吃力,所以想到使用wsl,让windows电脑具有linux电脑的能力。 什么是 WSL 2 WSL 2 …

JVM的类加载的过程以及双亲委派模型

目录 1、加载 (加载字节码文件,生成.class对象) 2、验证(验证Class文件是否符合规范) 3、准备 (为静态变量分配内存并设置变量初始值) 4、解析(初始化常量池中的一些常量&#…

索引的分类

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

Android opencv

install cmake cpp folder,新建c项目 获取 OpenCV4Android SDK O4A_SDK 下载,并解压 ~/Downloads/OpenCV-android-sdk$ tree -d -L 2 . ├── apk ├── samples │ ├── 15-puzzle │ ├── camera-calibration │ ├── color-blob-detection │ ├…

文件:IO流

1. 什么是IO /O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程;java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一…

Vue学习笔记(7. axios异步请求)

1. axios请求方式 方式1:axios({method:"GET",url:"..."}) 方式2:axios({method:"POST",url:"...",data:"..."}) 方式3:axios.get("url...") 方式4:axios.post(…

Python中的35个关键字

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础入门篇 💬个人格言:不断的翻越一座…

【 Spring MVC 核心功能(二) - 获取参数(下)】

文章目录一、使用 RequestBody 接收JSON对象二、使用 RequestPart 上传⽂件三、获取 Cookie四、获取 Header五、存储和获取 Session5.1 存储 Session5.2 获取 Session一、使用 RequestBody 接收JSON对象 有时客户端会通过 post 方式发送 json 格式的请求,那后端就可…

2.3.5双链表

单链表vs双链表 就是既有前驱指针也有后继指针,由line改为double。 双链表的插入怎么实现? s->nextp->next; p->next->priors s->priorp //把p赋给s的前驱指针指向的位置 p->nexts; 如果p刚好是最后一个元素。 p->next->prio…