文章出處

細心的同學會發現雖然公眾號每周還在更新,但是我的博客www.ityouknow.com有一月多都沒有更新了。這其中有兩個原因,第一呢去了新公司996各種忙亂,沒有太多的時間,但最主要的問題是博客更新不了,每次提交都會報錯。

我的博客托管在Github上,每次寫文章的節奏都是這樣子的:在sublime text3上面使用markdown語法來寫文章,寫完文章之后,使用Github Desktop提交到Github,Github會自動進行構建,這樣文章就發布到博客中,然后我再復制文章內容同步到公眾號、博客園、CSDN。這次博客突然提交文章報錯,導致我寫文章的節奏完全被打亂了,為什么會這樣呢,這個事還得從頭說起。

起因

我最開始只是在博客園寫文章,雖然博客園的閱讀量和用戶氛圍都很不錯,但還是有很多的限制,做為一個博客的愛好者,還是希望有自己的獨立博客,考察了很多方案,最后還是覺得Github直接提交代碼發布博客的方式最喜歡,并且還完全免費。使用github pages之后,很長的一段時間內都沒有發現喜歡的博客主題。有一次查找資料的時候偶然發現了DONGChuan同學的這個博客主題Yummy-Jekyll,簡潔大方非常符合我的審美觀,果斷入手。后來又根據自己的情況對博客主題做了一些定制,就成了現在的樣子。

博客使用了一年多,期間一直都很穩定,中間做過一次升級,增加了移動端動態適配。一月前,答應給丑胖俠同學加一個友情連接,按照往常的情況,修改link.md文件添加一條記錄然后提交。過了一會發現博客link頁面并沒有更新過來,反而收到了github自動回復的一封郵件,如下:

主題:[ityouknow/ityouknow.github.io] Page build failure

內容:
The page build failed for the `master` branch with the following error: 

Page build failed. For more information, see https://help.github.com/articles/troubleshooting-github-pages-builds/.

For information on troubleshooting Jekyll see:

https://help.github.com/articles/troubleshooting-jekyll-builds 

If you have any questions you can contact us by replying to this email.

當時正在上班,沒有時間細看,就先放了下來,等有空閑了再仔細瞧瞧。

設法解決

過了兩天剛好得空的時候,就研究下到底是啥原因,想著應該是哪個文件的格式沒寫對導致報語法錯誤,于是回退了最近修改的link.md文件,提交上去之后又報同樣的錯誤,于是索性把最近一周提交的文件全都進行回退,提交之后還是報同樣的錯誤,于是我意識到應該不是因為我最近提交文件導致的此問題,仔細的查看了報錯的郵件內容,按照郵件中提示的兩個網址核對了相關信息,嘗試著修改了一些配置,但還是沒有解決。于是用我蹩腳的英語就給github官方發了一封郵件:

Hi:
     I don’t know why page build failure,I just modified a MD file, and now the page cannot be submitted again。

     Can you tell me the reason,Thank you for your reply.

第二天就收到了Github官方的回復郵件:

Hi ityouknow,
Here's the full error we're seeing:

