Github Action 部署博客到阿里云OSS

部署博客有很多選擇悍手,國內(nèi)外都有很多服務(wù)可以用泳姐,各有各的優(yōu)缺點:

GithubPages 碼云Pages Netlify Heroku 阿里云OSS
純靜態(tài)托管 否??
CDN加速 是?? 是??
訪問速度 快?? 一般 一般 很快??
支持404重定向 是?? 是?? 是?? 是??
自定義重定向 是?? 是??

具體選擇哪個乍赫,根據(jù)個人對博客的訴求進行選擇。

  • 訪問速度快:優(yōu)先選擇阿里云(國內(nèi)CDN加速)猛铅、其次是碼云(國內(nèi)服務(wù)器)
  • 功能最強:選擇Heroku字支,支持Node.js、PHP等后端

本文章要講的是如何用 GitHub + Github Action + 阿里云OSS 部署博客
因為靜態(tài)博客系統(tǒng)有很多選擇,Jekyll祥款、Hugo、Hexo等月杉。這里選擇Hexo

Github地址
https://github.com/manyuanrong/oss-blog-example

簡書地址
http://www.reibang.com/p/99952652b2dd

創(chuàng)建項目

npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

開發(fā)和編寫博客內(nèi)容

這一塊內(nèi)容有很多文章講解刃跛,請參考其他文章

提交代碼

image.png

代碼提交之后并不會發(fā)生什么事情。只是保持小步提交的好習慣苛萎。接下來我們開始使用GitHub Action來做持續(xù)集成桨昙,生成靜態(tài)頁面。

開通并配置oss

去阿里云創(chuàng)建一個公共讀權(quán)限的 Bucket腌歉,用來托管我們的靜態(tài)網(wǎng)站蛙酪。
選擇香港區(qū)域是為了不用備案也能綁定自定義域名。


image.png

然后我們在阿里云控制臺拿到一份 accesskeys翘盖。用于后面的遠程部署文件到OSS上


image.png

我們將拿到的 accesskeys配置到GitHub項目的 secrets 里面桂塞,后面會在工作流腳本中用來掉調(diào)用API上傳文件到OSS上面。
保存在 secrets 里面馍驯,這樣其他人就不能獲取到你的 accesskeys 阁危,保證安全。


image.png

編寫 Github Action 持續(xù)集成腳本

1.創(chuàng)建持續(xù)集成配置腳本文件
# 使用mkdir創(chuàng)建目錄(windows可以手動建)
mkdir -p .github/workflows
# 使用touch 創(chuàng)建配置文件汰瘫,名稱隨意狂打,后綴名為 ".yml" (window可以手動建立文件)
touch ci.yml

workflows下面每個文件就是一個工作流,可以有多個混弥,一般建一個就可以了趴乡。

2.編寫腳本
# workflow的名稱,會顯示在工作流運行頁面
name: MainWorkflow

# 工作流執(zhí)行的契機:push表示每次push代碼之后都會執(zhí)行
on: [push]

jobs:
  # build job 我們用來做持續(xù)構(gòu)建
  build:
    # 構(gòu)建運行的環(huán)境
    runs-on: ubuntu-latest
    # 構(gòu)建步驟
    steps:
    # 復用 actions/checkout@v1 action蝗拿,拉取最新代碼
    - uses: actions/checkout@v1

關(guān)于 Action 的詳細寫法晾捏,可以參考官方文檔
https://help.github.com/cn/github/automating-your-workflow-with-github-actions/about-github-actions

上面我只寫了 actions/checkout 這個action。這是官方提供的action哀托,我們直接復用就可以了粟瞬。它的作用是拉取最新代碼

由于我們使用了 Hexo ,因此我們需要使用一個action來安裝配置Node.js環(huán)境萤捆。
我們可以去GitHub的市場上尋找別人寫好的Action裙品。
https://github.com/marketplace?type=actions

我們找到并加入一個叫 actions/setup-node 的action,按照文檔我們將工作流腳本進行修改

name: MainWorkflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: actions/setup-node@v1
      with:
        node-version: "12.x"

此時我們安裝了Node.js 12俗或,后面的步驟我們就可以開始執(zhí)行Hexo的構(gòu)建操作了市怎。

我們將配置改成如下

name: MainWorkflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: actions/setup-node@v1
      with:
        node-version: "12.x"
    - name: Build Blog
      run: |
        npm install
        npm install -g hexo-cli
        hexo generate

此時我們添加了一個步驟,用于安裝node依賴辛慰,安裝hexo命令行区匠。最后生成靜態(tài)頁面。

