《Mysql必知必会》读书笔记 jar包名中自动添加git commit id PyCharm教学视频学习笔记 《SQL基础教程》简要总结 《设计师要懂心理学》读书笔记 MySQL与MariaDB学习笔记 WDT (Folly) 安装指南 -- CentOS 7 [solved]Page build failed(Jekyll) 数据包过滤及分析实例 tshark tcpdump Scala Tour 学习总结 “Docker容器和容器云”读书笔记(1) “Docker Practice”读书笔记 “图解基础设施设计模式”小结 “图解服务器端网络架构”小结 Python网络安全编程 数据包解析笔记 华为挑战赛(1) DDoS攻击防御与云服务 基于网络回溯分析技术的异常行为分析 “Linux程序设计”小结(进程间通信) C语言编程规范(华为软件精英挑战赛) 2017阿里在线编程题--单源最短路径问题 2017年阿里在线编程题-- 数串分组 Uinx/Linux上的帮助查询命令 你懂C,所以C++不在话下 一篇特别长的总结(C专家编程) 程序员面试金典--笔记(精华篇) C陷阱与缺陷--笔记 半小时搭建电子商务网站--opencart linux网络知识和工具(持续更新) 网卡参数查询及设置工具ethtool 高性能流量生成工具trafgen(DDoS模拟) Linux流量控制工具TC 流量控制工具TC详细说明 tcpdump过滤数据包,结果不对? Lecture 网络攻击与防御技术笔记 gotgit-git权威指南 高效使用MacOS所要知道的 shell内置字符串处理 配置ntp(知其所以然) 360黑客攻防技术分享会--记录 中毒U盘恢复--快捷键病毒 Tor--anonymity network介绍(PPT) IBM bluemix 再读《Linux Shell脚本攻略》 linux shell 学习摘记(9) linux shell 学习摘记(8) linux shell 学习摘记(7) linux shell 学习摘记(6) linux shell 学习摘记(5) linux shell 学习摘记(4) linux shell 学习摘记(3) linux shell 学习摘记(2) linux shell 学习摘记(1) firefox vim 插件 vimperator A Byte of Vim 笔记 windows注册表小知识 安全测试工具篇(开源&商业) 安全及性能测试工具(网站收集) 性能测试工具 屡试不爽的“3个”iPad使用技巧 Shell Shortcuts(和Tab键一样实用) vim--自动添加jekyll post信息头 vim 自动给文件添加头部信息 GitHub Tips (很实用,值得收藏) Linux路由、防火墙、NAT命令

[solved]Page build failed(Jekyll)

2017年08月10日

博客链接: http://codeshold.me/2017/08/jekyll_page_build_failed.html

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

问题

以上是自己向 GitHubPage push 代码之后收到的 build failed 信息(邮件全部内容)!
自己很诧异,因为距离上次成功push && build后,我从未做过任何配置文件的修改(中间仅隔了几天),而且自己本地测试跑Jekyll, build也是成功的(bundle exec jekyll serve)并没有出现任何的报警和 failed 信息(本地重现不了)!
根据Github邮件中的链接,自己一个个都仔细看了,然并没有任何的帮助。于是自己给Github Staff发邮件希望能获取到更详细的错误信息,之后收到的回复如下:

