• Qexo
  • Hexo
  • Github

  • Hexo博客下 Github Action 和 Qexo 搭建

    准备

    一个Vercel, Github账号

    一个Mongodb数据库

    可选: Mongodb账号(以便申请免费Mongodb数据库)

    Github Action 搭建

    在你的仓库下新建.github/workflows/main.yml(main可以改 不是分支名字)

    填写

    name: 自动部署
    # 当有改动推送到master分支时,启动Action
    on:
      push:
        branches:
          - main
          #2020年10月后github新建仓库默认分支改为main,注意更改
      release:
        types:
          - published
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
        - name: 检查分支
          uses: actions/checkout@v2
          with:
            ref: main
    
        - name: 安装 Node
          uses: actions/setup-node@v1
          with:
            node-version: "14.x" #16.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
        - name: 生成静态文件
          run: |
            hexo clean 
            hexo bangumi -u #bilibili番剧更新 如果你的博客不需要他 请删除这一行
            hexo generate
            gulp # 如果你的博客不需要他 请删除这一行
      
        - name: 部署
          run: |
            git config --global user.email "i@w03.cc"
            git config --global user.name "Wlogbot"
            git clone https://github.com/wmz1024/wmz1024.github.io.git .deploy_git
            # 此处务必用HTTPS链接。SSH链接可能有权限报错的隐患
            # =====注意.deploy_git前面有个空格=====
            # 这行指令的目的是clone博客静态文件仓库,防止Hexo推送时覆盖整个静态文件仓库,而是只推送有更改的文件
            hexo deploy
        - name: 发布npm包 # 不需要请删除这一部分
          if: env.NPM_TOKEN && env.NPM_NAME
          run: |
            cd public
            node index.js
            npm config set //registry.npmjs.org/:_authToken=$NPM_TOKEN
            npm publish
          env:
            NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
            NPM_NAME: ${{ secrets.NPM_NAME }}
    

    前提 请安装你的deploy的插件 也有一个不用hexo d的插件 但是我这里就不演示了

    创建完点进Actions看看是否执行了一下 (没有执行确保你打开了workflow且分支名正确 出现spawn failed错误请前去 https://blog.zhheo.com/ 查找一下

    搭建Qexo

    在这里演示Vercel下环境部署搭建!

    先申请Mongodb

    如果你有自己的数据库可以用自己的

    没有 进入 https://mongodb.com 注册一个 (是Free的!!!)

    区域选择US-East-1 初始化过后点connect (允许所有IP访问)

    Vercel部署

    https://vercel.com/new/clone?repository-url=https://github.com/am-abudu/Qexo 点击链接部署

    首次部署会报错

    | 名称 | 意义 | 例如↓ | | ------------ | ------------------------ | --------------------------------------- | | MONGODB_HOST | 数据库地址 | mongodb+srv://cluster0.xxxx.mongodb.net | | MONGODB_PORT | 数据库端口 | 27017 | | MONGODB_USER | 数据库用户名(你设置的) | abudu | | MONGODB_DB | 数据库名 | Cluster0 | | MONGODB_PASS | 数据库密码(你设置的) | password |

    把这些都添加进入环境变量

    之后进入配置就可以了!

    Q&A

    Q: Project id是什么?

    A: 进入Vercel你所在的仓库 Setting->Project id

    Q: Github Token

    A: Personal Access Tokens (Classic) (github.com) 就能申请

    Q: Vercel Token

    A: Tokens – Account – Dashboard – Vercel Scope选择Full Account