Github Actions自動部署hexo博客到阿里雲OSS

1. 爲何我要持續部署

經過Hexo搭建的我的博客,雖然很強大、很方便,輸入hexo clean&&hexo g -d就能快速生成靜態頁面並部署訪問。但Hexo生成的是靜態頁面,無後端,這些工做都是在本地的電腦上操做的,若是更換電腦了,還須要在 github 上衝下拉取源代碼,從新搭建環境再部署。若電腦不在身邊想要隨時編輯文章,就有點困難了。另外,每次在本機部署完,還要將源代碼push到倉庫。node

這樣操做顯然是有些繁瑣的。好在Github Actions提供瞭解決方案,能夠爲倉庫添加自動化的操做,將Hexo博客源代碼(不是生成的public文件夾,是整個項目代碼)放在 Github 上,編寫Github Actions的工做流程後,每次只需將本地pushGithubGithub Actions會幫咱們自動完成全部的部署工做。git

個人博客是部署到阿里雲OSS,支持 CDN 加速,全站開啓HTTPS訪問,關鍵是費用超級低!github

2. 整體部署思路

  • Hexo 博客項目上傳到 Github
  • 在阿里雲OSS中建立Bucket,並配置爲靜態頁面託管
  • 拿到BucketAccessKeyIdAccessKeySecret,配置進 Github 倉庫裏
  • 編寫Github Actions工做流程
  • 本地觸發push命令時,Github Actions開始自動部署

3. 實現部署過程

3.1 上傳 Hexo 項目

這個就不用說了吧,在 Github 上建立個私有倉庫,將本地的 hexo 博客項目源代碼上傳上去。npm

另外說一點,我刪除了.gitignore文件,將項目的所有文件都上傳到倉庫了(包括node_modules等等),這樣每次Github Actions每次在部署時,不用從新下在所需的依賴包了,可能速度會快一點吧(我也不知道會不會快一點)。可是第一次 Push 時,所需的時間很長,自行考慮要不要這樣作。gulp

3.2 建立Bucket

在阿里雲OSS中建立Bucket,注意建立的時候,讀寫權限必定要改成公共讀ubuntu

建立完成後,在基礎設置中,找到靜態頁面,做以下配置:後端

隨後能夠配置該Bucket訪問的域名,配置 CDN 加速,並上傳HTTPS 證書。點擊傳輸管理bash

3.3 獲取AccessKey

將鼠標放到阿里雲頁面右上角的頭像,點擊AccessKey管理,獲取AccessKeyIdAccessKeySecret,推薦使用子用戶AccessKeymarkdown

由於AccessKey權限很高,直接將其暴露在代碼中很是危險,因此將其配置到 Github 倉庫的Secrets中,至關於做爲常量使用。hexo

在存儲 Hexo 源代碼的倉庫中點擊Settings,找到Secrets,添加兩項。名稱爲KEYSECRET,值分別爲AccessKeyIdAccessKeySecret

3.4 編寫工做流程

在存儲 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按鈕。

3.5 完成!

隨後Github Actions便開始第一次工做,出現綠色勾勾則表示部署成功!快打開域名查看吧~

由於剛剛在遠程倉庫建立了main.yml,能夠先在本地執行git pull,同步遠程最新的文件,再進行push

4. 如何遠程使用

完成部署後,咱們就能夠在脫離本地項目,在遠程倉庫發佈、修改文章啦,即便電腦不在身邊也不怕!

能夠藉助[HexoPlusPlus]實現一個相似後臺的頁面,在這上面發佈新文章、修改文章等操做。

☑ 固然了,也能夠直接在 Github 倉庫中,管理文章。

5. 另外工做

若是電腦在身邊,我仍是習慣在本地管理博客,再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 到倉庫,倉庫又自動完成部署!

相關文章
相關標籤/搜索