Node.js v21で実行していたプログラムをBunでの実行に差し替えた時に
GitHub Actions上かつBunでの実行でエラーが発生しました。
Googleのクレデンシャルでエラー発生
const {client_secret, client_id, redirect_uris} = credentials.installed;
この辺たまにでますねトークンのJSONをそのまま入れていてクオーテーション周りがうまくパースされない問題ぽいです。
TOKEN ENV READ ERROR: SyntaxError: Expected property name or '}' in JSON at position 1 (line 1 column 2)
ローカルでは読めるんだけどね
そもそも構造化データをGitHub Actionsのシークレットにいれてはいけないらしい
公式にも書いている通りBase64変換してBase64変換したテキストをシークレットに入れるなど工夫が必要そうです。
- 参考
シングルクォートで応急措置
とはいえちょっとすぐ動かしたかったので応急措置です。
シングルクォートで囲むことで回避できました。
- 通常
通常はこんな感じでJSONをそのままシークレット登録してました。
GOOGLE_REDENTIALS={"access_token":"色々省略","token_type":"Bearer","expiry_date":1703526591588}
これだとローカル実行はいけて、GitHub Actions上(のBun)だとJSON.parseのエラーが出ます。
- シングルクォートで囲ってみ
全体を''で囲むことで今回は回避できました。
GOOGLE_REDENTIALS='{"access_token":"色々省略","token_type":"Bearer","expiry_date":1703526591588}'
これだとローカルの.env
ファイルからもGitHub Actions上からもいけます。
そもそもJSONそのままいれるのやめましょう。.env
に書くときもシングルクォートで囲むをやっておくと良いかもですね()
おまけ create-json
試してないけどcreate-jsonというアクションを利用する方法もありそう