前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitHub Actions 真香系列之自动同步镜像仓库

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

作者头像
沈唁
发布2020-12-25 11:16:24
2.7K0
发布2020-12-25 11:16:24
举报
文章被收录于专栏:沈唁志沈唁志
GitHub 虽然在国内访问慢,但是依旧不能阻挠国内开发者的使用,我们一般也会在 Gitee 或者其他托管平台创建一个镜像,用来方便不能正常访问 GitHub 的开发者。

但也有一个问题,自动同步是个问题,Gitee 有提供一个同步按钮,但是需要人工去手动单击一次才能同步,很不方便。

那么有什么办法可以自动同步吗?当然可以,例如使用 WebHook ,在 GitHub 配置一下,然后调用我们设置的 WebHook 来推送到 Gitee 上,这样还需要一台服务器...

有没有更简单的方式呢,答案是有的,可以直接使用 GitHub Actions 来实现同步镜像的功能。

要复制存储库而不对其进行 fork,可以运行特殊克隆命令,然后镜像推送到新仓库。

代码语言:javascript
复制
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 来实现自动同步镜像

代码语言:javascript
复制
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

注意修改自己的仓库地址哦~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 沈唁志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档