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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【版本控制】Github同步Gitee镜像仓库自动化脚本

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


前言

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

什么是Hub Mirror Action?

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/存在,当然你也可以选择放置在其他地方

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

2.GitHub私钥配置

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

  • 依次点击Settings->Secrets and variables->Actions
  • 点击New respository secret,创建一个名为GITEE_PRIVATE_KEY的secret,值为我们之前生成的密钥对中的私钥(id_rsa)

3.Gitee公钥配置

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

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

4.Gitee生成私人令牌

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

5.Github绑定Gitee令牌

  • 依次点击Settings->Secrets and variables->Actions
  • 点击New respository secret,创建一个名为GITEE_TOKEN的secret,值为Gitee生成的令牌值

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运行情况:

7.多仓库同步推送

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

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

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行为。

总结

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

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
8天前
|
Linux Shell Perl
自动化脚本之Debian 开机时运行通过expect自动执行串口命令
自动化脚本之Debian 开机时运行通过expect自动执行串口命令
15 0
|
2月前
|
jenkins 持续交付
Jenkins自动化部署脚本
Jenkins自动化部署脚本
33 0
|
2月前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
49 1
|
2月前
GitHub和Gitee的基本使用和在IDEA中的集成
GitHub和Gitee的基本使用和在IDEA中的集成
26 0
|
2月前
|
数据采集 人工智能 Rust
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
235 0
|
23小时前
|
弹性计算 运维 Shell
|
6天前
|
开发工具 数据安全/隐私保护 C++
vs2019中同步到github上的用户名错误_控制面板和vs的git全局设置重新登录
vs2019中同步到github上的用户名错误_控制面板和vs的git全局设置重新登录
11 0
|
9天前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
14 0
|
21天前
|
监控 Shell 持续交付
通过Shell脚本实现局域网管理软件的自动化部署流程
本文介绍了如何使用Shell脚本自动化局域网软件部署流程,以简化管理和提高效率。脚本包括定义安装目录、服务器列表和软件包,然后遍历服务器进行传输和解压。此外,还展示了通过Shell脚本监控网络设备和软件状态,并自动将监控数据提交到网站的功能,有助于及时发现和解决问题,提升系统稳定性。通过这种方式,可有效减轻管理员的工作负担,降低成本。
59 0
|
22天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。

热门文章

最新文章