利用Travis IC實現Hexo博客自動化部署

来源:https://www.cnblogs.com/g00gle/archive/2019/10/18/11701295.html
-Advertisement-
Play Games

1.Hexo博客的利與弊 "Hexo中文" 我就預設為看到這篇文章的人都比較瞭解Hexo博客,也都能夠成功手動部署吧。所以第一部分推薦兩篇文章一筆帶過,讓我們快速進入本文的重點內容。實在不知道也不要方先看一看下麵推薦的這兩篇文章。 "手把手教你使用Hexo + Github Pages搭建個人獨立博 ...


1.Hexo博客的利與弊

Hexo中文

我就預設為看到這篇文章的人都比較瞭解Hexo博客,也都能夠成功手動部署吧。所以第一部分推薦兩篇文章一筆帶過,讓我們快速進入本文的重點內容。實在不知道也不要方先看一看下麵推薦的這兩篇文章。

手把手教你使用Hexo + Github Pages搭建個人獨立博客——令狐蔥

Hexo + github 打造個人博客——zdy0_2004

還有一個專欄:
Hexo / 總共13篇——水寒

感謝以上文章原創作者的分享,推薦純屬自來水。看完這兩篇文章後有沒有覺得自己手裡的Hexo博客非常神奇、非常好用了呢?其實我想說,這個時候的Hexo只是一個殘廢好嗎?你想一想,玩這個博客系統的你一定是熱愛技術的折騰客,比如小明有8臺電腦,他要在8臺電腦上都安裝環境,而且部署還真是個磨人的小妖精,很可能會出現奇奇怪怪的問題。比如在剛接觸Hexo不久的時候我乾過這樣一件純事,配置文件_conffig.yml中有這樣一段代碼:

language: cn
timezone: Asia/Shanghai

我就自作多情地把時區改成Beijing了,之後就出現了無法部署的問題。好久以後一個機會看到別人的文章才明白這個時區是改不得的,醉的是,出錯以後新手真的很難知道錯誤原因。所以如果不能跨終端寫作、自動部署,Hexo的博客功能算什麼呢?算殘廢,沒錯!

針對以上問題,我們今天就來交流一下利用Travis IC實現Hexo博客自動化部署,這樣乾的好處就是終於可以實現多終端發佈博客文章而不用換一次電腦裝一次環境了。

2.Travis IC解決問題

這裡我們就暫時不介紹Travis IC了,感興趣可以到文章後面瞭解一下,我們直接用它來解決問題。

2.1備份

Hexo博客源文件和Github Pages 倉庫文件(生成的網站靜態頁文件)。若你更換了電腦,首先要把源文件拷貝到新電腦里,然後把GitHub Page的倉庫clone到本地。

最終本地要形成這樣兩個文件夾

2.2備份上傳

將備份的文件上傳到GitHub。由於Github Pages 倉庫使我們剛剛拷貝下來的,所以不用管它,重點是源文件。這個時候你就用兩種選擇:
第一種是常見的做法:在Github Pages 倉庫直接新建分支,將源文件上傳到分支當中。
第二種是本文要介紹到的方法:直接新建倉庫,將源文件上傳到新倉庫當中。
其實這兩種方法操作上可以說幾乎完全一樣,區別是方法二可以新建私有倉庫,別人是看不到你的源文件的。

先不要著急作出選擇,選擇方法二你要清楚,Travis CI 的網站有兩個,travis-ci.org 專門針對開源項目,Github 上所有的公開倉庫都能夠免費使用;travis-ci.com 針對私有及商業項目,新用戶前 100 次構建是免費的,後面就要收費了。

也就是說,如果你不是GitHub Pro,那麼還是選擇第一種方法或者第二種方法設置公開倉庫,且要在travis-ci.org中操作。

2.3登錄 Travis CI 網站、

訪問travis-ci.org 或者 travis-ci.com“Sign up with Github”使用自己的 Github 帳號登錄。接下來到github就可以 到Applications 中找到 Travis CI 。

點擊congigure,給它我們備份好源文件倉庫的訪問許可權。

