扫码阅读
手机扫码阅读
GitHub Actions 真香系列之自动同步镜像仓库
98 2024-01-25
GitHub 虽然在国内访问慢,但是依旧不能阻挠国内开发者的使用,我们一般也会在 Gitee 或者其他托管平台创建一个镜像,用来方便不能正常访问 GitHub 的开发者。
但也有一个问题,自动同步是个问题,Gitee 有提供一个同步按钮,但是需要人工去手动单击一次才能同步,很不方便。
那么有什么办法可以自动同步吗?当然可以,例如使用 WebHook ,在 GitHub 配置一下,然后调用我们设置的 WebHook 来推送到 Gitee 上,这样还需要一台服务器...
有没有更简单的方式呢,答案是有的,可以直接使用 GitHub Actions 来实现同步镜像的功能。
要复制存储库而不对其进行 fork,可以运行特殊克隆命令,然后镜像推送到新仓库。
git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
cd repository-to-mirror
git remote set-url --push origin https://github.com/exampleuser/mirrored
git fetch -p origin
git push --mirror
几条命令就可以实现,不过这里还需要注意,如果使用 https 的地址需要登录才能推送,所以建议我们使用 ssh 的方式
将本地的私钥设置到 Github repo 的 settings/secrets
中,修改 remote 的地址为 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
注意修改自己的仓库地址哦~
原文链接:
https://mp.weixin.qq.com/s?__biz=MzAwOTgzNjY4MA==&mid=2247483815&idx=2&sn=f5e37c41bf8959ba2bf45248d37c0ae5
鲁飞的其他文章
PHP8正式版发布,带来了注解和JIT
PHP8 正式版已经发布,来看看都有哪些新特性
JavaScript 如何实现在搜索中忽略变音符号
变音符号是指添加在字母上面的符号,以更改字母的发音或者以区分拼写相似词语。
使用Composer Scripts为依赖进行瘦身
常见的 SDK 都会将所有功能都集成在一个代码库中,本文以腾讯云开发者工具套件(SDK)3.0 为例。
微信扫描带参数的二维码事件推送返回 qrscene_0
在调用微信接口时需要注意数据格式,不要只关注参数
simps/mqtt:适用于 PHP 的 MQTT 协议解析和协程客户端
也许这是第一个支持 MQTT v5.0 协议的 PHP library…
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线