現(xiàn)在我們已經(jīng)有了生成的靜態(tài)頁面,只需要將它部署到我們的OSS上驰弄,我們可以使用 manyuanrong/setup-ossutil 這個action來部署我們的文件

name: MainWorkflow

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: actions/setup-node@v1
      with:
        node-version: "12.x"
    - name: Build Blog
      run: |
        npm install
        npm install -g hexo-cli
        hexo generate
    - uses: manyuanrong/setup-ossutil@v1.0
      with:
        # endpoint 可以去oss控制臺上查看
        endpoint: "oss-cn-hongkong.aliyuncs.com"
        # 使用我們之前配置在secrets里面的accesskeys來配置ossutil
        access-key-id: ${{ secrets.ACCESS_KEY_ID }}
        access-key-secret: ${{ secrets.ACCESS_KEY_SECRET }}
    - name: Deply To OSS
      run: ossutil cp public oss://enok-blog/ -rf

提交代碼麻汰,查看Action運行情況

提交我們的代碼,這個時候去項目的Action菜單下查看運行狀態(tài)戚篙。等一會兒五鲫,你將能看到類似下圖的情況,表示我們的工作流成功執(zhí)行岔擂,并且將自動生成靜態(tài)文件并上傳到OSS上位喂。


image.png

我們可以去OSS上查看,確實上傳成功了乱灵!


image.png

每個OSS Bucket都會分配一個二級域名塑崖。我們可以在地址欄上輸入頁面的路徑進行訪問啦


image.png

不過此時我們?nèi)绻÷缘鬷ndex.html的話,并不能正確訪問到頁面痛倚。這是因為我們的OSS還沒有配置靜態(tài)網(wǎng)站托管選項规婆。

配置oss靜態(tài)頁面托管

在 oss 管理頁面 找到 “基礎(chǔ)設(shè)置” => “靜態(tài)頁面”


image.png
配置默認首頁

這樣我們可以省略index.html訪問了

配置默認404頁面。

這樣當我們輸入任何不存在的路徑是依然能顯示首頁蝉稳。這在于一些SPA單頁應用來說很重要


恭喜聋呢,你已經(jīng)完成了在OSS上部署博客的工作!你可以享受OSS在國內(nèi)外飛速的CDN服務(wù)颠区。還能享受OSS提供的各種圖片處理服務(wù)(壓縮圖片削锰、縮略圖等)

當然,或許你會擔心OSS收費的問題毕莱。但我告訴你器贩,如果只是一個博客,除非真的很多人訪問朋截,否則幾乎每個月都不會產(chǎn)生什么費用蛹稍,遠遠達不到最低收費標準。部服。唆姐。相當于是免費使用的

當然,如果你有自己的域名廓八,不妨在阿里云控制臺和OSS管理面板上自己探索一下奉芦,配置自定義域名訪問。以及HTTPS等等剧蹂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末声功,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宠叼,更是在濱河造成了極大的恐慌先巴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伸蚯,居然都是意外死亡摩渺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門剂邮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摇幻,“玉大人,你說我怎么就攤上這事抗斤∏羝螅” “怎么了丈咐?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵瑞眼,是天一觀的道長。 經(jīng)常有香客問我棵逊,道長伤疙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任辆影,我火速辦了婚禮徒像,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛙讥。我一直安慰自己锯蛀,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布次慢。 她就那樣靜靜地躺著旁涤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迫像。 梳的紋絲不亂的頭發(fā)上劈愚,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音闻妓,去河邊找鬼菌羽。 笑死,一個胖子當著我的面吹牛由缆,可吹牛的內(nèi)容都是我干的注祖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼均唉,長吁一口氣:“原來是場噩夢啊……” “哼氓轰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浸卦,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤署鸡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靴庆,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡时捌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炉抒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奢讨。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焰薄,靈堂內(nèi)的尸體忽然破棺而出拿诸,到底是詐尸還是另有隱情,我是刑警寧澤塞茅,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布举塔,位于F島的核電站十艾,受9級特大地震影響买鸽,放射性物質(zhì)發(fā)生泄漏查剖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一鞭光、第九天 我趴在偏房一處隱蔽的房頂上張望吏廉。 院中可真熱鬧,春花似錦惰许、人聲如沸席覆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佩伤。三九已至,卻和暖如春卦睹,著一層夾襖步出監(jiān)牢的瞬間畦戒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工结序, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留障斋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓徐鹤,卻偏偏與公主長得像垃环,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子返敬,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355