美文网首页
【XXG学习记录02】Gitee自动同步GitHub的仓库

【XXG学习记录02】Gitee自动同步GitHub的仓库

作者: 谢夏戈 | 来源:发表于2020-11-23 18:43 被阅读0次

    前言

    因为国内无法访问到GitHub Pages的原因。
    我把GitHub仓库 同步到了 码云-Gitee 并且启用 Gitee Pages

    我想同时更新两个仓库,也就是两个博客。。。

    • 之前用的方法是 一个本地仓库绑定两个远程仓库(GitHub和Gitee)

    但由于我GitHub Pages的主分支是用 副分支采用GitHub的Actions自动部署的
    (简单说就是,我GitHub只push副分支,所以Gitee也只push副分支,而GitHub的Actions有帮我打包更新到master主分支,而Gitee码云没有更新master主分支)

    这就导致我xxggg.github.io这个博客有更新,而xxggg.gitee.io这个博客没有更新。

    解决方法有很多。
    一:在我的Gitee项目里按一下强制同步那个按钮(但是这。。。)

    image
    二:不用主副分支,分两个仓库,一个源代码,一个打包后的代码。(但是这样每次都要手动打包 还要push两次)
    三:也就是今天要讲的!👇 用GitHub Actions把代码同步到Gitee

    主要参考文章:
    参考文章1
    参考文章2

    主要操作

    在项目根目录下创建 .github/workflows/ 在这个文件夹里再创建vuepress-deploy.yml文件

    image
    • GitHub 的Actions会处理.github下的工作流文件夹workflows
    name: Sync
    
    on: [ psuh ]
    
    jobs:
        build:
            runs-on: ubuntu-latest
            steps:
            - name: Sync to Gitee
                uses: wearerequired/git-mirror-action@master
                env:
                    # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
                    SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
                with:
                    # 注意替换为你的 GitHub 源仓库地址
                    source-repo: "git@github.com:XXGGG/xxggg.github.io.git"
                    # 注意替换为你的 Gitee 目标仓库地址
                    destination-repo: "git@gitee.com:XXGGG/XXGGG.git"
    
            - name: Build Gitee Pages
                uses: yanglbme/gitee-pages-action@master
                with:
                    # 注意替换为你的 Gitee 用户名
                    gitee-username: XXGGG
                    # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
                    gitee-password: ${{ secrets.GITEE_PASSWORD }}
                    # 注意替换为你的 Gitee 仓库
                    gitee-repo: XXGGG/XXGGG
    

    这里面最重要的除了简单更换填写你的github跟gitee对应项目地址以外
    最重要的的就是配置好你GitHub项目里的settings ->secrets 里的GITEE_RSA_PRIVATE_KEYGITEE_PASSWORD

    • GITEE_RSA_PRIVATE_KEY 是你的私钥
    • GITEE_PASSWORD 是你Gitee的账户密码
    image

    如何得到私钥公钥

    参考文章:
    https://blog.csdn.net/fenghuibian/article/details/73350890
    https://gitee.com/help/articles/4181#article-header0

    第一步 生成SSH Key

    打开终端 或者是Git Bash (windows下载git后自带的)

    ssh-keygen -t rsa -C "xxxx@xxxx.com"
    //(xxxx@xxxx.com 为你的邮箱)
    

    按照提示完成三次回车,即可生成 ssh key。
    通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的公钥

    cat ~/.ssh/id_rsa.pub
    

    然后出来的一大串东西都是公钥。

    第二步 把公钥添加到github 和 gitee

    去浏览器登上你的GitHub然后在<code>settings</code>-><code>SSH and GPG keys</code>里添加上公钥(码云gitee同理)

    第三步 测试是否配置成功 ssh -T git@github.com

    打开终端,测试github用

    ssh -T git@github.com
    

    测试itee用

    ssh -T git@gitee.com
    

    若返回 Hi XXX! You've successfully authenticated, but (Gitee.com/GitHub.com) does not provide shell access. 内容,则证明添加成功。

    填上刚刚需要的私钥

    在 ~/.ssh目录下有id_rsa 和id_rsa.pub两个文件
    id_rsa.pub是公钥
    id_rsa 是私钥

    cat ~/.ssh/id_rsa
    

    查看私钥 然后把私钥添加到GitHub项目里的<code>settings</code>-><code>secrets</code> 里的<code>GITEE_RSA_PRIVATE_KEY</code>

    注意 全都要复制 别漏了 开头和结尾也要复制进

    最后

    这就可以啦 每次push都会把GitHub的整个仓库(包括分支的内容) 强制同步到Gitee上

    上面只是在你把本地仓库push到github的时候自动帮你把github仓库拉到gitee上。如果你是写博客,想让博客项目自动打包再自动同步,那就要在这同步仓库之前,设置自动打包。(下面附上自动打包且自动同步的文件配置👇

    name: Build and Deploy
    on: [push]
    
    # 任务
    jobs:
      build-and-deploy:
        # 服务器环境:最新版 Ubuntu
        runs-on: ubuntu-latest
        steps:
          # 拉取代码
          - name: Checkout
            uses: actions/checkout@v2
            with:
              persist-credentials: false
    
          # 生成静态文件
          - name: Build
            run: npm install && npm run build
    
          # 部署到 GitHub Pages
          - name: Deploy
            uses: JamesIves/github-pages-deploy-action@releases/v3
            with:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              BRANCH: master
              FOLDER: public
    
    # 接下来的操作是把github的代码 同步到 码云上 gitee 实现gitee pages的伪自动部署
    
          - name: Sync to Gitee
            uses: wearerequired/git-mirror-action@master
            env:
              # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
              SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
            with:
              # 注意替换为你的 GitHub 源仓库地址
              source-repo: "git@github.com:XXGGG/xxggg.github.io.git"
              # 注意替换为你的 Gitee 目标仓库地址
              destination-repo: "git@gitee.com:XXGGG/XXGGG.git"
    
          - name: Build Gitee Pages
            uses: yanglbme/gitee-pages-action@master
            with:
              # 注意替换为你的 Gitee 用户名
              gitee-username: XXGGG
              # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
              gitee-password: ${{ secrets.GITEE_PASSWORD }}
              # 注意替换为你的 Gitee 仓库
              gitee-repo: XXGGG/XXGGG
    

    主要上面要更换一下你的BRANCH(现在的github有可能变成main了) 还有打包(FOLDER: public)

    对于Gitee Pages前提是你已经开启Gitee Pages哦 首次同步要去开一下Gitee Pages(当然前提是你是准备搞博客或者是别的项目)

    如果你只是单纯想同步到Gitee 那还不如一个仓库地址绑定两个远程仓库呢

    最最后

    欢迎大家来看我的blog(前端萌新一只)
    xxggg.github.io
    xxggg.gitee.io

    相关文章

      网友评论

          本文标题:【XXG学习记录02】Gitee自动同步GitHub的仓库

          本文链接:https://www.haomeiwen.com/subject/tcvviktx.html