created: 2019-11-04T05:26:47.000Z
circleciのcronトリガーでfirebase/hostingをアップデートする
こんな前提の場合の設定
- 静的サイトをfirebase/hostingに置いている
- circleciのjob上 (dockerコンテナ内) でサイトの更新をしたい
- 日毎で毎日決まった時間に更新したい
circleci上で定時実行する
.circleci/config.yaml
にこんなworkflowを書く- この設定で
yarn install && yarn run release
が毎日2時になったら実行される
workflows:
daily:
jobs:
- update
triggers:
- schedule:
# UTCで記述 (JST14時)
cron: "0 5 * * *"
filters:
branches:
only:
- master
jobs:
# `workflows.daily.jobs` に定義したのと同じ名前
update:
docker:
- image: circleci/node:10.15
steps:
- checkout
- run:
command: yarn install
working_directory: functions/example.com
# このコマンドの中で firebase deploy を叩いている (後述)
- run:
command: yarn run release
working_directory: functions/example.com
firebaseへのデプロイ
yarn run release
をしている package.json はこんな感じ
"scripts": {
"build": "gatsby build",
"deploy:ci": "firebase deploy --token 'xxxxxxxxxxxxxxxxxxxx'",
"release": "yarn run build && yarn run deploy:ci",
}
firebase deploy --token
firebase は ci上でデプロイをするためのトークンを発行することができる
こんなコマンドで払い出すことができる (実行するとブラウザが立ち上がって認証画面に行く)
$ npx firebase login:ci