このサイトは現時点でHexoという静的HTMLジェネレーターを使用してGitHubPagesで公開してます。前回の記事記述時点で一時的にGitHubPagesのビルドエラーで記事をpushしても公開されないという問題が発生しました…

先に結論


何がアカンかったかというと、ルートディレクトリに_config.ymlが含まれていたのが原因でした。もしかしたら、ルートディレクトリでなくて、リポジトリに含まれているだけでダメかもしれません。また_config.ymlの中身に問題があった可能性もあるのですが、もう試すのがメンドクサイので試してません。もともとはOKだったのですが、GitHub側で仕様が変わったようです。

以下は対応の経緯とか書いてます。

発端


2016/08/19までは普通にpushしてそれが反映されていたのですが2016/08/25では更新されません…こんな感じでビルドエラーが出るんですね…

エラーメッセージはFailer: The tranquilpeak theme is not currently supported on GitHub pagesです。
tranquilpeakってのは私が使用しているHexoのテーマです。

ハッキリ言って意味不明でしたね。
だって、ローカルでHTML生成してpushしてるだけだもん。ビルドもクソもないんだもん。

対応の経緯


以下の手順で調査 & 対応しました

時系列を確認する

後述しますがmasterforce pushしまくったので履歴は残ってませんが2016/08/19のpush時にはビルドをパスしてました。それまでは、そもそもビルドをパスしたかどうかのアイコンがでてませんでした。つまり、このビルドがはじまったのが8月中旬くらいのようでした。

他のtranquilpeakユーザーのビルドを確認する

次に、このブログのテーマtranquilpeakを使用していて、なおかつGitHubPagesを使用しており、更新頻度の高そうなユーザーのリポジトリを確認しました。これは、tranquilpeakのIssueとかGraphsで絞り込んで確認しました。

その結果、2日前(2016/08/23)でビルドが通っている人を発見できました。

また、その人が起票しているIssueを確認すると、最新のバージョンのtranquilpeak 1.9.1を使用していることがわかりました。

公式のドキュメントを見る

次に、公式のドキュメントTroubleshooting GitHub Pages buildsで該当のビルドエラーがないか確認しました。
が、なかった…

HexoとtranquilpeakのIssueを確認

HexotranquilpeakのそれぞれのリポジトリのIssueを確認しましたが、それらしいものは上がっておらず、tranquilpeakはともかくHexoはかなりのユーザーが居るので、この時点でHexoの問題の可能性は低いと判断しました。

tranquilpeakのバージョンを上げる

前述の通り、最新のバージョン1.9.1でビルドが通っている方がいたので、tranquilpeakのバージョンを上げることにしました。バージョンアップ前は1.7.1でした。

GitHub側がビルド時にわざわざHexoのテーマの一つまで確認している到底思えなかったのですが、エラーメッセージでそう出ていることと、最新バージョンでビルドが通っている人がいるので試すことにしました。あとは1.7.11.9.1の間でHTML5関係の修正が入っていたのでもしかしたら関係ある可能性もありました。

もともとバージョンアップするつもりだったので、ちょうどよい機会というのもありました。結構カスタマイズを入れていたつもりでしたが、幸いにも結構すんなりマージできました。

バージョンあげても変わらない…

まあ、そうですね、あげてもダメでした。

次は私のカスタマイズの影響の可能性を考えて、標準の1.9.1でHTMLを生成してpushしましたが、やはりビルドエラー…。これで完全にtranquilpeak バージョンの問題でない ことはわかりました。(この時点ではtranquilpeakのそのものの問題の可能性は捨てきれませんでした。)

Issueを起票するのか…

この辺りでtranquilpeakのリポジトリにIssueを起票しようか迷ったのですが、2日前にビルドが通っている人がいるのとtranquilpeakのオーナーさんがかなりしょうもないQAにも回答していて、Issueを上げるのは忍びなかったのでもう少し頑張ることにしました。

Hexo標準のテーマに戻す

エラーメッセージがFailer: The tranquilpeak theme is not currently supported on GitHub pagesであればHexo標準のテーマならどやねん。ということで、標準テーマでHTML生成してpushしましたが、当然ダメで…

ここでようやくtranquilpeakの問題でないことがわかりました。

Markdownを書き直す

ビルドエラーで検索していると、GitHub Pagesでのビルド失敗というページを見つけました。これをもとにMarkdownのシンタックスが怪しいところを直しました。実際に間違ってるとことはありましたが、うまくいかず…

force push祭り

GitHub Pagesでのビルド失敗を参考にして、かなり初期のコミットから順にforce pushしました。
(実際は2分岐探索的に、履歴の半分 → さらに半分 → さらに半分…とやりました)

結果、かなり初期のコミットからビルドエラーが発生することがわかりました。

git grep

ビルドエラーが出るコミットから_config.ymlが含まれていたのですが_config.ymlが悪いとは微塵も思っていない私は気付きませんでした。しばらく迷ったのちtranquilpeakという文字列でgit grepした結果…

_config.ymlと一部の記事が引っかかりました。Hexoでは_config.yml内にテーマを指定する項目があるのですが、それが原因だったようです…

_config.ymlmasterから削除したらビルドが通りました…

設定用ブランチ作成

これ以上アレコレやるのがめんどくさかったので_config.ymlは設定用のブランチに移してmasterから削除しました。もうこれ以上はやる気起きない…

なぜ_config.ymlをmasterに入れていたのか


設定ファイルって入れますよね?特に、開発のリポジトリだとほぼなんらかしらの設定ファイル(yml)がはいってますよね?Hexo + GitHubpages_config.ymlをリポジトリに入れてる人は見たことないですが。

その他


もう少しわかりやすいエラーメッセージにしてください。お願いします…

これの対応を夜中までやってたせいで、次の日の飲み会がクッソしんどかったです。まあ、ダラダラ引き延ばしてたバージョンアップができたからよかろうなのですが。