如何使用 GitHub Actions 實現 Hexo 博客的 CICD

博主搭建的博客網站是基於hexo生成靜態頁面託管在github pages,一直以來都需要手動去編譯發佈,一直希望有一個能自動編譯部署的工具,找了挺久的,嘗試過hook到Jenkins執行發佈腳本,但是這種是需要資源的,github的actions能完美的解決這個問題。

倉庫準備

項目倉庫 說明
https://github.com/WinterChenS/blog-back 用於存放 hexo 生成的項目,可以理解成源碼
https://github.com/WinterChenS/WinterChenS.github.io 存放 hexo 編譯後的靜態文件,也是博客頁面

祕鑰生成

Hexo編譯之後需要把生成的靜態頁面代碼push到github pages的倉庫,也就是 WinterChenS/WinterChenS.github.io ,沒有祕鑰就沒有權限push。

隨便找一臺電腦或者服務器,生成祕鑰:

ssh-keygen -f github-deploy-key # 三次回車即可

以上步驟會生成github-deploy-keygithub-deploy-key.pub 兩個文件。

配置github倉庫

配置blog-back倉庫

打開 https://github.com/WinterChenS/blog-back/settings/secrets 點擊 Add new secrets,分別在:

  • Name 輸入 HEXO_DEPLOY_KEY
  • Value 輸入前面生成的私有KEY github-deploy-key 的內容

配置WinterChenS.github.io倉庫

打開 https://github.com/WinterChenS/WinterChenS.github.io/settings/Deploy keys,點擊 Add deploy key,分別在:

  • Title 輸入 HEXO_DEPLOY_KEY
  • Key 輸入前面生成的公KEY github-deploy-key.pub 的內容名稱隨意,但要勾選 Allow write access

編寫 Action 腳本

使用前先要申請,直接打開https://github.com/WinterChenS/WinterChenS.github.io/actions/new

main.yml

name: Deploy Blog

on: [push] # 當有新push時運行

env:
  TZ: Asia/Shanghai

jobs:
  build: # 一項叫做build的任務

    runs-on: ubuntu-latest # 在最新版的Ubuntu系統下運行
    
    steps:
    - name: Checkout # 將倉庫內master分支的內容下載到工作目錄
      uses: actions/checkout@v1 # 腳本來自 https://github.com/actions/checkout
      
    - name: Use Node.js 10.x # 配置Node環境
      uses: actions/setup-node@v1 # 配置腳本來自 https://github.com/actions/setup-node
      with:
        node-version: "10.x"
    
    - name: Setup Hexo env
      env:
        ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_KEY }} # 這裏是上面WinterChenS.github.io新增的公鑰:HEXO_DEPLOY_KEY
      run: |
        # set up private key for deploy
        mkdir -p ~/.ssh/
        echo "$ACTION_DEPLOY_KEY" | tr -d '\r' > ~/.ssh/id_rsa # 配置祕鑰
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts
        # set git infomation
        git config --global user.name 'winterchens' # 換成你自己的郵箱和名字
        git config --global user.email '[email protected]'
        # install dependencies
        npm i -g hexo-cli # 安裝hexo
        npm i
        # 拉取主題代碼
        rm -rf themes/*
        git clone https://github.com/WinterChenS/hexo-theme-diaspora.git themes/diaspora
        
  
    - name: Deploy
      run: |
        # publish
        hexo generate && hexo deploy # 執行部署程序
        

修改blog-back根目錄的_config.yml

如果你使用的是http,那麼需要修改爲ssh,已經是ssh就無須修改

deploy:
  type: git
  repo: [email protected]:WinterChenS/WinterChenS.github.io.git
  branch: master

以後只需要把代碼提交到blog-back就可以自動進行編譯發佈了,是不是很爽,當然這只是冰山一角,很多CICD的功能超級強大的,github後面退出codespaces(在線IDE),以後實現真正的遠程辦公也不是問題了,更多的功能大家可以查看官方示例,自行去探索。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章