hexo配合github action 自動構建(多種形式)

已經使用HEXO正常構建GitHub頁面

根據github action 給hexo配置自動部署github page

image

前往墨抒穎的個人網站查看純凈版

1. 為倉庫設置訪問密鑰

第一步先生成密鑰,打開命令行並生成一組密鑰

ssh-keygen -f github-deploy-key -C "HEXO CD"

記得跳過密碼啥的,這裡連按三次回車就好

image

隨後我們會獲得兩個密鑰文件,這兩個等下會用到

image

2. 上傳私鑰

github倉庫地址 → Settings → Secrets → New secret

image

點擊new repository secret新建倉庫密鑰

名字 HEXO_DEPLOY_PRI
內容 github-deploy-key文件內的所有內容

image

⚠不要輕易透露你的私鑰⚠

3. 上傳公鑰

這裡要分清你的倉庫->page的形式,公鑰被上傳的倉庫代表著要被部署的倉庫,github不支援同一個(部署)公鑰上傳至多個倉庫

不同倉庫

如果你的hexo程式碼和要部署的頁面不在同一個倉庫

比如你有一些暫時不方便公開的內容,或者你是不想公開你的Hexo程式碼,只想將靜態頁面(文字,圖片,網站主題所用的各個樣式和腳本)部署到github page上其他的內容一律不包含

此時你需要將公鑰上傳到你要部署的倉庫中去

image

名字 HEXO_DEPLOY_PUB 內容 github-deploy-key.pub`文件內的所有內容
image

記得勾選允許寫入許可權

相同倉庫

與上一步類似,只是上傳到的倉庫地址和你的程式碼倉庫地址一樣,不過你一定要確定你有在配置中設置號正確的的分支

配置github action

這裡可以在github上點擊 Action -> new workflow -> set up a workflow yourself隨便挑個模板將內容放進去,也可以在程式碼倉庫中的.github/workflow添加一個hexo-ci.yml然後將以下內容放進該文件中。

記得把 blog_source_branch, username, [email protected]替換成你自己的

name: HEXO CI

on:
  push:
    branches:
    - <blog_source_branch>

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14.x]

    steps:
      - uses: actions/checkout@v1

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}

      - name: Configuration environment
        env:
          HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
        run: |
          mkdir -p ~/.ssh/
          echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan github.com >> ~/.ssh/known_hosts
          git config --global user.name "<username>"
          git config --global user.email "<[email protected]>"
      - name: Install dependencies
        run: |
          npm i -g hexo-cli
          npm i
      - name: Deploy hexo
        run: |
          hexo clean && hexo generate && hexo deploy

然後提交本次更改即可

配置Hexo deploy

打開程式碼倉庫中的_config.yml
將 git 存儲庫從 http 形式更改為 ssh 形式。
發布部署文件的的分支應該倉庫配置的分支一樣

deploy:
  type: git
  repo: [email protected]:moshuying/moshuying.github.io.git
  # example, //github.com/hexojs/hexojs.github.io
  branch: master

你已經完成了所有操作!推送一次看看效果吧。

參考和推薦

hexo中運行shader和threejs

hexo配合github action 自動構建(多種形式)