Skip to content

一个GitHub操作,用于通 SSH 将 git仓库 同步到另一个位置,可以是某个分支,也可以是整个仓库。

License

Notifications You must be signed in to change notification settings

peiyanlu/git-sync-action

Repository files navigation

Git Sync Action

一个GitHub操作,用于通过 SSHgit仓库 同步到另一个位置,可以是某个分支,也可以是整个仓库

声明:内容参考自 Git Mirror Action, 稍作修改适用于自己的需求。

Inputs

source-repo

Required 源仓库的SSH URL。

destination-repo

Required 目标仓库的SSH URL。

destination-branch

Optional 目标仓库的分支;若是存在,则同步指定分支,反之镜像整个仓库。

dry-run

Optional (default: false) 执行试运行。所有步骤都会执行,但不会将任何更新推送到目标存储库。

Environment secrets

  • SSH_PRIVATE_KEY: 创建一个不带密码的 SSH密钥 用来访问两个仓库。在 GitHub 上,您可以将公钥作为 仓库的 Deploy Keys。GitLab 同样有 具有写入权限的 Deploy Keys,对于任何其他服务,您可能需要将公钥添加到您的个人帐户中。

  • SSH_KNOWN_HOSTS: known_hosts 文件中使用的known_hosts。如果变量不可用,则禁用 StrictHostKeyChecking

如果你在 environment 中添加了 SSH_PRIVATE_KEY 或者 SSH_KNOWN_HOSTS, 确保 在workflow中引用环境变量名称 否则不会传递给 workflow

path: Settings -> Environments -> enviroment name -> Environment secrets

使用前请先指定 environment,如下:

jobs:
  git-sync:
    runs-on: ubuntu-latest
    environment: 
      name: your enviroment name
    steps:

github secrets 分三类:environment secrets 优先级最高,然后是 rapository secretsorgnization secrets

Example workflow

name: Sync to Bitbucket Repo

on: [ push, delete, create ]

# Ensures that only one mirror task will run at a time.
concurrency:
  group: git-sync

jobs:
  git-sync:
    runs-on: ubuntu-latest
    steps:
      - uses: peiyanlu/git-sync-action@v1
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
          SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
        with:
          source-repo: "git@github.com:peiyanlu/git-sync-action.git"
          destination-repo: "git@gitee.com:peiyanlu/git-sync-action.git"
          destination-branch: gh-pages

Docker

docker run --rm -e "SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa)" $(docker build -q .) "$SOURCE_REPO" "$DESTINATION_REPO" "$DESTINATION_BRANCH"

License

The Dockerfile and associated scripts and documentation in this project are released under the MIT License.

About

一个GitHub操作,用于通 SSH 将 git仓库 同步到另一个位置,可以是某个分支,也可以是整个仓库。

Resources

License

Stars

Watchers

Forks

Packages

No packages published