hexo使用github action自動部署至騰訊云開發(fā)靜態(tài)網(wǎng)站托管服務(wù)以及github pages

原文地址:https://blog.kaygb.com/210.html

談及靜態(tài)網(wǎng)站的好處词渤,無非是快速輕量牵舱,甚至無需購買服務(wù)器,使用github pages或者coding等托管即可實現(xiàn)缺虐。同時芜壁,jsdelivr可對github公開倉庫的靜態(tài)資源進(jìn)行加速,并且自帶全球cdn,快速慧妄,并且完全免費顷牌。

近期,我的博客網(wǎng)站也遷移到了hexo塞淹,并托管在github pages韧掩,由于之前申請過騰訊云開發(fā)的9.9元靜態(tài)網(wǎng)站托管服務(wù),本著不用白不用的原則窖铡,我把國內(nèi)的線路以及博客生成的頁面都放在了騰訊云開發(fā)靜態(tài)網(wǎng)站托管服務(wù)上。

部署原理

首先在本地安裝hexo環(huán)境坊谁,配置好主題以及自定義的配置费彼,然后將整個hexo目錄推送到github私有倉庫。私有倉庫在接受到push之后口芍,使用github action進(jìn)行hexo g和hexo deploy箍铲,將生成的靜態(tài)文件推送到另一個以用戶名.github.io為名稱的倉庫。

如你所見鬓椭,我們需要使用兩個github倉庫來構(gòu)建我們的個人博客颠猴,其中私有倉庫(我們可以將名稱設(shè)置為blog-source)作為博客源文件保存目錄,包含所有的hexo配置文件以及我們的主題文件小染。

這樣的好處就是翘瓮,我們可以完整保留hexo的目錄,不用擔(dān)心文件丟失的問題裤翩,還有就是我們可以直接在github網(wǎng)頁端直接進(jìn)行文章的寫作资盅,并且支持原生的github markdown格式。

在我們commit之后 github action會自動幫我們構(gòu)建以及發(fā)布踊赠,我們只需要安心寫作即可呵扛。

部署方式

本地安裝hexo環(huán)境

這一步可以根據(jù)hexo官方文檔來進(jìn)行配置。

https://hexo.io/zh-cn/docs/

創(chuàng)建兩個倉庫

一個是私有的倉庫筐带,用來存放hexo所有的源文件今穿,另一個是公開的以 用戶名.github.io的倉庫。

設(shè)置一組密鑰對

使用ssh-keygen生成一組公私秘鑰對

ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-actions-deploy

Settings->SSH and GPG keys添加剛剛生成的公鑰伦籍,名稱隨意蓝晒。

在私有倉庫的Settings->Secrets里添加剛剛生成的私鑰,名稱為 ACTION_DEPLOY_KEY鸽斟。

編寫github action配置文件

在hexo目錄創(chuàng)建.github文件夾拔创,并在里面創(chuàng)建workflows文件夾,然后在里面新建blog.yml

貼出我的GitHub action配置文件富蓄,后面再進(jìn)行講解剩燥。

name: Deploy Blog

on: [push] # 當(dāng)有新push時運行

