コンテキストについて
コンテキストは、ワークフローの実行、変数、ランナーの環境、ジョブ、ステップに関する情報にアクセスする方法です。 各コンテキストは、プロパティを含むオブジェクトであり、文字列またはその他のオブジェクトにすることができます。
コンテキスト、オブジェクト、プロパティは、ワークフローの実行条件によって大きく異なります。 たとえば、matrix
コンテキストはマトリックス内のジョブに対してのみ設定されます。
式構文を使用してコンテキストにアクセスできます。 詳しくは、「ワークフローとアクションで式を評価する」をご覧ください。
${{ <context> }}
警告
ワークフローとアクションを作成するときは、攻撃者によってコードが信頼されていない入力を実行する可能性があるかどうかを常に考慮する必要があります。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信頼できない入力として扱うべきです。 詳しくは、「セキュリティで保護された使用に関するリファレンス」をご覧ください。
コンテキストを使用する場合の判断
GitHub Actions には、"コンテキスト" と呼ばれる変数のコレクションと、"既定の変数" と呼ばれる同様の変数のコレクションが含まれます。__ __ これらの変数は、ワークフロー中の様々な場所で利用されることを意図したものです。
- 既定の環境変数: これらの環境変数は、ジョブを実行しているランナーにのみ存在します。 詳しくは、「変数に情報を格納する」をご覧ください。
- コンテキスト: "既定の変数" を使用できない場合など、ワークフロー内の任意の時点でほとんどのコンテキストを使用できます。__ たとえば、式を含むコンテキストを使って、ジョブが実行のためにランナーにルーティングされる前に初期処理を実行できます。これにより、条件付き
if
キーワードを含むコンテキストを使用して、ステップを実行するかどうかを決定できます。 ジョブが実行されると、runner.os
など、ジョブを実行しているランナーからコンテキスト変数を取得することもできます。 ワークフロー内でさまざまなコンテキストを使用できる場所の詳細については、「コンテキスト リファレンス」を参照してください。
以下の例は、さまざまな種類の変数をジョブの中で合わせてどのように使用できるかを示しています。
name: CI on: push jobs: prod-check: if: ${{ github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest steps: - run: echo "Deploying to production server on branch $GITHUB_REF"
name: CI
on: push
jobs:
prod-check:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- run: echo "Deploying to production server on branch $GITHUB_REF"
この例では、if
ステートメントで github.ref
コンテキストをチェックして、現在のブランチ名を判別します。名前が refs/heads/main
の場合、後続のステップが実行されます。 if
チェックは GitHub Actions によって処理され、結果が true
の場合にのみジョブがランナーに送信されます。 ジョブがランナーに送信されると、ステップが実行され、ランナーから $GITHUB_REF
変数が参照されます。