2.4Travis CI基本配置

為了能夠實現代碼推送到 Github,需要給 Travis CI Github 的 Persional access tokens,在 settings- Developer settings 可以生成一個。

給repo許可權即可

註意:生成的 token 只會顯示一次,所以一定要及時保存下來,否則就只能刪除重新創建了。

然後進入 Travis 中的項目設置界面,可以給具體的代碼庫進行設置,比如增加環境變數:在 Travis CI 中可以通過設置環境變數來傳遞一些不便於寫在配置文件中的值(密碼、密鑰之類的),在這裡我們設置 GH_TOKGH 環境變數分別用來傳遞 GitHub Personal Access Token 。
註意:如果你在這裡設置的環境變數名不是這兩個,下文的.travis.yml配置的時候要與你的變數名對應。

最後還在 Travis 倉庫配置界面more option--ssetting裡面 環境變數Environment Variables進行配置token方便在構建文件中引用,NAME命名為GH_TOKGH,如下圖

2.5配置.travis.yml

在博客的源碼文件分支下添加.travis,yml配置文件,決定怎麼執行構建任務。

下麵是.travis,yml的內容:

language: node_js
node_js: stable

cache:
    apt: true
    directories:
        - node_modules

notifications:
    email:
        recipients:
            - xxx@gmail.com #你的郵箱地址
        on_success: change
        on_failure: always

# turn off the clone of submodules for change the SSH to HTTPS in .gitmodules to avoid the error
git:
  submodules: false
        
before_install:
    - export TZ='Asia/Shanghai'
    - npm install hexo-cli -g

install:
    - npm install

script:
    - hexo clean
    - hexo g

after_script:
  - cd ./public
  - git init
  - git config user.name "xxx"
  - git config user.email "xxx@gmail.com"
  - git add .
  - git commit -m "Update blog content by Travis CI"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master

branches:
    only:
        - master

env:
    global:
        # Github Pages
        - GH_REF: github.com/xxxr/xxx.github.io.git
        # Coding Pages
        - CD_REF: git.coding.net/xxxr/xxx.git

代碼中另一個環境變數名GH_REF為 Github Pages 倉庫地址env中有賦值。
註意:xxx是你的GitHub用戶名,xxx@gmail.com替換成你在GitHub的註冊郵箱

2.5測試

網上流傳著一種很常見的.travis.yml配置代碼,你可以輕鬆搜索到,很多人在用,但在我這裡卻行不通。通過push本地代碼到GitHub等30多秒看Travis CI的反應,這個過程如果總是報錯的話……那是真的爽啊!


百折千回,慢慢嘗試,也參考了不少大佬的代碼最終在用上面的給出的代碼成功

18次!妥妥的18次,如果你也踩了坑,不要心急,請嘗試修改、調整18次。

3.經驗總結

3.1換電腦以後SSH key重新申請

3.1.1生成新的 SSH Key

$ ssh-keygen -t rsa -C "郵件地址@youremail.com"

如圖所示:

然後要輸入密碼,如果為空的話提交項目時則不用輸入。這個設置是防止別人往你的項目里提交內容。

Enter passphrase (empty for no passphrase):<輸入加密串>
Enter same passphrase again:<再次輸入加密串>

秘鑰生成以後在你的C:\Users\你的用戶名\.ssh下可以看到如下文件

然後你可以複製id_rsa.pub里的內容,或者在Git Bash里繼續執行代碼同樣可以把秘鑰複製到剪切板。

clip < ~/.ssh/id_rsa.pub

3.1.2在GitHub設置中添加key

登陸 GitHub 系統。點擊右上角的 Account Settings--->SSH Public keys ---> add another public keys

3.1.3粘貼秘鑰並保存

把你本地生成的密鑰複製到裡面( key 文本框中), 點擊 add key

3.1.4測試

ssh -T git@GitHub.com

出現下圖所示提示,證明秘鑰配置成功!

3.2換電腦以後備份上傳博客源文件

在進行步驟2.2備份上傳的時候,由於我是新換了電腦,能從倉庫pull下來但無法push到倉庫上去。