jobs:
  build: # 一項叫做build的任務(wù)

    runs-on: ubuntu-latest # 在最新版的Ubuntu系統(tǒng)下運行
    
    steps:
    - name: Checkout # 將倉庫內(nèi)master分支的內(nèi)容下載到工作目錄
      uses: actions/checkout@v1 # 腳本來自 https://github.com/actions/checkout
      
    - name: Use Node.js 12.x # 配置Node環(huán)境
      uses: actions/setup-node@v1 # 配置腳本來自 https://github.com/actions/setup-node
      with:
        node-version: "12.x"
    
    - name: Setup Hexo env
      env:
        ACTION_DEPLOY_KEY: ${{ secrets.ACTION_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 'kaygb' # 換成你自己的郵箱和名字
        git config --global user.email 'xxx@xxx.com'
        # install dependencies
        npm i -g hexo-cli # 安裝hexo
        npm i
        npm install hexo-deployer-git
        npm i -S hexo-generator-search hexo-generator-json-content
        npm i -S hexo-renderer-stylus
        npm install hexo-generator-feed
        npm install hexo-generator-sitemap
    - name: Deploy
      run: |
        # publish
        hexo clean && hexo generate && hexo deploy # 執(zhí)行部署程序
        
    # 以下是云開發(fā)的配置
    - name: Deploy static to Tencent CloudBase
      id: deployStatic
      uses: TencentCloudBase/cloudbase-action@v1.1.0
      env:
        PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
        PUBLISH_BRANCH: master
        PUBLISH_DIR: ./dist
      with:
        secretId: ${{ secrets.SECRET_ID }}
        secretKey: ${{ secrets.SECRET_KEY }}
        envId: ${{ secrets.ENV_ID }}
        staticSrcPath: ./public

其中,在31至38行內(nèi),可以添加自己所使用的hexo插件灭红,如果本地測試的時候使用了此插件侣滩,一定要記得將那個插件的npm安裝命令寫在那里。

部署至騰訊云開發(fā)靜態(tài)網(wǎng)站托管服務(wù)

云開發(fā)Cloudbase提供了可直接使用的action:https://github.com/marketplace/actions/tencent-cloudbase-github-action

在騰訊云開發(fā)控制臺獲取token:https://console.cloud.tencent.com/cam/capi

然后在項目 Setting/ Secrets 里設(shè)置 SECRET_ID, SECRET_KEY, ENV_ID 信息

根據(jù)文檔做出修改然后添加在blog.yml后面

# 以下是云開發(fā)的配置
    - name: Deploy static to Tencent CloudBase
      id: deployStatic
      uses: TencentCloudBase/cloudbase-action@v1.1.0
      env:
        PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
        PUBLISH_BRANCH: master
        PUBLISH_DIR: ./dist
      with:
        secretId: ${{ secrets.SECRET_ID }}  
        secretKey: ${{ secrets.SECRET_KEY }}
        envId: ${{ secrets.ENV_ID }}
        staticSrcPath: ./public

遇到的問題

同時变擒,目前我也遇到很多問題君珠,包括到現(xiàn)在為止還無法解決的問題。

hexo推送到倉庫失敗的解決辦法

一般來說是無法推送.git目錄的娇斑,如果你使用的主題是直接使用git clone下來的策添,那么一定就會存在.git目錄,這時我們可以在.gitignore文件內(nèi)忽略此目錄或者直接刪除.git文件夾毫缆。由于我是直接刪掉文件夾唯竹,所以另一種方式請大家自行嘗試。

hexo無法部署推送點開頭的文件夾 .github

其實我最開始是想在公開倉庫設(shè)置一個github action苦丁,在推送到公開倉庫之后再由公開倉庫的action推送到騰訊云 開發(fā)浸颓,但是不知道為何hexo deploy的時候無論如何都不會將.github文件夾推送上去,即使配置了skip_renderinclude也不行旺拉,但是我在本地hexo g的時候就可以在public目錄生成.github文件夾产上,并且我在網(wǎng)頁端公開倉庫嘗試創(chuàng)建action文件,可以推送成功蛾狗,但是私有倉庫推送之后action文件就會被覆蓋晋涣,目前暫時無法解決這個問題。

所以只能妥協(xié)在同一個倉庫進(jìn)行構(gòu)建推送沉桌,由于處理的文件較多姻僧,所以每次的部署都會給我發(fā)送一封構(gòu)建失敗的郵件,但它其實是已經(jīng)部署成功了蒲牧,我查找了很多的資料撇贺,目前暫未解決這個問題,如果您遇到這個問題并且具有解決辦法冰抢,煩請您告知松嘶,非常感謝!

參考文章

https://juejin.im/post/5da03d5e6fb9a04e046bc3a2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挎扰,一起剝皮案震驚了整個濱河市翠订,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遵倦,老刑警劉巖尽超,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梧躺,居然都是意外死亡似谁,警方通過查閱死者的電腦和手機傲绣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巩踏,“玉大人秃诵,你說我怎么就攤上這事∪恚” “怎么了菠净?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長彪杉。 經(jīng)常有香客問我毅往,道長,這世上最難降的妖魔是什么派近? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任煞抬,我火速辦了婚禮,結(jié)果婚禮上构哺,老公的妹妹穿的比我還像新娘。我一直安慰自己战坤,他們只是感情好曙强,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著途茫,像睡著了一般碟嘴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上囊卜,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天娜扇,我揣著相機與錄音,去河邊找鬼栅组。 笑死雀瓢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玉掸。 我是一名探鬼主播刃麸,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼司浪!你這毒婦竟也來了泊业?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤啊易,失蹤者是張志新(化名)和其女友劉穎吁伺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體租谈,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡篮奄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宦搬。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡牙瓢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出间校,到底是詐尸還是另有隱情矾克,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布憔足,位于F島的核電站胁附,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滓彰。R本人自食惡果不足惜控妻,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揭绑。 院中可真熱鬧弓候,春花似錦、人聲如沸他匪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邦蜜。三九已至依鸥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悼沈,已是汗流浹背贱迟。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留絮供,地道東北人衣吠。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像壤靶,于是被迫代替她去往敵國和親蒸播。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354