当ブログはGatsby.jsで作っている。
勘の良い方なら「NetlifyにデプロイしてContentfulで記事書いてるんだろ」とお思いかもしれない。

半分正解で半分不正解である。
ホスティングはNetlifyの代わりに、ValueDomainのコアサーバーをレンタルしている。

理由は、

  1. ドメインをValueDomainでとっちゃったから
  2. コアサーバーがメールサーバにもなって月額198円 普通最安でも900円ぐらいする
  3. 日本にホスティング先がある

という感じ。

こんなニッチなニーズを持つのは日本で私ぐらいかもしれない。

課題になるのが自動デプロイ。
今の時代、これができないとつらい。

なるべくシンプルにしたく、GitHub Actionsを活用し解決。

流れはこうだ。

  1. 記事公開 Contentfulで記事を公開。するとWEBHOOKでGitHub Actionsが起動してGatsby Buildとデプロイ(FTPアップロード)が走る。無事コアサーバーにホストされる。
  2. ブログシステム自体の更新 修正ブランチを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接続の多重度 多ければ早くデプロイ完了するけど負荷が心配
Copyright 2020 shimu.dev