Edited at

NetlifyでHugoのextendedバージョンが暫定対応されたので試してみた


はじめに

NetlifyでHugoのextendedバージョンが暫定対応されたので導入してみました。

Netlify が Ubuntu 16.04 の環境を用意してくれたので、普通に Hugo extended が使えるようになりました。

https://twitter.com/GoHugoIO/status/1106282569161687042?s=20


Great news for Hugo users on Netlify -- you can now finally use the full set of Hugo Pipes, including SASS/SCSS, without having to commit any build product to source control.


正式対応の適用手順は最下部に記載します。


Hugoのextendedバージョンとは

リリースページにあるファイルで、 hugo_extended_0.52_Linux-64bit.tar.gz のように extended がついているファイルのことです。

この extended が何を意味しているのかと言うと、Hugo 0.43からサポートされた Hugo Pipes で、SCSS/SASSをサポートしているバイナリです。


Hugo is now released with two binary version: One with and one without SCSS/SASS support. At the time of writing, this is only available in the binaries on the GitHub release page. Brew, Snap builds etc. will come. But note that you only need the extended version if you want to edit SCSS. For your CI server, or if you don’t use SCSS, you will most likely want the non-extended version.



Netlifyでextendedバージョンが動かない理由とこれまでの対応

しかしこれまでNetlifyではこのバイナリは動きませんでした。その理由は、NetlifyのビルドイメージのベースがUbuntu 14.04と古く(2019/04にサポートが切れる)、libstdc++のバージョンが古く、そのままでは動かないためです。


I was told by Netlify several times that this issue is hanging on a upgrade of their build environments from Ubuntu 14.04 (which has an EOL date in April next year).


これまでは、手元でビルドしてできた、以下のディレクトリにあるファイルをリポジトリにコミットする必要がありました。


  • resources/_gen/assets/scss/


暫定対応の内容

先程のチケットの最後に、以下のように書かれています。

PR #197の内容を見ると、Ubuntu 16.04からlibstdc++を取得して展開しているようです。


  • pull request #197をデプロイしたよ。でも問題があったので一部差し戻ししたよ。

  • 開発バージョンはUbuntu 16.04(原文はubuntu 16)にしたよ。もう少ししたらユーザでイメージを選べるようにするよ。


暫定内容を試す

このコメントに書かれている暫定対応を試してみました。この暫定対応の使い方は、チケットで以下のように書かれていました。

LD_LIBRARY_PATH=$HOME/stdc++6/usr/lib/x86_64-linux-gnu ./hugo

要は自分でバイナリを持ってきて、LD_LIBRARY_PATHを指定すればいいみたいです。

具体的には以下の手順で動きました。



  1. Releases · gohugoio/hugoから hugo_extended_0.XX_Linux-64bit.tar.gz を取得して展開

  2. hugoバイナリをリポジトリに入れ、 resources/_gen/assets/scss/sass/custom.scss_* を削除

  3. netlify.toml(または画面から)で、以下のようにコマンドを変更してpush

変更前

[build]

command = "hugo"

変更後

[build]

command = "LD_LIBRARY_PATH=$HOME/stdc++6/usr/lib/x86_64-linux-gnu ./hugo"

問題なく動きました。


正式対応待ち

暫定対応はしたのですが、SCSSのコンパイルを頻繁に行うことはないので、無理に対応する必要はなかったかもしれません。正式版を待ったほうが良さそうです。


正式対応の適用手順


  1. Netlifyにログインし、サイトを選択

  2. 上部のメニュー(横並び)から「Settings」を選択

  3. 左側のメニューから「Build & deploy」を選択

  4. 中ほどにある「Build image selection」にある、「Edit settings」ボタンを選択

  5. 「Ubuntu Trusty 14.04」となっているので、「Ubuntu Xenial 16.04 (default)」を選択して保存



    • (default) と書いているように、新規サイトはデフォルトで新しいイメージが使われるようです。