Github Actions实现Hexo自动化部署

1. 配置SSH

  • 在Windows环境下,安装git。官网地址
  • 安装完成后,在任意文件目录下点击鼠标右键,在弹出的右键菜单中选择git bash here,调出git命令行工具
  • 在命令行工具窗口中输入以下命令,生成密钥文件
    1
    2
    # 生成秘钥
    ssh-keygen -f github-deploy-key
  • 这时当前目录中会生成两个文件
    • github-deploy-key 为私钥文件
    • github-deploy-key.pub 为公钥文件

2. 在Github中配置公钥和私钥

  • 首先转到Hexo源代码仓库,在仓库上方菜单中找到 Settings -> Secrets and variables -> Actions -> New repository secret 创建一个私钥的secrets,如下图所示
    创建私钥
  • 其中Name为自定义的私钥名称,会在之后的步骤中使用,Secretgithub-deploy-key 私钥文件的内容,用vscode等工具打开,将文件中的内容粘贴进去即可
  • 转到Hexo站点目录,在Github中是用户名+.github.io形式的仓库,在仓库上方菜单中找到Settings -> Deploy keys -> Add deploy key,创建一个公钥的key,如下图所示
    创建公钥
  • 其中Title为自定义的公钥名称,Key为公钥内容,用vscode等工具打开github-deploy-key.pub 公钥文件,并将其中内容全部内容粘贴进去即可

3. 创建Gtihub Actions

  • 转到Hexo源代码仓库,在根目录下新建.github目录,下一级新建workflows目录,下一级创建文件deploy_blog.yml。目录结构为[自己博客根目录]/.github/workflows/deploy_blog.yml
  • 用vscode打开deploy_blog.yml文件,输入以下内容
    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
    # 未优化和整理的脚本
    name: Blog CI/CD

    # 触发条件:在 push 到 master 分支后触发
    on:
    push:
    branches:
    - master

    permissions:
    contents: write

    jobs:
    blog-cicd:
    name: Hexo blog build & deploy
    runs-on: ubuntu-latest # 使用最新的 Ubuntu 系统作为编译部署的环境

    steps:
    - name: Checkout codes
    uses: actions/checkout@v2

    - name: Setup node
    # 设置 node.js 环境
    uses: actions/setup-node@v1
    with:
    node-version: '16.x'

    - name: Cache node modules
    # 设置包缓存目录,避免每次下载
    uses: actions/cache@v1
    with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

    - name: Install hexo dependencies
    # 下载 hexo-cli 脚手架及相关安装包
    run: |
    npm install -g hexo-cli
    npm install

    - name: Generate files
    # 编译 markdown 文件
    run: |
    hexo clean
    hexo generate

    - name: 配置 SSH 环境和 Git 环境
    env:
    ACTION_DEPLOY_KEY: ${{ secrets.PRIVATE }}
    run: |
    mkdir -p ~/.ssh/
    echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/id_rsa
    ssh-keyscan github.com >> ~/.ssh/known_hosts
    git config --global user.email "373974021@qq.com" # 注册Github的邮箱
    git config --global user.name "Arthur-Delacroix" #Github的用户名

    - name: 部署博客
    run: |
    npm install hexo-deployer-git --save
    hexo d

4. Hexo Deploy配置

注意,在Hexo源代码仓库中,各类源代码要放在文件在根目录下,否则在推送的时候会有目录丢失等各类问题

  • 在Hexo源代码仓库中,找到配置文件_config.yml,打开后在文件最下方填写以下内容
    1
    2
    3
    4
    5
    6
    7
    # Deployment
    ## Docs: https://hexo.io/docs/deployment.html
    deploy:
    type: git
    # 要推送的目标仓库ssh链接
    repo: git@github.com:Arthur-Delacroix/arthur-delacroix.github.io.git
    branch: master

这样就实现在使用Github Actions,当在本地编辑完博客内并进行push操作后,Github Actions会自动使用Hexo将博客生成为html文件,并推送到指定仓库中了