# 変数に情報を格納する

GitHub は、ワークフロー実行ごとに既定の変数 GitHub Actions 設定します。 単一のワークフローまたは複数のワークフローで使用するカスタム変数を設定することもできます。

## 単一のワークフローの環境変数の定義

単一のワークフローにカスタム環境変数を設定するには、ワークフロー ファイル内の `env` キーを使用して環境変数を定義できます。 このメソッドで設定されるカスタム変数のスコープは、定義されている要素に制限されます。 次のスコープを設定する変数を定義できます。

* ワークフロー全体 (ワークフロー ファイルの最上位レベルで [`env`](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#env) を使用)。
* ワークフロー内のジョブの内容 ([`jobs.<job_id>.env`](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idenv) を使用)。
* ジョブ内の特定の手順 ([`jobs.<job_id>.steps[*].env`](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsenv) を使用)。

```yaml copy
name: Greeting on variable day

on:
  workflow_dispatch

env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello Mona it's Monday"
        run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
        env:
          First_Name: Mona
```

`env` 変数の値には、ランナー環境変数またはコンテキストを使用してアクセスできます。 上の例は、`echo` コマンドにおいて、ランナー環境変数として使用されている 3 つのカスタム変数 (`$DAY_OF_WEEK`、`$Greeting`、`$First_Name`) を示しています。 これらの変数の値は、それぞれワークフロー、ジョブ、ステップ レベルで設定され、スコープも設定されます。 これらの変数の補間はランナー上で行われます。

ワークフローの `run` ステップまたは参照されるアクションのコマンドは、ランナーで使用しているシェルによって処理されます。 ワークフローの他の部分の指示は、 GitHub Actions によって処理され、ランナーには送信されません。
`run` ステップでは、ランナー環境変数またはコンテキストのいずれかを使用できますが、ランナーに送信されないワークフローの部分では、変数値にアクセスするためにコンテキストを使用する必要があります。 詳しくは、「[コンテキストを使用した変数の値へのアクセス](#using-contexts-to-access-variable-values)」をご覧ください。

ランナー環境変数の補間は、ワークフロー ジョブがランナー マシンに送信された後に行われるため、ランナーで使用されるシェルに適切な構文を使用する必要があります。 この例では、ワークフローは `ubuntu-latest` を指定します。 既定では、Linux ランナーは Bash シェルを使用するため、構文 `$NAME` を使用する必要があります。 既定では、Windows ランナーは PowerShell を使用するため、構文 `$env:NAME` を使用します。 シェルについて詳しくは、「[GitHub Actions　のワークフロー構文](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsshell)」をご覧ください。

## 複数のワークフローに対する構成変数の定義

複数のワークフローにわたって使用する構成変数を作成し、[organization](#creating-configuration-variables-for-an-organization)、[リポジトリ](#creating-configuration-variables-for-a-repository)、または[環境](#creating-configuration-variables-for-an-environment)レベルでそれらを定義できます。

たとえば、構成変数を使用して、organization レベルでツールを構築するために渡されるパラメーターの既定値を設定しながら、リポジトリ所有者がケースバイケースでこれらのパラメーターをオーバーライドできるようにします。

構成変数を定義すると、`vars` コンテキストで自動的に使用できるようになります。 詳しくは、「[`vars` コンテキストを使用した構成変数の値へのアクセス](#using-the-vars-context-to-access-configuration-variable-values)」をご覧ください。

### リポジトリの構成変数の作成

GitHub で組織リポジトリのシークレットまたは変数を作成するには、`write` のアクセス権が必要です。 個人アカウントのリポジトリについては、リポジトリコラボレーターである必要があります。

1. GitHub で、リポジトリのメイン ページに移動します。
2. リポジトリ名の下にある **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> \[Settings]** をクリックします。 \[設定] タブが表示されない場合は、 **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="More" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>]** ドロップダウン メニューを選び、 **\[設定]** をクリックします。

   ![タブを示すリポジトリ ヘッダーのスクリーンショット。 \[設定\] タブが濃いオレンジ色の枠線で強調表示されています。](/assets/images/help/repository/repo-actions-settings.png)
3. サイドバーの \[Security] セクションで、**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key-asterisk" aria-label="key-asterisk" role="img"><path d="M0 2.75A2.75 2.75 0 0 1 2.75 0h10.5A2.75 2.75 0 0 1 16 2.75v10.5A2.75 2.75 0 0 1 13.25 16H2.75A2.75 2.75 0 0 1 0 13.25ZM2.75 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25V2.75c0-.69-.56-1.25-1.25-1.25Z"></path><path d="M8 4a.75.75 0 0 1 .75.75V6.7l1.69-.975a.75.75 0 0 1 .75 1.3L9.5 8l1.69.976a.75.75 0 0 1-.75 1.298L8.75 9.3v1.951a.75.75 0 0 1-1.5 0V9.299l-1.69.976a.75.75 0 0 1-.75-1.3L6.5 8l-1.69-.975a.75.75 0 0 1 .75-1.3l1.69.976V4.75A.75.75 0 0 1 8 4Z"></path></svg> \[Secrets and variables]** を選んでから、**\[Actions]** をクリックします。
4. **\[変数]** タブをクリックします。

![\[Actions secrets and variables\](アクション シークレットと変数) ページのスクリーンショット。 \[変数\] タブが濃いオレンジ色の枠線で囲まれています。](/assets/images/help/repository/actions-variables-tab.png)

1. **\[新しいリポジトリ変数]** をクリックします。
2. **\[名前]** フィールドに、変数の名前を入力します。
3. **\[値]** フィールドに、変数の値を入力します。
4. **\[変数の追加]** をクリックします。

### 環境の構成変数の作成

個人用アカウントのリポジトリ内の環境でシークレットか変数を作成するユーザーは、そのリポジトリのオーナーである必要があります。 組織用リポジトリ内の環境用にシークレットか変数を作成するユーザーには、`admin` のアクセス権が必要です。 環境の詳細については、「[デプロイメント用の環境管理](/ja/enterprise-server@3.22/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments)」を参照してください。

1. GitHub で、リポジトリのメイン ページに移動します。
2. リポジトリ名の下にある **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> \[Settings]** をクリックします。 \[設定] タブが表示されない場合は、 **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="More" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>]** ドロップダウン メニューを選び、 **\[設定]** をクリックします。

   ![タブを示すリポジトリ ヘッダーのスクリーンショット。 \[設定\] タブが濃いオレンジ色の枠線で強調表示されています。](/assets/images/help/repository/repo-actions-settings.png)
3. 左側のサイドバーで、 **\[環境]** をクリックします。
4. 変数を追加したい環境をクリックしてください。
5. **\[環境変数]** で **\[変数の追加]** をクリックします。
6. **\[名前]** フィールドに、変数の名前を入力します。
7. **\[値]** フィールドに、変数の値を入力します。
8. **\[変数の追加]** をクリックします。

### 組織の構成変数の作成

Organization でシークレットまたは変数を作成する場合、ポリシーを使用して、リポジトリによるアクセスを制限できます。 たとえば、すべてのリポジトリにアクセスを許可したり、プライベート リポジトリまたは指定したリポジトリ のリストのみにアクセスを制限したりできます。

組織の所有者 および "組織のアクション変数の管理" または "組織のアクション シークレットの管理" アクセス許可を持つユーザーは 組織レベルでシークレットまたは変数を作成できます。

詳細については、 [AUTOTITLE を](/ja/enterprise-server@3.22/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles)参照してください。

1. GitHub で、organization のメイン ページに移動します。

2. Organization 名の下で、**\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> Settings]** をクリックします。 \[設定] タブが表示されない場合は、 **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="More" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>]** ドロップダウン メニューを選び、 **\[設定]** をクリックします。

   ![組織のプロファイルのタブのスクリーンショット。 \[設定\] タブが濃いオレンジ色の枠線で囲まれています。](/assets/images/help/discussions/org-settings-global-nav-update.png)

3. サイドバーの \[Security] セクションで、**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key-asterisk" aria-label="key-asterisk" role="img"><path d="M0 2.75A2.75 2.75 0 0 1 2.75 0h10.5A2.75 2.75 0 0 1 16 2.75v10.5A2.75 2.75 0 0 1 13.25 16H2.75A2.75 2.75 0 0 1 0 13.25ZM2.75 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25V2.75c0-.69-.56-1.25-1.25-1.25Z"></path><path d="M8 4a.75.75 0 0 1 .75.75V6.7l1.69-.975a.75.75 0 0 1 .75 1.3L9.5 8l1.69.976a.75.75 0 0 1-.75 1.298L8.75 9.3v1.951a.75.75 0 0 1-1.5 0V9.299l-1.69.976a.75.75 0 0 1-.75-1.3L6.5 8l-1.69-.975a.75.75 0 0 1 .75-1.3l1.69.976V4.75A.75.75 0 0 1 8 4Z"></path></svg> \[Secrets and variables]** を選んでから、**\[Actions]** をクリックします。

4. **\[変数]** タブをクリックします。

   ![\[アクション シークレットと変数\] ページのスクリーンショット。 \[変数\] タブが濃いオレンジ色の枠線で囲まれています。](/assets/images/help/repository/actions-variables-tab.png)

   > \[!NOTE]
   > アクセス許可によっては、\[Actions secrets and variables] ページにシークレットと変数のタブが個別に表示されない場合があります。 "Organization のアクション変数を管理" と "Organization のアクション シークレットを管理" アクセス許可の両方を持つ Organization の所有者とユーザーには、**\[変数]** と **\[シークレット**] タブが表示されます。 詳しくは、「[カスタム組織ロールの権限](/ja/enterprise-server@3.22/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles)」をご覧ください。

5. **\[新しい Organization 変数]** をクリックします。

6. **\[名前]** フィールドに、変数の名前を入力します。

7. **\[値]** フィールドに、変数の値を入力します。

8. **\[リポジトリアクセス]** ドロップダウンリストから、アクセスポリシーを選びます。

9. **\[変数の追加]** をクリックします。

## コンテキストを使用した変数の値へのアクセス

コンテキストは、ワークフローの実行、変数、ランナーの環境、ジョブ、ステップに関する情報にアクセスする方法です。 詳細については、 [AUTOTITLE を](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts)参照してください。 ワークフローには、さまざまな目的で使用できる他の多くのコンテキストがあります。 ワークフロー内で特定のコンテキストを使用できる場所について詳しくは、「[コンテキスト リファレンス](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts#context-availability)」をご覧ください。

`env` コンテキストを使用して環境変数値にアクセスし、`vars` コンテキストを使用して構成変数値にアクセスできます。

### `env` コンテキストを使用した環境変数の値へのアクセス

ランナー環境変数に加えて、 GitHub Actions では、コンテキストを使用して `env` キー値を設定および読み取ることができます。 環境変数やコンテキストは、ワークフロー中の様々な場所で利用できます。

ワークフローまたは参照先アクションの `run` ステップは、ランナーによって処理されます。 その結果、ランナーで使用するシェル (Linux ランナーの bash シェル用の `$NAME` や Windows ランナーの PowerShell用の `$env:NAME` など) に適した構文を使用して、ランナー環境変数をここで使用できます。 ほとんどの場合、コンテキストと構文 `${{ CONTEXT.PROPERTY }}`を使用して、同じ値にアクセスすることもできます。 違いは、ジョブがランナーに送信される前にコンテキストが補間され、文字列に置き換えられるということです。

ただし、 GitHub Actions によって処理され、ランナーに送信されないワークフローの一部でランナー環境変数を使用することはできません。 その代わりに、コンテキストを使用することができます。 たとえば、 `if` 条件は、ジョブまたはステップがランナーに送信されるかどうかを決定しますが、常に GitHub Actionsによって処理されます。 したがって、変数の値にアクセスするには、 `if` 条件ステートメントでコンテキストを使用する必要があります。

```yaml copy
name: Conditional env variable

on: workflow_dispatch

env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello Mona it's Monday"
        if: ${{ env.DAY_OF_WEEK == 'Monday' }}
        run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
        env:
          First_Name: Mona
```

前の例のこの変更では、`if` 条件を導入しました。 ワークフロー ステップは、`DAY_OF_WEEK` が "Monday" に設定されている場合にのみ実行されます。
`if`を使用して、`env` 条件付きステートメントからこの値にアクセスします。
`env` コマンド内で参照される変数には、 `run` コンテキストは必要ありません。 これらはランナー環境変数として参照され、ランナーがジョブを受信した後に補間されます。 ただし、コンテキストを使用して、ランナーにジョブを送信する前に、これらの変数を補間することを選択できました。 結果の出力は同じになります。

```yaml
run: echo "${{ env.Greeting }} ${{ env.First_Name }}. Today is ${{ env.DAY_OF_WEEK }}!"
```

> \[!NOTE]
> コンテキストは通常、 `${{ context.property }}`としてドル記号と中かっこを使用して示されます。
> `if`条件では、`${{`と`}}`は省略可能ですが、使用する場合は、上記のように比較ステートメント全体を囲む必要があります。

> \[!WARNING]
> ワークフローとアクションを作成するときは、攻撃者によってコードが信頼されていない入力を実行する可能性があるかどうかを常に考慮する必要があります。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信頼できない入力として扱うべきです。 詳しくは、「[セキュリティで保護された使用に関するリファレンス](/ja/enterprise-server@3.22/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks)」をご覧ください。

### `vars` コンテキストを使用した構成変数の値へのアクセス

構成変数には、`vars` コンテキストを使用してワークフロー全体でアクセスできます。 詳しくは、「[コンテキスト リファレンス](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts#vars-context)」をご覧ください。

構成変数が設定されていない場合、変数を参照するコンテキストの戻り値は空の文字列になります。

次の例は、ワークフロー全体で `vars` コンテキストと共に構成変数を使用する方法を示しています。 次の各構成変数は、リポジトリ、Organization、または環境レベルで定義されています。

```yaml copy
on:
  workflow_dispatch:
env:
  # Setting an environment variable with the value of a configuration variable
  env_var: ${{ vars.ENV_CONTEXT_VAR }}

jobs:
  display-variables:
    name: ${{ vars.JOB_NAME }}
    # You can use configuration variables with the `vars` context for dynamic jobs
    if: ${{ vars.USE_VARIABLES == 'true' }}
    runs-on: ${{ vars.RUNNER }}
    environment: ${{ vars.ENVIRONMENT_STAGE }}
    steps:
    - name: Use variables
      run: |
        echo "repository variable : $REPOSITORY_VAR"
        echo "organization variable : $ORGANIZATION_VAR"
        echo "overridden variable : $OVERRIDE_VAR"
        echo "variable from shell environment : $env_var"
      env:
        REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }}
        ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }}
        OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }}
        
    - name: ${{ vars.HELLO_WORLD_STEP }}
      if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
      uses: actions/hello-world-javascript-action@main
      with:
        who-to-greet: ${{ vars.GREET_NAME }}
```

## オペレーティング システムの検出

`RUNNER_OS`の既定の環境変数と対応するコンテキスト プロパティ <span style="white-space: nowrap;">`${{ runner.os }}`</span>を使用して、異なるオペレーティング システムに使用できる 1 つのワークフロー ファイルを記述できます。 たとえば、ランナーによって使用されるシェルに応じて異なる、環境変数の構文を変更しなくても、オペレーティング システムを `macos-latest` から `windows-latest` に変更した場合、次のワークフローを正常に実行できます。

```yaml copy
on: workflow_dispatch

jobs:
  if-Windows-else:
    runs-on: macos-latest
    steps:
      - name: condition 1
        if: runner.os == 'Windows'
        run: echo "The operating system on the runner is $env:RUNNER_OS."
      - name: condition 2
        if: runner.os != 'Windows'
        run: echo "The operating system on the runner is not Windows, it's $RUNNER_OS."
```

この例では、2 つの `if` ステートメントによって `os` コンテキストの `runner` プロパティがチェックされ、ランナーのオペレーティング システムが決定されます。
`if` 条件は GitHub Actionsによって処理され、 `true` としてチェックが解決されるステップのみがランナーに送信されます。 ここでは、チェックの 1 つが常に `true` となり、もう 1 つが `false` になるため、これらのステップの 1 つだけがランナーに送信されます。 ジョブがランナーに送信されると、ステップが実行され、`echo` コマンド内の環境変数が適切な構文を使用して補間されます (Windows の PowerShell `$env:NAME`、Linux および macOS の bash と sh `$NAME`)。 この例では、ステートメント `runs-on: macos-latest` では 2 番目のステップが実行されます。

## ワークフロー内のステップとジョブの間で値を渡す

ジョブの 1 つのステップで値を生成する場合は、既存または新しい環境変数に値を割り当て、これを `GITHUB_ENV` 環境ファイルに書き込むことで、同じジョブの後続のステップで値を使用できます。 環境ファイルは、アクションによって直接使用することも、`run` キーワードを使用してワークフロー ファイル内のシェル コマンドから使用することもできます。 詳しくは、「[GitHub Actions のワークフロー コマンド](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-commands#setting-an-environment-variable)」をご覧ください。

ワークフロー内のあるジョブのステップから、そのワークフロー内の別のジョブのステップに値を渡す場合は、その値をジョブ出力として定義できます。 その後、別のジョブのステップからこのジョブ出力を参照できます。 詳しくは、「[GitHub Actions　のワークフロー構文](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idoutputs)」をご覧ください。

## 次のステップ

参考情報については、「[変数リファレンス](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/variables)」をご覧ください。