独自ドメインを導入したら、ブログの表示崩れが発生したので原因と対策を調べた。

予兆

事件の予兆は発生していた。 GitHubで独自ドメイン設定をした後git pushがうまくいかない。 原因はGitHub側で生成されるファイル「CNAME」。

CNAMEの内容としては設定している独自ドメインが記載されているだけ。 上記のgit pushエラーに対してはgit pullを行うことで解消した。

git pull origin master

git pullを経て無事git pushが成功した。

表示崩れが発生

上記git pushの結果表示崩れが発生した。 GitHub上の独自ドメイン設定を確認するとドメイン設定が消えている。 gitのログを見るとCNAMEファイルの削除が発生していた。

何が起きたか

hugoコマンドでCNAMEが消されていた。 詳細には、–cleanDestinationDirオプションをつけて、毎回不要ファイルの削除を行っている。 この削除対象にCNAMEファイルが入っているようで、毎回削除された状態でGitHubにpushされていたようだった。

対策

CNAMEファイルのマスターを退避し、毎回コピーするscriptに差し替えた。 現状のdeploy用のスクリプトは以下の通り。

#!/bin/sh

echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"

hugo --cleanDestinationDir

cp ./CNAME docs


git add docs/

msg="rebuilding site `date`"
if [ $# -eq 1 ]
  then msg="$1"
fi
git commit -m "$msg"

git push origin master