Using environments for deployment

保護ルールとシークレットを持つ環境を設定できます。 A workflow job that references an environment must follow any protection rules for the environment before running or accessing the environment's secrets.

Environments, environment protection rules, and environment secrets are available in public repositories for all products. For access to environments in private repositories, you must use GitHub Enterprise.

環境について

Environments are used to describe a general deployment target like production, staging, or development. When a GitHub Actions workflow deploys to an environment, the environment is displayed on the main page of the repository. For more information about viewing deployments to environments, see "Viewing deployment history."

保護ルールとシークレットを持つ環境を設定できます。 ワークフローのジョブが環境を参照すると、その環境の保護ルールをすべてパスするまではジョブは開始されません。 すべての環境の保護ルールをパスするまで、ジョブは環境で定義されているシークレットにアクセスできません。

環境の保護ルール

環境の保護ルールは、その環境を参照しているジョブが進行する前に特定の条件をパスすることを要求します。 環境保護ルールを使用して、手動による承認を要求したり、ジョブを遅延させたり、環境を特定のブランチに制限したりすることができます。

必須のレビュー担当者

必須のレビュー担当者を使って、特定の人もしくはTeamがその環境を参照するワークフローのジョブを承認しなければならないようにすることができます。 最大で6人のユーザもしくはTeamをレビュー担当者とすることができます。 レビュー担当者は、少なくともそのリポジトリの読み取りアクセス権を持っていなければなりません。 ジョブが進行するため承認が必要なレビュー担当者は1人だけです。

必須のレビュー担当者を持つ環境を参照しているジョブのレビューに関する詳しい情報については「デプロイメントのレビュー」を参照してください。

待機タイマー

ジョブが最初にトリガーされた後、特定の時間ジョブを遅延させるために、待機タイマーを使ってください。 時間(分)は、0から43,200(30日)の間の整数でなければなりません。

デプロイメントブランチ

デプロイメントブランチを使用して、環境にデプロイできるブランチを制限します。 環境のデプロイメントブランチのオプションは以下のとおりです。

  • すべてのブランチ: リポジトリ内のすべてのブランチを環境にデプロイできます。

  • 保護されたブランチ: 環境にデプロイできるのはブランチ保護ルールが有効になっているブランチのみです。 リポジトリ内のどのブランチにもブランチ保護ルールが定義されていない場合は、すべてのブランチをデプロイできます。 ブランチ保護ルールの詳細については、「保護されたブランチについて」を参照してください。

  • 選択したブランチ: 環境にデプロイできるのは指定した名前パターンに一致するブランチのみです。

    たとえば、デプロイメントブランチルールとして releases/* を指定した場合、名前が releases/ で始まるブランチのみが環境にデプロイできます。 (ワイルドカード文字は / と一致しません。 release/ で始まり、追加の単一スラッシュを含むブランチを一致させるには、release/*/* を使用します。) main をデプロイメントブランチルールとして追加すると、main という名前のブランチも環境にデプロイできます。 デプロイメントブランチの構文オプションの詳細については、Ruby File.fnmatch documentation のドキュメントを参照してください。

環境のシークレット

環境に保存されたシークレットは、その環境を参照するワークフロージョブからのみ利用できます。 環境が承認を必要とするなら、ジョブは必須のレビュー担当者の一人が承認するまで環境のシークレットにアクセスできません。 シークレットに関する詳しい情報については「暗号化されたシークレット」を参照してください。

注釈: セルフホストランナーで実行されるワークフローは、環境を使用している場合でも、分離されたコンテナでは実行されません。 Environment secrets should be treated with the same level of security as repository and organization secrets. 詳しい情報については「GitHub Actionsのためのセキュリティ強化」を参照してください。

環境の作成

