0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

改行入り機密情報を .env から GHA 用 secret にそのまま貼ると動かない

Last updated at Posted at 2024-12-23

コンテキスト
サービスアカウントの秘密鍵など、複数行にわたる認証情報を開発環境と GitHub Actions から利用したい

TL:DR;

ローカル環境の .env などで改行を \n で設定している場合、GitHub Actions 用 secret に設定する際には \n ではなく改行コードで設定する必要がある

ローカル開発環境での設定

ローカル開発環境で direnv.env ファイルを使って環境変数を設定する場合、改行は \n で表現する:

.env
# .env
HIMITSU_KEY="-----BEGIN PRIVATE KEY-----\nhello\n-----END PRIVATE KEY-----"

この設定は実行時に適切に解釈され、下記のように改行が反映される:

$ echo $HIMITSU_KEY
-----BEGIN PRIVATE KEY-----
hello
-----END PRIVATE KEY-----

GitHub Actionsでの設定

一方、GitHub Actions 用の secrets では、実際の改行を含めて設定する必要がある:

# 良い例
-----BEGIN PRIVATE KEY-----
hello
-----END PRIVATE KEY-----

悪い例

# 悪い例
-----BEGIN PRIVATE KEY-----\ndo not do this\n-----END PRIVATE KEY-----

Workflow run において、secrets を echo しての値確認はセキュリティリスクがあるため避けたく、このような状況においてのデバッグでは、「ローカルで設定している値とまったく同じものを secrets に設定できているか」という観点でチェックしがちなのでハマることがある。

とにかく起きているエラーの再現が重要

エラーの親切さはどうしても利用サービスに依存してしまうが、下記のように キーが全く設定されていない 旨のエラーが出ている状況なら、そもそもシンタックスに問題があることに気付きやすくなる:

Connection with BigQuerySqlClient to dataset name ****** failed. Please check if you configured the credentials at all and provided the right credentials values. You can be also denied access or your internet connection may be down. The actual reason given is: No key could be detected.

invalid key のような不親切なエラーだと厳しいかも。
いや、まぁ気づけるか。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?