Skip to content
Latchkey

パイプライン変数とは?実行を通じて値を渡す

パイプライン変数とは、値をハードコードすることなく挙動を設定するために使われる、実行中にjobやステップが読み取れる名前付きの値です。

pipelineはいくつかのことを知る必要があります。どのenvironmentへdeployするか、どのバージョンをtag付けするか、どのAPIエンドポイントにアクセスするか、などです。パイプライン変数は、それらの値をjobやステップへ運びます。設定をスクリプトの外に保ち、1つのpipelineをbranchやenvironmentごとに異なる挙動にさせ、secretを注入する制御された手段を提供します。

変数はどこから来るか

  • 組み込み: プラットフォームがcommit SHAやbranch名などの値を設定する。
  • 定義済み: pipelineファイルで変数を宣言する。
  • 保存済み: プロジェクトやorgの設定で定めたsecretやconfig。
  • 計算済み: あるステップが書き込んだ値を、他のステップが読み取る。

スコープと優先順位

変数はpipeline全体、単一のjob、または1つのステップにスコープできます。狭いスコープは通常より広いものを上書きするため、同名ならjobレベルの変数がpipelineレベルの変数に勝ちます。優先順位を知っておくと、意外な事態を避けられます。

簡単な例

GitHub Actionsでは、変数を${{ vars.DEPLOY_ENV }}として、あるいはシェルステップ内で環境変数を${ENV_NAME}として読み取ります。jobにenv: ENV_NAME: stagingを設定すると、そのjob内のすべてのステップから見えるようになります。

変数とsecretの比較

プレーンな変数は、機密でない設定には適しています。secret(APIキー、トークン)は特別な種類の変数で、保存時に暗号化され、ログではマスクされます。認証情報をプレーンな変数に入れてはならず、secretをログにechoしてはなりません。

job間で値を渡す

job内のステップは変数を自由に共有しますが、jobは分離されています。ある値をあるjobから別のjobへ送るには、プラットフォームが依存関係のエッジに沿って渡すjob outputを使います。こうしてbuild jobはバージョン文字列をdeploy jobへ手渡せるのです。

重要なポイント

  • パイプライン変数は、jobやステップが実行時に読み取る名前付きの値です。
  • 変数は組み込み、定義済み、保存済み、または実行中に計算されたものになります。
  • 認証情報には(プレーンな変数ではなく)secretを使い、job間の値はoutputで渡しましょう。

関連ガイド