当ブログはGatsby.jsで作っている。
勘の良い方なら「NetlifyにデプロイしてContentfulで記事書いてるんだろ」とお思いかもしれない。
半分正解で半分不正解である。
ホスティングはNetlifyの代わりに、ValueDomainのコアサーバーをレンタルしている。
理由は、
- ドメインをValueDomainでとっちゃったから
- コアサーバーがメールサーバにもなって月額198円 普通最安でも900円ぐらいする
- 日本にホスティング先がある
という感じ。
こんなニッチなニーズを持つのは日本で私ぐらいかもしれない。
課題になるのが自動デプロイ。
今の時代、これができないとつらい。
なるべくシンプルにしたく、GitHub Actionsを活用し解決。
流れはこうだ。
- 記事公開 Contentfulで記事を公開。するとWEBHOOKでGitHub Actionsが起動してGatsby Buildとデプロイ(FTPアップロード)が走る。無事コアサーバーにホストされる。
- ブログシステム自体の更新 修正ブランチをmasterにマージする。GitHub Actionsが起動。あとは同じ流れ。
FTPでファイルアップ中に、サイトをみられるとバグるかもしれない。
しかし、そこはご愛嬌ということで。
こういうところから仕組み化するのはとても楽しい。
参考までにGitHub Actionsの設定を公開
ci.yml
on:
push:
branches:
- master
repository_dispatch: # webhookを使うために記述が必要
jobs:
build:
name: build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Install dependencies
run: yarn install
- name: Build
run: yarn run build
env:
CONTENTFUL_SPACE_ID: ${{ secrets.CONTENTFUL_SPACE_ID }}
CONTENTFUL_ACCESS_TOKEN: ${{ secrets.CONTENTFUL_ACCESS_TOKEN }}
CONTENTFUL_HOST: cdn.contentful.com
- name: Archive Production Artifact
uses: actions/upload-artifact@master
with:
name: public
path: public
deploy:
name: deploy
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Download Artifact
uses: actions/download-artifact@master
with:
name: public
path: public
- name: Deploy to Core server
uses: SamKirkland/FTP-Deploy-Action@2.0.0
env:
FTP_SERVER: ${{ secrets.FTP_SERVER }}
FTP_USERNAME: ${{ secrets.FTP_USERNAME }}
FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }}
LOCAL_DIR: public # 38行目の指定と合わせる
REMOTE_DIR: /public_html/hogehoge # ご自身のサーバディレクトリを指定すること
ARGS:
--parallel=10 # FTP接続の多重度 多ければ早くデプロイ完了するけど負荷が心配