Here’s the full error we’re seeing:
[31m Liquid Exception: 1 is not a symbol nor a string in sitemap.xml[0m
[31m Fatal: TypeError[0m
[31m 1 is not a symbol nor a 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/
Hope this helps!

上述信息当时也并没有给我什么具体的帮助,只是提到了自己的 sitemap.xml 文件中有语法类的错误,但是 近一年我从未修改过 sitemap.xml 文件啊! 尝试google,但也没有帮助。

好吧,反正第一步应该是在本地复现该错误,之后找到解决方法也方便!

解决

  1. 本地不能重现GitHubPage上的错误,第一反应是 Jekyll 版本可能和GitHubPage 服务器上的不一致
    • 核实后发现本地的Jekyll的版本号是 3.4.3, 而官方的版本是 3.5.1,既然这样那就升级呗!
    • 但这里又有一个坑,升级之前最好先删除本地的Gemfile.lock文件,如果不删除的话bundle update jekyll不会升级到最新的3.5.1版本,其默认只升级到的Gemfile.lock文件中指定的最新版本,除非你在Gemfile强制写入了github-pages的版本信息,如gem 'github-pages', '~> 148'(参考链接)再update! 当然,直接删除lock文件比较方便,此时Gemfile中只需要有gem 'github-pages'信息就行!具体原因如下

      第一次 运行 bundle install 时会自动生成 Gemfile.lock 。
      以后每次运行 bundle install 时,如果 Gemfile 中的条目不变 bundle 就不会再次计算 gem 依赖版本号,其会直接根据 Gemfile.lock 检查和安装 gem。若出现依赖冲突时可以通过 bundle update 更新 Gemfile.lock。所以如果想全部更新,直接删除lock文件再update就行,参考stackoverflow

    • 简单说,升级Jekyll的方式有两种:一种是删除Gemfile.lock文件后update;第二种是修改Genfile文件后update
    • 如下,Jekyll升级成功(顺带着自己也把bundle升级了):
        RICHIEWFSHI-MB0:wenfengshi.github.io wenfeng$ bundle exec jekyll --version
        jekyll 3.4.3
              
        RICHIEWFSHI-MB0:wenfengshi.github.io wenfeng$ bundle update jekyll
        ......
        Using github-pages 148
        Bundle updated!
              
        RICHIEWFSHI-MB0:wenfengshi.github.io wenfeng$ bundle exec jekyll -v
        jekyll 3.5.1
      
  2. 本地开始重现问题后,bundle jekyll serve -V -t启动Jekyll
    • 执行的打印信息如下,显示是和sitemap.xml有关!
      image_1bn3u1uc81qv4c0ghu522d1cmkp.png-100.3kB
    • 额,好吧,自己尝试先把sitemap.xml文件删掉, 于是乎,build 成功了! – 找到了一个暂时解决问题的方法!!!
    • 另外最好修改 _config.yml中gems配置信息,如果不修改运行jekyll时也会报警告, 如下(最开时google相关的错误时也发现了这些 链接一 , 链接二)!
      image_1bnbe3t4dr763sgbemehsuj39.png-85.6kB
    • _config.yml git log 修改记录如下
        diff --git a/_config.yml b/_config.yml
        index 6455447..6a95083 100644
        --- a/_config.yml
        +++ b/_config.yml
        @@ -129,4 +129,4 @@ exclude: ["README.md"]
               
        -gems: [jekyll-paginate]
        +plugins:
        +    - jekyll-paginate
      
    • 至此,自己的Jekyll是能正常跑起来了的,GitHubPage上也可以,解决方式就是 删除Gemfile.lock文件,更新jekyll,删除sitmap.xml文件,修改_config.yml配置文件
  3. 但是我需要sitemap.xml文件啊, 额, 这个有一种更方便的方法
    • _config.yml文件中添加插件jekyll-sitemap,然后bundle exec即可, 参考Sitemaps for GitHub Pages
    • 自己的_config.yml插件配置如下

        plugins:
            - jekyll-paginate
            - jekyll-sitemap
      
  4. 至此困扰了自己一段时间的问题圆满解决了
    • 删除Gemfile.lock 文件,更新jekyll
    • 修改_config.yml 中插件的配置, 删除自己编写的 sitemap.xml
    • _config.yml中使用 jekyll-sitemap 插件

参考

  1. https://pages.github.com/versions/
  2. https://rubygems.org/gems/jekyll
  3. https://stackoverflow.com/questions/6927442/what-is-the-difference-between-gemfile-and-gemfile-lock-in-ruby-on-rails
  4. http://talk.jekyllrb.com/t/liquid-exception-1-is-not-a-symbol-nor-a-string-in-sitemap-xml/724
  5. https://talk.jekyllrb.com/t/what-is-this-error-that-i-am-receiving/722
  6. https://help.github.com/articles/sitemaps-for-github-pages/

知识共享许可协议
SWF's Hacking Dreamonephone 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2018. All rights reserved by onephone. Powerd by Jekyll.