[31m  Liquid Exception: no implicit conversion of Integer into String in /_layouts/default.html[0m
[31m             Fatal: TypeError[0m
[31m                    no implicit conversion of Integer into String[0m
You can also find this by building your site locally with Jekyll:

https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/

I notice in your Gemfile you're using some outdated dependancies that may be causing the Pages build process to fail. You may want to follow the instructions above, and make sure you're running the same versions of each dependancy listed on this page:

https://pages.github.com/versions/
Hope this helps!

Thanks,
Thomas

郵件內容一方面把具體的報錯信息幫我貼了出來,一方面說我的Gemfile文件中有一些組件版本過低,可能會導致這方面的原因,Github Page使用打包的相關組件版本在這里:https://pages.github.com/versions。我試著按照這個網址的內容修改Gemfile.lock里面的相關組件版本后,再次進行了提交,結果仍然是報這個錯誤,再次陷入了死胡同中。

過了兩天我突然想到,Yummy-Jekyll主題的作者會不會也遇到了這個問題,于是到作者的Github主頁是fork了她的博客相關代碼,在我的Github賬戶下面進行了測試,也報同樣的錯誤,接著又試著將作者Gemfile的相關內容覆蓋我的博客相對應的文件中,結果還是報錯,于是我就在Yummy-Jekyll主題下創建了一個issues,將問題描述了一下,希望作者能給幫忙解決掉,同時根據作者在github留下的郵箱,同步發送了一封郵件。

Hi 您好:

首先非常感謝你開源這個主題,我使用了你的主題做了博客:www.ityouknow.com。最近提交的時候總是報錯,我給Github官方發送了郵件,回復說有可能是組件依賴過低的問題,我自己對前端來說是小白,請求給予幫忙,謝謝。

可以有償幫助,我的微信/QQ:xxxxx.

過了一周,可能作者沒有注意到github提交的issues和我的郵件,然后我再次發送了郵件給作者,仍然沒有收到回復。于是我想使用這個主題的博主應該也不只我一個,會不會他們也遇到了同樣的問題,有的可能有能力解決了此問題。在Github上面查看了Yummy-Jekyll主題的所有fork記錄,查看了很多的博主,大多都僅僅是停留在fork沒動過,或者寫了一兩篇后就停止了,這個方向又陷入了死胡同。

又過了幾天想著自己好好研究下前端和Gemfile興許可以解決掉,于是我將博客代碼在coding.net復制了一份ityouknow,因為使用coding.net在打包的時候可以查看日志,如果報錯可以看到具體的錯誤信息。于是我就一邊試著修改相關代碼和配置,一邊不斷的重新部署查看錯誤日志,再根據錯誤日志在谷歌上搜索相關的解決方案,這個過程持續了大概兩個半天,終究還是沒有解決,前端對我來說仍然像謎一樣。

出現轉機

求助主題作者和自力更生都無果之后,就想著找一些對jekyll和前端比較熟悉的大牛,幫我看看如何去解決。在QQ群中發了一些求助信息后,也沒有找到合適的對象,于是就想到了v2ex,以前總聽說v2ex是一個神奇的社區,但我完全不明白神奇在哪里,以前也使用過一兩次,也么看出個所以然。當然我還是抱著死馬當作活馬醫的態度在v2ex發了一個帖子:

不一會,就收到了一個網友的回復:"上班中,現在沒時間幫你驗證, 你把 readme 刪掉試試是否 ok",雖然我明明知道這個建議是多么的不靠譜,但我還是試了,仍然報錯。突然在v2ex上有一個叫做"lzhr"的小伙伴給我回復了這么一條信息:

這個錯誤好像持續一段時間了,/DONGChuan/Yummy-Jekyll/issues/40 。 

要不換個很近似的:/smartjinyu?tab=repositories

跟著里面的鏈接我找到了這個地址:https://github.com/smartjinyu/smartjinyu.github.io,這個哪是近似,就是和我使用了同一個模板主題。作者也是在原來的模板上進行了一些改造,趕緊瞄了一下Gemfile.lock的最新修改時間,是14天前貌似有戲,于是我迅速復制了一份代碼在coding.net上面進行了測試,但仍然還是報錯,感覺很奇怪給"lzhr"回復了還是不行,不一會"lzhr"又給我回復了信息:"不是啊,我直接 fork,改改地址就行了 https://github.com/RGXY/rgxy.github.io",于是我想是不是coding.net和github的打包環境不一致導致的,于是fork了smartjinyu作者的代碼在github上面進行了測試,果然可以!

就在周五的晚上,終于看到了勝利的曙光。使用對比工具"Beyond Compare"將原來我的博客和smartjinyu的博客進行了一一對比。不斷的改動、提交、查看報錯,持續了一個多小時之后,發現這樣效率太低了,于是轉變了思路,直接在smartjinyu的博客上面進行修改定制,花費了兩個多小時,終于將smartjinyu的博客修改成和我原先博客一模一樣,然后再同步上博客內容,提交上去做了測試,都非常成功,完了一看時間已經凌晨3點了,但終究是搞定了一件事情。

在對照改造的過程中,我發現smartjinyu將依賴的組件包都相應的做了升級,以前很多的模板寫法到現在的環境已經不通過編譯。問題的本質應該是Github官方升級了相關的打包環境,導致博客中有一些寫法和組件包不兼容。雖然最后修改的版本在Github上已經沒有問題了,但我復制到了coding.net上面進行打包測試還是報錯,有機會的話哪位對Jekyll熟悉的朋友可以一起看看,最后再次感謝v2ex的lzhr


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()