Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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) と書いているように、新規サイトはデフォルトで新しいイメージが使われるようです。
ikemo
2019/05から転職しました。
https://www.ikemo3.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした