GitHub Actions 真香系列之自动同步镜像仓库
发布于 2024-01-25
2892
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
鲁飞
扫码关注公众号
扫码阅读
手机扫码阅读
虽然国内开发者访问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提供了一个简便的方式来维护镜像仓库的自动同步,而不需要手动操作。
鲁飞
鲁飞
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
鲁飞的其他文章
给你的项目增加 Git WebHooks
让你的项目支持 WebHooks,并且可以自定义 WebHooks 的规则。
怎么复用 GitHub Actions 的 Workflows
使工作流程可重复使用,而不是从一个工作流程复制并粘贴到另一个工作流程。 自己和有权访问可重用工作流程的任何人都可以从另一个工作流程调用可重用工作流程。
PHPMQTT v1.4.1 版本发布,新增协议调试工具
PHPMQTT v1.4.1 版本发布,在此版本中主要是新增了一个协议调试工具。
GitHub Actions 真香系列之文档自动简繁体转换
GitHub Actions 是 GitHub 推出的 CI\x5cCD 服务,正式版推出后也没有尝试过,最近体验了一下。
使用Composer Scripts为依赖进行瘦身
常见的 SDK 都会将所有功能都集成在一个代码库中,本文以腾讯云开发者工具套件(SDK)3.0 为例。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线