經過Hexo
搭建的我的博客,雖然很強大、很方便,輸入hexo clean&&hexo g -d
就能快速生成靜態頁面並部署訪問。但Hexo
生成的是靜態頁面,無後端,這些工做都是在本地的電腦上操做的,若是更換電腦了,還須要在 github 上衝下拉取源代碼,從新搭建環境再部署。若電腦不在身邊想要隨時編輯文章,就有點困難了。另外,每次在本機部署完,還要將源代碼push
到倉庫。node
這樣操做顯然是有些繁瑣的。好在Github Actions
提供瞭解決方案,能夠爲倉庫添加自動化的操做,將Hexo
博客源代碼(不是生成的public
文件夾,是整個項目代碼)放在 Github 上,編寫Github Actions
的工做流程後,每次只需將本地push
到Github
,Github Actions
會幫咱們自動完成全部的部署工做。git
個人博客是部署到阿里雲OSS
,支持 CDN 加速,全站開啓HTTPS
訪問,關鍵是費用超級低!github
OSS
中建立Bucket
,並配置爲靜態頁面託管Bucket
的AccessKeyId
和AccessKeySecret
,配置進 Github 倉庫裏Github Actions
工做流程push
命令時,Github Actions
開始自動部署這個就不用說了吧,在 Github 上建立個私有倉庫,將本地的 hexo 博客項目源代碼上傳上去。npm
另外說一點,我刪除了.gitignore
文件,將項目的所有文件都上傳到倉庫了(包括node_modules
等等),這樣每次Github Actions
每次在部署時,不用從新下在所需的依賴包了,可能速度會快一點吧(我也不知道會不會快一點)。可是第一次 Push 時,所需的時間很長,自行考慮要不要這樣作。gulp
Bucket
在阿里雲OSS
中建立Bucket
,注意建立的時候,讀寫權限
必定要改成公共讀
。ubuntu
建立完成後,在基礎設置
中,找到靜態頁面
,做以下配置:後端
隨後能夠配置該Bucket
訪問的域名,配置 CDN 加速,並上傳HTTPS 證書
。點擊傳輸管理
:bash
AccessKey
將鼠標放到阿里雲頁面右上角的頭像,點擊AccessKey
管理,獲取AccessKeyId
和AccessKeySecret
,推薦使用子用戶AccessKey
。markdown
由於AccessKey
權限很高,直接將其暴露在代碼中很是危險,因此將其配置到 Github 倉庫的Secrets
中,至關於做爲常量
使用。hexo
在存儲 Hexo 源代碼的倉庫中點擊Settings
,找到Secrets
,添加兩項。名稱爲KEY
和SECRET
,值分別爲AccessKeyId
和AccessKeySecret
。
在存儲 Hexo 源代碼的倉庫中點擊Actions
,點擊set up a workflow yourself
:
將下面全部代碼複製到代碼區,並根據註釋稍做修改:
# workflow name
name: Hexo Blog CI
# 在main分支上有push命令時觸發該流程
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository master branch
uses: actions/checkout@master
- name: Setup Node.js 10.x
uses: actions/setup-node@master
with:
node-version: '10.x'
- name: Setup Hexo Dependencies
run: | # npm install # 若沒有上傳依賴包,則把這行的註釋解除 npm install -g hexo-cli hexo clean hexo generate gulp # 我安裝了壓縮靜態文件的插件,若沒有安裝,將這行刪除 - name: setup aliyun oss
uses: manyuanrong/setup-ossutil@master
with:
endpoint: oss-cn-hangzhou.aliyuncs.com
access-key-id: ${{ secrets.KEY }} # 剛剛配置過的AccessKeyId
access-key-secret: ${{ secrets.SECRET }} # 剛剛配置過的AccessKeySecret
- name: cp files to aliyun
run: ossutil cp -rf public oss://xxxxx/ # 將xxxxx改成建立的Bucket名稱,-rf表示覆蓋
複製代碼
完成後點擊Start commit
按鈕。
隨後Github Actions
便開始第一次工做,出現綠色勾勾
則表示部署成功!快打開域名查看吧~
由於剛剛在遠程倉庫建立了main.yml
,能夠先在本地執行git pull
,同步遠程最新的文件,再進行push
。
完成部署後,咱們就能夠在脫離本地項目,在遠程倉庫發佈、修改文章啦,即便電腦不在身邊也不怕!
能夠藉助[HexoPlusPlus]實現一個相似後臺的頁面,在這上面發佈新文章、修改文章等操做。
☑ 固然了,也能夠直接在 Github 倉庫中,管理文章。
若是電腦在身邊,我仍是習慣在本地管理博客,再push
,雖然不用本身輸入hexo clean&&hexo g -d
,可是要本身輸入git add .
、git commit -m 'xxx'
、git push
,仍是太麻煩了。
由於實在太懶,寫了一個.BAT
腳本文件,放在項目中。
@echo off
git pull
git add .
git commit -m 'WIN10'
git push
複製代碼
這樣我在本地修改完後,只需雙擊運行該腳本便可,自動 push 到倉庫,倉庫又自動完成部署!