GitHub Actions 真香系列之自动同步镜像仓库

GitHub Actions 真香系列之自动同步镜像仓库

虽然国内开发者访问GitHub可能会遇到速度慢的问题,但这并没有阻止他们使用该平台。为了方便访问受限的开发者,他们通常会在Gitee或其他托管平台上创建镜像仓库。

然而,自动同步这些镜像仓库是一个难题,尽管Gitee提供了一个同步按钮,但它需要手动点击才能工作,这不够方便。为了解决这个问题,可以使用WebHook来自动推送更新到Gitee,但这需要一台服务器来运行。

更简单的解决方案是使用GitHub Actions来自动同步镜像。为了复制而非fork一个仓库,可以通过特殊的克隆命令来完成,然后将其镜像推送到新仓库。使用HTTPS地址时需要登录认证,因此建议使用SSH方式,将SSH私钥添加到GitHub仓库的设置/秘密中,并修改远程地址为SSH地址。

以下是一个GitHub Actions的工作流程示例,用于实现自动同步:

name: Mirror to Gitee Repo

on: [ push, delete, create ]

jobs:

git-mirror:

runs-on: ubuntu-latest

steps:

- name: Configure Private Key

env:

SSH_PRIVATE_KEY: ${{ secrets.GITEE_PRIVATE_KEY }}

run: |

mkdir -p ~/.ssh

echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa

chmod 600 ~/.ssh/id_rsa

echo "StrictHostKeyChecking no" >> ~/.ssh/config

- name: Push Mirror

env:

SOURCE_REPO: 'https://github.com/sy-records/git-deploy.git'

DESTINATION_REPO: 'git@gitee.com:sy-records/git-deploy.git'

run: |

git clone --mirror "$SOURCE_REPO" && cd `basename "$SOURCE_REPO"`

git remote set-url --push origin "$DESTINATION_REPO"

git fetch -p origin

git for-each-ref --format 'delete %(refname)' refs/pull | git update-ref --stdin

git push --mirror

注意,需要修改上述代码中的仓库地址以匹配个人的GitHub和Gitee仓库。GitHub Actions提供了一个简便的方式来维护镜像仓库的自动同步,而不需要手动操作。

相关画作

自己如何手工DIY一个倒计时牌
365bet注册

自己如何手工DIY一个倒计时牌

📅 09-17 👁️ 419
几种常见的手表表扣,哪种最舒适,最时尚?
365bet平台官网

几种常见的手表表扣,哪种最舒适,最时尚?

📅 09-07 👁️ 5586
蹈字笔顺、笔画顺序
皇冠365bet体育投

蹈字笔顺、笔画顺序

📅 07-09 👁️ 4316