CircleCIでfirebaseのkeyを使う方法

「CircleCIでfirebaseのkeyを使う方法」のアイキャッチ画像

e2eテストでfirebase authをcircleci上で再現したく、なかなか苦労したのでメモに残しておきます

  1. circleciの環境変数にkeyとvalueを追加
    1. valueはbase64にエンコード
    2. 私はここを使ってjsonからbase63に変換しました:https://codebeautify.org/json-to-base64-converter
    3. jsonはaccount_key.jsonを全て貼り付け、変換が完了したら、==を含め全てをコピペ
  1. circleciに環境変数として追加
  1. circleciの設定ファイルをこのように記述
test:
    docker:
      - image: circleci/python:3.7-node
        user: root
      - image: circleci/postgres:10.5-alpine
        environment:
          POSTGRES_USER: root
          POSTGRES_DB: xxxxxx
          POSTGRES_PASSWORD: password
          TEST_DATABASE_URL: postgresql://root:password@localhost:5432/xx

    steps:
      - checkout
      ## この部分で実行してます。
      - run:
          name: create firebase credential
          command: |
            echo ${FIREBASE_KEYFILE_JSON} | base64 --decode --ignore-garbage > ${HOME}/account_key.json
            echo 'export FIREBASE_KEYFILE_JSON=$(cat $HOME/account_key.json)' >> $BASH_ENV

      - run:
          name: Install Python Dependencies
          command: |
            pip3 install -r requirements.txt --no-cache-dir

      - run:
          name: migrate database
          command: |
            alembic upgrade head

まとめ

割と参考事例なくて苦労しましたが、セキュアに保ちながらcircleciでテストできるようになりました。

もちろんデプロイとかもできるかと思うので、参考にしてください

参考記事

GCP で Service Account 作って CI サービスに登録する

Continuous integration with the Google Cloud Run orb