本來,打開 blogger ,開始撰寫下一篇文章,然而寫起來卡卡的。不是 blogger 運作起來很慢,而是 blogger 沒辦法和自己的心同步,就跟使用了不順手工具的感覺差不多。
意識到如果是像 LibreOffice Writer / MS Word 一樣的所見即所得界面似乎不對自己的胃口了。畢竟在 Markdown 裡面,想要標題的話,只要在那行文字前面加上 #
就行了。
不,應該是說,如果用 Markdown,在意的是文字的表達模式而不是格式本身…
嗯嗯,總之當下決定找尋其他的解決方案了。
(Markdown cheat sheet: here )
找尋之路
首先想到的就是有沒有現成的部落格系統可以提供使用 Markdown 撰寫的服務。結果當然是有,但是有些要錢,有些也不知道服務起來的情況如何、佈景如何等等。
但是在搜尋的過程中看到了 Github pages 的服務,發現裡面有設計成可以藉著 Jekyll 來幫使用者把 Markdown 的文本轉換成 Html 網頁。( Github pages with Jekyll )
這對千秋來說可說是一記當頭棒喝:因為是第一次知道 static site generator (SSG) 的概念。
不過,此時也想到
只能用 Jekyll 呢,自由度不夠
Github 上雖然放了大量的開放原始碼軟體,但它服務軟體本身不是開放原始碼的。
簡單的說就是千秋龜毛想太多。
不過退一步想,讓我們放上網頁的空間也是免費提供的,或許也不用計較太多吧!總之,要使用 Github pages 的話可以用下面的應對方式
要破除 Github pages 只能用 Jekyll 的限制的話,那就把建置網頁(產生網頁)的位置從 Gibhub 的主機改到自己的機器上吧!
也就是把產生好的網頁推到 Github pages 上
服務軟體是不是開放原始碼的似乎也不具有如吃飯呼吸一般的,「絕對必須具備」的重要性
此時,突然想到自己常用的程式碼倉庫 Gitlab 是否有提供類似的服務呢。結果一搜尋下去竟然有!!而且因為 Gitlab 有免費的 CI 服務,所以並沒有限制必須使用的 static site generator (SSG) 品種。
啊啊,太感謝 Giblab 了!!
那要用哪個 SSG 呢…
以 Gitlab 的設計,就算是自己生出來的 SSG 也可以馬上支援,因為 Gitlab 使用 CI 來幫使用者進行建置以及佈署。
好吧,各位,現在這裡有個難題:到底該利用哪種 SSG 呢?(可見得選擇太多似乎也不見得是好事情)
Gitlab 有個 教學頁面 ,舉了使用 Jekyll 以及 Hexo 為例子。因為千秋跟 Ruby 不是很熟,要是東西壞了沒辦法追原因,所以就決定使用 Hexo 了。
挑選佈景的冗長過程就不贅述了,不過若想挑了佈景就不修改的話,要好好觀察佈景上的特性( tag, category 的呈現、文章列表的呈現等等)。
開工囉
那總之先在本機投下部落格的種子吧!利用上面的教學以及 hexo 的說明
|
|
接著就開始用文字編輯器調整版面,並且編輯第一篇文章的內容了。編輯完成後先在本機測試
|
|
總之經過許多調整之後,感覺文章可以上線了,就加入了如上面 教學頁面 所描述的 .gitlab-ci.yml
檔案,然後就傳到了 chiakikame.gitlab.io
的 Gitlab repo 上。
|
|
等 CI 跑完後,就去 https://chiakikame.gitlab.io/ 看看…404?
排除問題
上網查了,發現有許多人也有這樣的問題。至少看起來是這樣子。這些傢伙都表示隔了幾天之後網站就又莫名得看得到了。不過還是感覺哪裡有點不協調,直到看到了有人表示說「有可能 html 檔案其實沒有被建置出來」。
在 CI/CD 的 Pipeline 上面,點了當時是唯一一個 pipeline ,狀態上面寫 passed 。欸欸,不是通過了嗎?
來看看有沒有紀錄檔。所以點入那個 passed ,進入了 Pipeline 頁面,接著點選 pages 工作,有 log 啦!喔喔!最下面有列出生產出來的檔案… index.html
呢?往上一捲,發現有錯誤
|
|
等等的,類似這樣的錯誤有一些。當時以為是 CI 上用的 node 版本太舊了,所以修改了 .gitlab-ci.yml
的內容。令它使用最新的 node 8.5 。結果現在連 pass 都拿不到了!
為啥呢,因為 log 裡面有這樣的東西
|
|
利用 Google 發現這樣的錯誤可以利用調整 .gitlab-ci.yml
來規避:在 - npm install hexo-cli -g
之前加入
|
|
就通過了,但是又回到了原點。(上面的「某些變數是 undefined」錯誤)。
此時仔細一看,發現這些變數似乎是來自於佈景主題的 _config.yml
中!等等!該不會這檔案沒有被推上去吧!
上去 Gitlab repo 一看,果真是這樣。那為什麼這個檔案沒有被推上去呢?是因為佈景主題裡面也有個 .gitignore
檔案,而裡面紀錄說要略過 _config.yml
…
經過這樣的調整,千秋的部落格算是上線了。
上線之後,為了排除似乎是 mixed content 的問題,把 http://7.url.cn/edu/jslib/comb/require-2.1.6,jquery-1.9.1.min
的 CDN 換成了 Cloudflare 的。但現在想想似乎只需要把 http
換成 https
就好了 XD