CIにおける環境変数とは?
CIの環境変数とは、jobのプロセスに提供される名前付きの値で、動作をハードコードせずに設定するために使われます。
buildやスクリプトは、どのregistryを使うか、どのbuildモードか、feature flagなどの設定を環境から読み取ります。CIはこれらの変数を複数のレベルで定義でき、同じworkflowがbranch、environment、matrixのセルをまたいで正しく動作するようにします。
設定方法
変数はworkflow、job、stepのレベルで設定でき、スクリプトでは $NAME として読み取れます。matrixの値や計算されたoutputも、多くの場合、環境変数として流れ込みます。
小さな例
jobレベルで env: NODE_ENV: production を設定すると、そのjobのすべてのstepが本番モードでbuildします。単一のstepは、一度きりのテストbuildのために独自の env: ブロックでそれを上書きできます。
変数とsecret
通常の環境変数は機密ではなく、ログに現れます。secretは暗号化されマスクされます。buildモードのような設定は変数、トークンはsecretです - 認証情報を通常の変数に入れないでください。
優先順位とスコープ
- stepレベルの値はjobレベルを上書きし、jobレベルはworkflowレベルを上書きします。
- 変数はそれを設定した実行にスコープされ、永続しません。
- 一部のプラットフォームには、機密でない共有設定用にorgやrepoの「variables」があります。
step間で値を渡す
あるstepで通常の export で設定した変数は、新しいshellで実行される次のstepには引き継がれません。値を永続させるには、代わりにプラットフォームの環境ファイルに書き込みます(例えば $GITHUB_ENV に追記する)。
重要なポイント
- 環境変数は名前でjobのプロセスを設定します。
- 変数は機密でない設定用、secretは認証情報用です。
- 狭いスコープが広いスコープを上書きし、値はデフォルトでは永続しません。
関連ガイド
What Is a Secret in CI?A CI secret is a sensitive value - token, key, password - stored encrypted and injected into jobs at runtime.…
What Is Secret Masking?Secret masking automatically replaces secret values in CI logs with asterisks so they are not exposed. Learn…
What Is a Matrix Strategy?A matrix strategy runs the same job across many combinations of inputs - versions, OSes, configs - in paralle…