前言

​ 借助Github Actions实现Github接到推送时,自动部属到Hexo站点,如:Github、Gtiee,原Conding已改为收费,所以不用。。。

以下内容基于本地git可以正常连接Github、Gitee

实现效果:

  1. 本地 推送 到 私库
  2. 私库 自动部署到公开的GitHub、Gitee站点

准备

  • 私有仓库 用于存放源码
  • 站点仓库用于存放公开public,也就blog存放仓库
  • token用于仓库之间的连接
  • 账户用户名、仓库名

步骤

  1. 创建私有仓库,用来存放blog 源码 非public存放仓库

    选择private

    创建完成之后,将自己网站的所有源码,推送到私库。

    记住仓库地址:私有仓库repo 下文用 【SourceRepo】

  2. 创建公开仓库,用于存放public

    先创建私有,创建完成后在设置内开源

    记住public仓库地址:Github / Gitee repo 下文分别用 【GithubRepo】、【GiteeRepo】 代替

    记住public仓库名称:Github / Gitee Name 下文分别用 【GithubName】、【GiteebName】 代替

    分别记住公开仓库地址 HTTPS/SSH,下文涉及根据注释选择

  3. 修改分支,将所有仓库的默认分支均改为:master

    • Github :仓库→ settings → Branches

    • gitee : 略
  4. 生成token

    • Gihub ,具有repo 权限,时间永久。

    • Gitee ,赋予所有权限即可,时间永久。

    token 命名时建议详细说明此Token 用处,避免遗忘误删 下文分别用【GithubToken】【GiteeToken】代替

  5. 在已经推送的【SourceRepo】库中修改_config.yml_配置deploy

    下文用 【Username】代替GitHub、Gitee的用户名

    1
    2
    3
    4
    5
    6
    7
    deploy:
    - type: git
    repo:
    gitHub: https://【Username】:【GithubToken】@github.com/【Username】/【GithubName】.git
    gitee: https://【Username】:【GiteeToken】@gitee.com/【Username】/【GiteebName】
    branch: master
    message: 'Deloyed by Github Actions: {{ now("YYYY-MM--DD HH:mm:ss") }}'
  6. 在私有仓库【SourceRepo】下添加密钥

    【SourceRepo】 👉 Settings 👉 Secrets 👉 Actions 👉New repository secret

    | 变量名 | 值 |
    | :—————————— | :——————- |
    | GITEE_PASSWORD | Gitee账户密码 |
    | GITEE_RSA_PRIVATE_KEY | 【GiteeToken】 |

  7. 配置Github Actions

    【SourceRepo】 👉 Actions 👉New workflow👉 set up a workflow yourself

    填写下面代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    name: 自动部署
    # 当有改动推送到master分支时,启动Action
    on:
    push:
    branches:
    - master
    #2020年10月后github新建仓库默认分支改为main,注意更改
    release:
    types:
    - published

    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - name: 检查分支
    uses: actions/checkout@v2
    with:
    ref: master

    - name: 安装 Node
    uses: actions/setup-node@v1
    with:
    node-version: "12.x"

    - name: 安装 Hexo
    run: |
    export TZ='Asia/Shanghai'
    npm install hexo-cli -g

    - name: 缓存 Hexo
    uses: actions/cache@v1
    id: cache
    with:
    path: node_modules
    key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}

    - name: 安装依赖
    if: steps.cache.outputs.cache-hit != 'true'
    run: |
    npm install gulp-cli -g #全局安装gulp
    npm install --save

    - name: 生成静态文件
    run: |
    hexo clean

    hexo generate

    # hexo douban # 根据自己插件选择

    # hexo bangumi -u #bilibili番剧更新

    gulp

    - name: 部署
    run: |
    git config --global user.name "like977" # github 用户名
    git config --global user.email "1768045871@qq.com" # 邮箱
    git clone 【GithubRepo】 .deploy_git
    # 此处务必用HTTPS链接。SSH链接可能有权限报错的隐患
    hexo deploy

    - name: 同步到 Gitee
    uses: wearerequired/git-mirror-action@master
    env:
    # 注意在github私有仓库的Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
    SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
    with:
    # 注意替换为你的 GitHub 源仓库地址 SSH
    source-repo: "【GithubRepo】"
    # 注意替换为你的 Gitee 目标仓库地址 SSH
    destination-repo: "【GithubRepo】"

    - name: 构建 Gitee Pages
    uses: yanglbme/gitee-pages-action@master
    with:
    # 注意替换为你的 Gitee 用户名
    gitee-username: 【Username】
    # 注意在在github私有仓库的Settings->Secrets 配置 GITEE_PASSWORD
    gitee-password: ${{ secrets.GITEE_PASSWORD }}
    # 注意替换为你的 Gitee 仓库
    gitee-repo: 【Username】/【GiteeName】

    修改部分

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    - name: 部署
    run: |
    git config --global user.name "【Username】" # github 用户名
    git config --global user.email "1768045871@qq.com" # 邮箱
    git clone 【GithubRepo】 .deploy_git
    # 此处务必用【GithubRepo】的HTTPS链接。SSH链接可能有权限报错的隐患
    hexo deploy

    - name: 同步到 Gitee
    uses: wearerequired/git-mirror-action@master
    env:
    # 注意在github私有仓库的Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
    SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
    with:
    # 注意替换为你的 GitHub 源仓库地址 SSH
    source-repo: "【GithubRepo】"
    # 注意替换为你的 Gitee 目标仓库地址 SSH
    destination-repo: "【GithubRepo】"

    - name: 构建 Gitee Pages
    uses: yanglbme/gitee-pages-action@master
    with:
    # 注意替换为你的 Gitee 用户名
    gitee-username: 【Username】
    # 注意在在github私有仓库的Settings->Secrets 配置 GITEE_PASSWORD
    gitee-password: ${{ secrets.GITEE_PASSWORD }}
    # 注意替换为你的 Gitee 仓库
    gitee-repo: 【Username】/【GiteeName】
  8. 注意事项

    在生成静态文件时,根据自己的插件配置填入执行命令,没有相应的插件可注释掉,同时,如果仓库源码存在bug,hexo 命令将停留在错误点,可以在本地修改三连无误后再推到仓库。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    - name: 生成静态文件
    run: |
    hexo clean

    hexo generate

    # hexo douban # 根据自己插件选择

    # hexo bangumi -u #bilibili番剧更新

    # gulp #压缩

运行测试