CIを最初に入れておくと開発体験が良くなる

最近たまに趣味でどうでもいいサイトを作っているんですが、いちいち手でデプロイするのとかがめんどくさいのでcircle ciを使ってみている。ドキュメントを適当に読み流すだけでも非常に簡単に使えるし、githunとの連携も簡単。↓のような設定ファイルをレポジトリに置いておくだけで、PRを出したらテストを流してくれて、テストが通ってマージをするとfirebase hostingにデプロイしてくれるので、ひたすらコードを書いていれば良い状況になる(完全な初心者なので、設定がおかしいところがあったら教えてください)。

version: 2

jobs:
  deploy:
    docker:
      - image: circleci/node:10

    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package.json" }}
      - run:
          name: 'install dependencies'
          command: yarn
      - run:
          name: 'install firebase tools'
          command: yarn add -D firebase-tools
      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}
      - run:
          name: 'build'
          command: yarn build
      - run:
          name: 'deploy'
          command: ./node_modules/firebase-tools/lib/bin/firebase.js deploy --only hosting --project "$FIREBASE_PROJECT" --token "$FIREBASE_TOKEN"

  test:
    docker:
      - image: circleci/node:10

    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package.json" }}
      - run:
          name: 'install dependencies'
          command: yarn
      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}
      - run:
          name: 'test'
          command: yarn test

workflows:
  version: 2
  ci:
    jobs:
      - test:
          filters:
            branches:
              ignore: master
      - deploy:
          filters:
            branches:
              only: master

CIがちゃんとしているとなんとなく嬉しくて、まじでどうでも良い趣味の開発しかしていないのに満足感が出てくる。自明なことだが、CIみたいなものは開発の初期に入れるほど通算の効用が大きくなるので、なんか作ろうと思ったら本格的な開発を始める前に設定をしておくべきだと気づいた。俺も起床したら自動的に会社にデプロイされるようにしたい。