netlifyはgitと連携しておけば勝手にビルド&デプロイをしてくれるのでめちゃくちゃ楽なんだけど、無料プランではビルド時間が月300分までとなっている。
これを回避するためにgithub actionsを使ってgithub側でビルドしてあげよう。という作戦。
何よりも最初に注意しておくべきなのは、1度gitと連携してしまうと勝手にビルドする設定になってしまうこと。
自動ビルドを停止することはできるけど、それをやるとデプロイまで停止される。
そのためこの方法を取るときは、gitとは連携せずに、ファイルをドラッグアンドドロップで追加することでサイトを追加する方法を取る必要がある。
(運営に連絡したら連携済みのgitとの連携を解除してくれるみたいだけど)
#設定
githubとnetlifyの設定はぐぐったらわかると思うので割愛します。
トークンとサイトIDの設定だけしておいてください。
【参考】
https://qiita.com/nwtgck/items/e9a355c2ccb03d8e8eb0
あとは.github/workflow.deploy.ymlを追加するだけ。
ここで注意したいのはnetlify/actions/cliの部分で--prodを使うこと。
これはぐぐってもよくわからなかったけど、--prodをつけないとnetlifyのデプロイがDeploy Previewになってしまい、publishedにならない。
このせいで結構困ったけど、--prodをつけたらちゃんと自動でデプロイしてくれた。
name: production deploy
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-18.04
env:
GITHUB_TOKEN: ${{ secrets.GIT_TOKEN_COVID19 }}
steps:
- uses: actions/checkout@v2
with:
ref: master
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '10.x'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- run: yarn install --frozen-lockfile
- run: yarn run test
- name: generate
run: |
yarn run generate:deploy --fail-on-page-error
- name: Deploy
uses: netlify/actions/cli@master
with:
args: deploy --dir=dist --prod
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.GIT_TOKEN_COVID19 }}
公開されるデプロイには緑のpublishedというマークがつくが、gitにpushしてもnetlify上ではDeploy Previewというデプロイが表示されるだけで、publishedにならない。
ymlファイルのnetlify/actions/cliの部分で--prodをつけたら解決した。
ぐぐってもよくわからなかったけど、--prodはproductionの略なのかな?