原因是沒有對Git文件或文件夾進行申明,還是對Git不熟悉造成的,其實挺有一意思,總結這三板斧的步驟就是,先git init初始化環境,然後選擇要執行的文件範圍,git add .意思是全部選擇,然後申明,最後選擇推拉。具體說明請看下圖。

push成功是這個樣子的:、

3.3Travis IC介紹

Travis IC=Travis Continuous Integration 意思是,在一個項目中,任何人對代碼庫的任何改動,都會觸發 CI 伺服器自動對項目進行構建,自動運行測試,自動編譯,甚至自動部署到測試環境。這樣做的好處就是,隨時發現問題,隨時修複。因為修複問題的成本隨著時間的推移而增長,越早發現,修複成本越低。Travis CI 是線上托管的 CI 服務,用 Travis 來進行持續集成,不需要自己搭伺服器。另外,GitHub推出了官方的自動編譯項目——GitHub Actions,詳情請參考下麵這兩篇文章瞭解:

GitHub Actions 入門教程——阮一峰

Github Actions:再次改變軟體開發——編譯青春

4.參考文章

Github 使用 Travis CI 實現 Hexo 博客自動部署——Michael翔

使用 Travis CI 實現 Hexo 博客自動部署——昔日的夕日(這篇文章部分地方有錯誤,要自行辨別)。

利用CI自動部署hexo博客——一步

使用Travis CI自動部署博客到github pages和coding pages——Akkuman

好的,到這裡我們這篇交流文章就結束了。菜鳥的學習文章,不足之處還望各位大神斧正。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 元組格式 (元素1, 元素2, 元素3, ...) 元素能被訪問,但不能被修改 列表嵌套 列表名[][] print(id(變數名)) 獲取變數的地址值 列表,元組有序集合,字典無序集合 字典 python中唯一的映射類型 格式 字典名 = {'鍵',‘值’,...} 或 字典名 = dict(‘鍵 ...
  • 2019-10-18-21:35:36 面向對象 學面向對象前要先知道什麼叫面向過程,瞭解了什麼叫面向過程才容易理解面向對象 面向過程(強調步驟) 概念:當需要實現一個功能的時候,每一個具體的步驟都要親歷親為,詳細處理每一個細節的過程稱為面向過程 如:把衣服脫下來==>找一個盆==>放點洗衣粉==> ...
  • 在處理模板時,一般情況都是使用變數表達式 ${...} 來顯示變數,還可以使用選定對象表達式 *{...},它也稱為星號表達式。 如果在模板中先選定了對象,則需要使用星號表達式。Thymeleaf的內置對象#object效果等同於星號表達式。 ...
  • (手機橫屏看源碼更方便) 註:java源碼分析部分如無特殊說明均基於 java8 版本。 簡介 大家都知道線程是有生命周期,但是彤哥可以認真負責地告訴你網上幾乎沒有一篇文章講得是完全正確的。 常見的錯誤 有:就緒狀態、運行中狀態(RUNNING)、死亡狀態、中斷狀態、只有阻塞沒有等待狀態、流程圖亂畫 ...
  • day 14 learning python 2019/09/10 [TOC] 49. 網路基礎 49.1 IP地址 IP地址 1. 如何在網路中唯一標識一臺電腦? IP地址 2. 同一臺電腦上的多個程式如何共用網路而不衝突? 網路埠 3. 不同的電腦通信怎麼才能互相理解? 使用相同的協議 ...
  • 我報的錯: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [confi ...
  • 我的遠程伺服器是騰訊雲的ubuntu系統機器,本地我的電腦系統是deepin的系統,使用的IDE是vscode。現在就來使用本地的IDE來調試騰訊雲中為網站項目實現邏輯是訪問網站功能變數名稱後,請求被轉發給騰訊雲本地的9001埠,通過ssh隧道,會直接被轉發給deepin本地系統的9001埠。vscod ...
  • 在處理模板時,可以由模板邏輯決定是否載入數據,以提高性能。 在Spring Boot控制器中設置數據時,使用LazyContextVariable可以實現這功能。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...