LoginSignup
3
1

More than 1 year has passed since last update.

Stripe CLIをCircle CI上で実行する方法

Posted at

この記事は、CircleCI Advent Calendar 2022 5日目の記事です。

Stripe CLIを利用すると、Stripe上でのさまざまなイベント(決済完了・サブスクリプションの新規契約・キャンセルなど)をシミュレートすることができます。

CI上でStripe CLIを利用することで、Stripeのイベントがかかわるシステムの結合テストや、バッチジョブの実行などが可能です。

この記事では、Circle CI上でStripe CLIを実行するためのTipsを簡単に紹介します。

Stripe CLIをDockerから利用する

Stripe CLIはDockerコマンドで実行できます。

$ docker run --rm -it stripe/stripe-cli help --api-key sk_test_xxxx

Stripe CLIをDockerで実行する場合、--api-keyでStripeのAPIキーを都度渡す必要がある点に注意が必要です。

Circle CIに制限付きAPIキーを設定する

Circle CIでは、環境変数でAPIキーなどを安全に保存することができます。

そしてStripeの「制限付きAPIキー」を利用すると、「CI実行専用のAPIキー」を作ることが可能です。

制限付きAPIキーは、ダッシュボードの[開発者 > APIキー]で、[制限付きのキーを作成]ボタンをクリックすると、作成できます。

スクリーンショット 2022-10-07 19.25.16.png

ここでは、リソースごとにAPIへのアクセス権限を[なし][読み取り][書き込み]の3つから選択できます。

スクリーンショット 2022-10-07 19.27.11.png

Connectで作られた子アカウントに対する権限についても設定が可能です。

作成した制限付きAPIキーを、Circle CIの[Project Settings > Environment Variable]から設定しましょう。

スクリーンショット 2022-11-08 11.41.22.png

Webhookのテストを行いたい場合は、同様の方法でwhsec_からはじまるWebhook用の署名シークレットを環境変数に設定しましょう。

スクリーンショット 2022-10-28 15.34.47.png

.circleci/config.ymlでStripe CLIを実行する

必要な環境変数の設定が終われば、Circle CI上で実行する設定を行いましょう。

runで先ほどのDockerコマンドを実行するだけOKです。

jobs:
  stripe-demo:
    executor: node/default
    steps:
      - checkout
      - setup_remote_docker
      - run:
          name: "Stripe CLI"
          command: docker run --rm -it stripe/stripe-cli trigger customer.created --api-key ${STRIPE_SECRET_API_KEY}

[Tips] exec /bin/stripe: exec format error が発生する場合

Stripe CLIのDockerイメージが一部バージョンでうまく動作しないケースが存在する様子です。

もし上記のエラーがジョブで発生した場合は、問題のないバージョン番号を明示的に指定して再度お試しください。

      - run:
          name: "Stripe CLI"
-          command: docker run --rm -it stripe/stripe-cli trigger customer.created --api-key ${STRIPE_SECRET_API_KEY}
+          command: docker run --rm -it stripe/stripe-cli:v1.12.4 trigger customer.created --api-key ${STRIPE_SECRET_API_KEY}

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1