ユーザ アカウントのリポジトリで環境を設定するには、リポジトリのオーナーである必要があります。 Organizationのリポジトリで環境を設定するには、adminアクセス権を持っていなければなりません。

  1. your GitHub Enterprise Server instanceで、リポジトリのメインページにアクセスしてください。
  2. リポジトリ名の下で Settings(設定)をクリックしてください。 リポジトリの設定ボタン
  3. 左のサイドバーで Environments(環境)をクリックしてください。
  4. New environment(新しい環境)をクリックしてください。
  5. 環境の名前を入力し、Configure environment(環境を設定)をクリックしてください。 環境名では、大文字と小文字は区別されません。 環境名は255文字を超えてはならず、リポジトリ内でユニークでなければなりません。
  6. Optionally, specify people or teams that must approve workflow jobs that use this environment.
    1. Select Required reviewers.
    2. Enter up to 6 people or teams. ジョブが進行するため承認が必要なレビュー担当者は1人だけです。
    3. Click Save protection rules.
  7. Optionally, specify the amount of time to wait before allowing workflow jobs that use this environment to proceed.
    1. Select Wait timer.
    2. Enter the number of minutes to wait.
    3. Click Save protection rules.
  8. Optionally, specify what branches can deploy to this environment. For more information about the possible values, see "Deployment branches."
    1. Select the desired option in the Deployment branches dropdown.
    2. If you chose Selected branches, enter the branch name patterns that you want to allow.
  9. Optionally, add environment secrets. These secrets are only available to workflow jobs that use the environment. Additionally, workflow jobs that use this environment can only access these secrets after any configured rules (for example, required reviewers) pass. シークレットに関する詳しい情報については「暗号化されたシークレット」を参照してください。
    1. Under Environment secrets, click Add Secret.
    2. Enter the secret name.
    3. Enter the secret value.
    4. [Add secret(シークレットの追加)] をクリックします。

REST API を介して環境を作成および設定することもできます。 詳しい情報については、「環境」および「シークレット」を参照してください。

存在しない環境を参照するワークフローを実行すると、参照された名前を持つ環境が作成されます。 新しく作成される環境には、保護ルールやシークレットは設定されていません。 リポジトリのワークフローを編集できる人は、ワークフローファイルを通じて環境を作成できますが、その環境を設定できるのはリポジトリ管理者だけです。

Using an environment

ワークフロー内の各ジョブは、1つの環境を参照できます。 この環境を参照するとジョブがランナーに送信される前に、環境に設定された保護ルールをパスしなければなりません。 The job can access the environment's secrets only after the job is sent to a runner.

ワークフローが環境を参照する場合、その環境はリポジトリのデプロイメントに現れます。 現在及び以前のデプロイメントの表示に関する詳細については「デプロイメント履歴の表示」を参照してください。

You can specify an environment for each job in your workflow. To do so, add a jobs.<job_id>.environment key followed by the name of the environment.

For example, this workflow will use an environment called production.

name: Deployment

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

When the above workflow runs, the deployment job will be subject to any rules configured for the production environment. For example, if the environment requires reviewers, the job will pause until one of the reviewers approves the job.

You can also specify a URL for the environment. The specified URL will appear on the deployments page for the repository (accessed by clicking Environments on the home page of your repository) and in the visualization graph for the workflow run. If a pull request triggered the workflow, the URL is also displayed as a View deployment button in the pull request timeline.

name: Deployment

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: 
      name: production
      url: https://github.com
    steps:
      - name: deploy
        # ...deployment-specific steps

Workflow graph with URL

環境の削除

ユーザ アカウントのリポジトリで環境を設定するには、リポジトリのオーナーである必要があります。 Organizationのリポジトリで環境を設定するには、adminアクセス権を持っていなければなりません。

環境を削除すると、その環境に関連づけられたすべてのシークレットと保護ルールが削除されます。 削除された環境の保護ルールのために待機していたジョブは、自動的に失敗します。

  1. your GitHub Enterprise Server instanceで、リポジトリのメインページにアクセスしてください。
  2. リポジトリ名の下で Settings(設定)をクリックしてください。 リポジトリの設定ボタン
  3. 左のサイドバーで Environments(環境)をクリックしてください。
  4. 削除する環境の横にある をクリックします。
  5. I understand, delete this environment(分かりました、この環境を削除してください)をクリックしてください。

REST API を介して環境を削除することもできます。 詳しい情報については、「環境」を参照してください。

How environments relate to deployments

When a workflow job that references an environment runs, it creates a deployment object with the environment property set to the name of your environment. As the workflow progresses, it also creates deployment status objects with the environment property set to the name of your environment, the environment_url property set to the URL for environment (if specified in the workflow), and the state property set to the status of the job.

You can access these objects through the REST API or GraphQL API. You can also subscribe to these webhook events. For more information, see "Repositories" (REST API), "Objects" (GraphQL API), or "Webhook events and payloads."

次のステップ

GitHub Actions provides several features for managing your deployments. For more information, see "Deploying with GitHub Actions."

このドキュメントは役立ちましたか?

プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?