东海一刀 發表於 2020-4-27 15:51:00

搭建GitHub 自动镜像至 Gitee

<h3>GitHub Actions</h3>
<p>  首先简单介绍下 GitHub Actions,其官方介绍页面为:https://github.com/features/actions,介绍语如下:</p>
<p>Automate your workflow from idea to production. GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the way you want.</p>
<p>简而言之就是提供了一个高效易用的 CI/CD 工作流,帮助我们自动构建、测试、部署我们的代码。</p>
<p>  另外它支持三大平台—— Linux、MacOS、Windows,支持任何编程语言,而且官方提供了许许多多的 Actions 库供我们直接使用,帮助我们更快地搭建工作流。<br>GitHub Actions 的官方文档可以见:https://help.github.com/en/actions/automating-your-workflow-with-github-actions,如果大家想好好研究下的话,一定要好好看看。<br><br></p>
<h3>一、准备工作</h3>
<p>1.生成同步用的ssh密钥</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">ssh-keygen</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427152704622-105865797.png" alt=""></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>2.添加公钥文件 id_rsa.pub 的内容至 Github、Gitee的个人配置里,点 Github、&nbsp;Gitee&nbsp;。目的是为了可以使用git协议免输入密码。</p>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427153001799-509913406.png" alt=""></p>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427183438282-243991436.png" alt=""></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>3.新建Gitee私人令牌Token,点这里。添加后复制这次的Token内容。</p>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427153344416-1639900377.png" alt=""></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>4.Fork 工程&nbsp;https://github.com/Yikun/hub-mirror-action&nbsp;。</p>
<p>&nbsp;</p>
<p>5.添加私钥 id_rsa 内容至刚刚 Fork 的 Github 项目 hub-mirror-action。 点击Settings&nbsp;。</p>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427153550047-1838916246.png" alt=""></p>
<p>&nbsp;</p>
<p>然后添加&nbsp;Secrets</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427153647758-1390205008.png" alt=""></p>
<p>&nbsp;</p>
<h3>二、导入仓库(可以跳过,主要是为了能使用Gitee提供的强制同步功能)</h3>
<p>1.导入你需要镜像的仓库</p>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427152501021-1612941757.png" alt=""></p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427153922137-310041024.png" alt=""></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427155702909-1338391997.png" alt=""></p>
<p>&nbsp;</p>
<h3>三、编写workflow (推荐使用ssh模式)</h3>
<p>1.删除fork项目目录下的&nbsp;.github/workflows 的所有工作流配置。</p>
<p>2.添加一个镜像配置&nbsp;gitee-repos-sync.yml&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">########################################
#
#使用参考
#https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">zhuanlan.zhihu.com/p/102977226</span>
#http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">yikun.github.io/2020/01/17/%E5%B7%A7%E7%94%A8Github-Action%E5%90%8C%E6%AD%A5%E4%BB%A3%E7%A0%81%E5%88%B0Gitee/</span>
#https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">github.com/Yikun/hub-mirror-action/blob/master/README_CN.md</span>
#https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">help.github.com/cn/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets</span>
<span style="color: rgba(0, 0, 0, 1)">#
# 建议先在gitee上先导入github的项目,再编辑此文件增加同步功能。这样就能利用好gitee的强制同步功能了。
########################################
name: Gitee repos mirror periodic </span><span style="color: rgba(0, 0, 255, 1)">sync</span><span style="color: rgba(0, 0, 0, 1)"> job

on:
# push推送时触发
#push:
# 定时任务触发
schedule:
    # 每天北京时间9点跑
    # Runs at </span><span style="color: rgba(128, 0, 128, 1)">01</span>:<span style="color: rgba(128, 0, 128, 1)">00</span> UTC (<span style="color: rgba(128, 0, 128, 1)">9</span>:<span style="color: rgba(128, 0, 128, 1)">00</span><span style="color: rgba(0, 0, 0, 1)"> AM Beijing) every day
    </span>- cron:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">0 1 * * *</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">

jobs:
build:

    runs</span>-on: ubuntu-<span style="color: rgba(0, 0, 0, 1)">latest

    steps:
    </span>-<span style="color: rgba(0, 0, 0, 1)"> name: Cache phpdragon src repos
      # 引用发行版的主要版本
      uses: actions</span>/<span style="color: rgba(0, 0, 0, 1)">cache@v1
      with:
      path: </span>/home/runner/work/phpdragon/phpdragon-<span style="color: rgba(0, 0, 0, 1)">cache
      key: ${{ runner.os }}</span>-phpdragon-repos-<span style="color: rgba(0, 0, 0, 1)">cache

    </span>-<span style="color: rgba(0, 0, 0, 1)"> name: Mirror the Github organization repos to Gitee.
      # 引用master分支的脚本支持
      uses: phpdragon</span>/hub-mirror-<span style="color: rgba(0, 0, 0, 1)">action@master
      with:
      #需要被同步的源端账户名,如github</span>/<span style="color: rgba(0, 0, 0, 1)">phpdragon,表示Github的phpdragon账户。
      src: github</span>/<span style="color: rgba(0, 0, 0, 1)">phpdragon
      # 需要同步到的目的端账户名,如gitee</span>/<span style="color: rgba(0, 0, 0, 1)">phpdragon,表示Gitee的phpdragon账户。
      dst: gitee</span>/<span style="color: rgba(0, 0, 0, 1)">phpdragon
      # 用于目的端上传代码的SSH key,用于上传代码
      dst_key: ${{ secrets.GITEE_PRIVATE_SSH_KEY }}
      # 创建仓库的API tokens, 用于自动创建不存在的仓库
      dst_token: ${{ secrets.GITEE_PRIVATE_TOKEN }}
      account_type: user
      # 指定目录cache
      cache_path: </span>/github/workspace/phpdragon-<span style="color: rgba(0, 0, 0, 1)">cache
      # 白名单,仅同步白名单中的repos,如“repo1,repo2,repo3”
      white_list: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hub-mirror-action,spark-example</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      # 仅同步静态列表,不会再动态获取需同步列表(黑白名单机制依旧生效)
      static_list: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">spark-example</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
      # 强制更新
      force_update: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
      # clone方式,使用http、ssh方式进行clone
      clone_style: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ssh</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<p>&nbsp;</p>
<p>3. 提交代码。等待定时任务触发即可。</p>
<p>4.如果要测试,请开启 push 触发。效果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427154556255-1358835884.png" alt=""></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/387466/202004/387466-20200427154705026-1397092644.png" alt=""></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>源码地址:https://github.com/phpdragon/hub-mirror-action</p>
<p>&nbsp;</p>
<p>感谢:</p>
<p>http://yikun.github.io/&nbsp;、https://github.com/Yikun</p>
<p>&nbsp;</p>
<p>参考链接:</p>
<p>巧用Github Action同步代码到Gitee</p>
<p>GitHub Action使用杂记</p>
<p>创建和存储加密密码</p>
<p>Github Action你值得了解的~</p>
<p>你知道什么是 GitHub Action 么?</p>
<p>https://blog.csdn.net/cqcre/article/details/103342314</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/phpdragon/p/12787248.html
頁: [1]
查看完整版本: 搭建GitHub 自动镜像至 Gitee