Git Advent Calendar 2018 - 14 日目

いきなり登場の ふうせん🎈 Fu-sen. でございます。はじめまして。
ブログを公開するために Git 使う必要がある人です。
でも、本日はあえて git コマンドを出さず、リポジトリ周りの話です。

GitHub Pages、リポジトリ公開のソースから Web サイトを公開する仕組み、
独自ドメインも SSL が効くようになり、それで十分という人もいますが、
GitHub Pages に不満を持っている人もいるかもしれません。
今回は別のサービスと連携し、GitHub などへ git push する作業は変わらずに
別のサービスを経由して Web サイトを公開する方法を紹介します。

独自ドメインでなくてもいいけど、アドレスを少しでも短くしたい

GitHub Pages ではユーザーやプロジェクトだと https://アカウント.github.io/
それにリポジトリが付くと https://アカウント.github.io/リポジトリ/ となります。
ちょっと長くなってしまうんですよね。

そこで ZEIT が提供している Now を紹介したいと思います。

Now 本来の操作はコマンドラインから now コマンドを用いて公開するのですが、
GitHub 連携にも対応しています。「START WITH GITHUB」で連携します。
公開アドレスは https://●●●.now.sh/ 。短くて、そのまま使っても良さそうでしょう?
独自ドメインも設定可能で、SSL 対応。ここまで完全に無料です。
Now は今年 PHP・Node.js・Python・Go などの動的ファイルにも対応しました。
ただし動的ファイル(およびファイル変換)は無料で行える回数に制限があります。
お問い合わせフォームの動作なら使えそうですね。

あとはこんな感じの now.json を生成するだけ。

{
  "version": 2,
  "name": "●●●",
  "alias": "●●●"
}

name は不要なのですが、
手動でコマンドラインから now を実行する時は付けておくと良いですよ。

now.json があるリポジトリに対して Now が反応してデプロイしてくれます。
commit に Now の bot がコメントを付けてくれます。
サンプルのリポジトリ git-to.now.sh を用意していますよ。

なお、now のコマンドライン操作も含めて、日本語解説ページを作ってあります。

静的サイトジェネーターのデプロイも任せたい

自分は今年 Hugo を使いはじめています。
Hugo の場合、hugo コマンドで public フォルダに公開するファイルを生成します。
そのまま Git 管理させようとすると、Hugo 管理フォルダで 1 リポジトリ、
更に public フォルダで 1 リポジトリとなります。
(それとは別に themes を clone や submodule で別リポジトリから得ます)
さすがに 2 リポジトリ管理だとややこしいですね。

そういう人におすすめしたいサービスが Netlify です。

公開アドレスは https://●●●.netlify.com/ になります。
独自ドメインも設定可能で、SSL 対応。完全無料で使用できます。

GitHub 以外にも GitLab、Bitbucket にも対応しています。
GitLab・Bitbucket はプライベートリポジトリ(非公開)を無料アカウントで作れます。
また Bitbucket は https://アカウント.bitbucket.io/ は作れるのですが、
プロジェクト単位は非対応です。そのため、Netlify を代用できます。

というか、このブログ balloon.gq が現在 Netlify 管理なんですけどね。
Bitbucket をリポジトリに使用しています。ここだけ Bitbucket で出しますが……

Bitbucket

あ、これはプライベートリポジトリにしているので、見えませんからね。
master ブランチの / 直下に必要なファイルが置かれています。
ファイル構成がとても少なそうですが、Bitbucket ではこれで正常です。
Bitbucket で Hugo を使う注意は themes は submodule を使う事でしょうか。
clone だと push で失敗します。

Netlify

Netlify へログインして New site from Git で
GitHub・GitLab・Bitbucket のリポジトリを元にデプロイ設定をします。
上が Hugo を用いている例ですが、Netlify は自動検出して入れてくれます。
一応記載しておくと……

  • Build command: hugo
  • Publish directory: public

リポジトリの更新を検出したら、hugo を実行します。
そうしたら public フォルダ下を公開する、という事になります。

あとは Build environment variables のところで
HUGO_VERSION として使用している Hugo のバージョン(0.52 など)を入れておきます。
これを忘れると、古いバージョンの Hugo を使ってデプロイに失敗します。

自分が GitHub+Netlify で公開しているのは……この辺とか。
ソースが特殊ですが……

これはファイルの変換不要で、そのまま公開してもらえれば OK です。
その場合の Netlify はこのような感じです。

Netlify

  • Build command: (空白のまま)
  • Publish directory: /

Netlify は Netlify Drop として、フォルダをドラック&ドロップでサイト公開もできます。
また フォーム機能 や 転送(Redirect・Rewitre)機能 も充実しています。

他の選択肢

動的ファイルでアプリ公開できる Heroku も GitHub 対応、
Docker Hub を用いた Arukas は Docker Hub を GitHub・Bitbucket 連携にして使えます。
同じように Docker などを使用できる WeDeploy というのもあります。
GitLab そのものもデプロイ機能を有します。気になる人はこの辺も試してみて下さい。


Git Advent Calendar 2018