この記事は、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キー]で、[制限付きのキーを作成]ボタンをクリックすると、作成できます。
ここでは、リソースごとにAPIへのアクセス権限を[なし][読み取り][書き込み]の3つから選択できます。
Connectで作られた子アカウントに対する権限についても設定が可能です。
作成した制限付きAPIキーを、Circle CIの[Project Settings > Environment Variable]から設定しましょう。
Webhookのテストを行いたい場合は、同様の方法でwhsec_
からはじまるWebhook用の署名シークレットを環境変数に設定しましょう。
.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}