一部のクライアントライブラリ(例:GitHub - googleapis/google-auth-library-ruby: Google Auth Library for Ruby · GitHub yml ファイル経由で渡すことは可能でしょうか。
私は以下の方法を試しました:
ymlファイルのカスタムコマンドセクションにexport VAR=VALUEを追加する。ymlファイルのenvセクションにVARIABLE: VALUEを追加する。
一部のクライアントライブラリ(例:GitHub - googleapis/google-auth-library-ruby: Google Auth Library for Ruby · GitHub yml ファイル経由で渡すことは可能でしょうか。
私は以下の方法を試しました:
yml ファイルのカスタムコマンドセクションに export VAR=VALUE を追加する。yml ファイルの env セクションに VARIABLE: VALUE を追加する。@merefield さんに、それが実際に可能だと指摘されました。
カスタムコマンドセクションで以下を実行してください。
# 変数を .bashrc ファイルに追加
exec: echo 'export VAR=value' >> ~/.bashrc
...
# ファイルを再読み込み
exec: source ~/.bashrc
このアプローチが実際に機能することを確認しました。![]()
追伸
どうやら source ~/.bashrc は環境を更新しないようです。おそらく呼び出しが早すぎるのかもしれません。
以下も試しました。
- exec: /bin/bash -c "source ~/.bashrc"
これにコンテナ定義の env: セクションを使うことはできませんか?それにより、Rails アプリがアクセスできる環境変数が作成されるはずです。
例えば、
env:
CUSTOM_ENV: "value"
そうでない場合、pups はすでにホストの環境変数をパイプインしている ように見えます。
それだと Docker に関連するエラーが発生します。もしそう動作すれば非常に直感的だったのにね
もしかして私が変なのかな。カスタム変数は DISCOURSE_ で始まるもののみ許可するというルールがあると思います。
明日デスクに着いたら、env の件をもう一度試してみます。
さて、私がバカでした。これは問題なく動作します。問題はマルチライン値が原因でした。それを削除したところ、ビルドが成功しました。しかし、マルチライン値をどのように使用すればよいのでしょうか?
やった!動作するようにできました。問題は、RSA 秘密鍵を環境変数として使っていたことです。それを動作させるには以下の手順が必要です。
鍵をシングルクォート '' で囲み、鍵内に含まれるすべての \n の前に \ を追加してください。つまり、\n は \\n になります。
参考までに、\n を直接更新するよりも、もっと簡単な方法があります。
例えば、以下のようにします:
key: |
---BEGIN SECRET KEY---
SHH do not read this is secret
---END SECRET KEY---
キーの中央部分をそのまま貼り付けるという意味ですか?それなら、もう少しすっきりすると思います。
つまり、YAML は | 文字(およびオプションのバリエーション)から始まる複数行をサポートしているということです。
その後、プレフィックスのスペースを除き、キーをそのまま変更せずに貼り付けることができます。
私は愚かな試みとして、各 \n の代わりに | と実際の改行を追加してみましたが、うまくいきませんでした。