永続的な環境変数を設定する
変数を使用できるようにする codespace、リポジトリ、またはユーザーに応じて、複数の方法で永続的なカスタム環境変数を設定できます。
以下に示すすべてのカスタム変数設定方法で、echo $VARNAME
のような構文を使って codespace 内のカスタム変数にアクセスできます。
1 つの codespace の場合
~/.bashrc
ファイルまたは Bash シェルを使っていない場合は同等の構成ファイルで、環境変数の値を設定できます。 たとえば、VARNAME=value
ステートメントを追加します。
変更をこのファイルに保存すると、次に codespace を開いたときに値が設定されます。または、source ~/.bashrc
などのコマンドを使ってすぐに設定できます。 codespace を停止して開始した場合、変数は設定されたままになります。 ただし、コンテナーをリビルドした場合、ホーム ディレクトリ内のファイルに対する変更はリセットされるため、~/.bashrc
ファイルで設定された変数はリビルドすると保持されません。 「一時ファイルが自動的に削除されないようにする」をご覧ください。
リポジトリのすべての codespace の場合
リポジトリ用に作成したすべての codespace に対して永続的なカスタム環境変数を設定する方法は 3 つあります。
- リポジトリの
devcontainer.json
構成ファイルを編集できます - カスタム Dockerfile を使用できます
- 暗号化されたシークレットを使用できます
リポジトリの devcontainer.json
構成ファイルを編集する
リポジトリの devcontainer.json
構成ファイルを編集し、remoteEnv
プロパティを使って環境変数の値を設定します。
{
"remoteEnv": {
"VARNAME": "value"
}
}
この方法は、プレーンテキストとしてリポジトリにコミットしても問題がない値にのみ使ってください。 アクセス トークンなどの機密性の値の場合は、暗号化されたシークレットを使います。
環境変数は、エディターのリモート サーバー プロセス内で設定され、ターミナルやデバッグ セッションなど、そのリモート サーバー プロセスのサブプロセスで使用できます。 ただし、コンテナー内でさらに広範囲に変数を使うことはできません。 この方法は、起動時に実行される他のバックグラウンド プロセス用に環境変数を設定する必要がない場合や、事前に作成されたイメージを使っていて、カスタム Dockerfile がない場合や必要ない場合に便利です。
この設定は、この変更をリポジトリにプッシュした後、コンテナーをリビルドするか、新しい codespace を作成すると有効になります。 codespace に構成の変更を適用する方法について詳しくは、「開発コンテナーの概要」をご覧ください。
カスタム Dockerfile を使用する
カスタム Dockerfile を使っている場合は、ENV VARNAME=value
を追加することにより、そこで環境変数を設定できます。
この方法は、Dockerfile が既にあり、コンテナー全体のレベルで変数を設定したい場合に便利です。
この設定は、この変更をリポジトリにプッシュした後、コンテナーをリビルドするか、新しい codespace を作成すると有効になります。 codespace に構成の変更を適用する方法について詳しくは、「開発コンテナーの概要」をご覧ください。
暗号化されたシークレットを使用する
GitHub Codespaces 用の暗号化されたシークレットを使って、リポジトリ用に作成された codespace のためのカスタム変数を設定できます。 詳しくは、「codespaces の暗号化されたシークレットを管理する」を参照してください。
リポジトリにプレーンテキストとしてコミットしたくない環境変数の値の場合は、この方法を使う必要があります。
この設定は、このリポジトリ用の codespace を次に作成するとき、または既存の codespace を再起動したときに有効になります。
作成したすべての codespace の場合
作成したすべての codespace についてカスタマイズされた環境変数を設定したい場合は、dotfiles
リポジトリ内のファイルを使ってこれを設定できます。 たとえば、.bash_profile
ファイルに VARNAME=value
を追加します。 ドットファイルで設定した環境変数は個人用であり、他のユーザーには設定されません。 ドットファイルについて詳しくは、「アカウントの GitHub Codespaces をパーソナライズする」をご覧ください。
一時ファイルが自動的に削除されないようにする
When you create a codespace, your repository is cloned into the /workspaces
directory in your codespace. This is a persistent directory that is mounted into the container. Any changes you make inside this directory, including editing, adding, or deleting files, are preserved when you stop and start the codespace, and when you rebuild the container in the codespace.
Outside the /workspaces
directory, your codespace contains a Linux directory structure that varies depending on the image used to build your codespace. You can add files or make changes to files outside the /workspaces
directory: for example, you can install new programs, or you can set up your shell configuration in a file such as ~/.bashrc
. As a non-root user, you may not automatically have write access to certain directories, but most images allow root access to these directories with the sudo
command.
Outside /workspaces
, with the exception of the /tmp
directory, the directories in a codespace are tied to the lifecycle of the container. This means any changes you make are preserved when you stop and start your codespace, but are not preserved when you rebuild of the container. /workspaces
ディレクトリの外側にあるデータを保持するためのシンボリック リンクの作成について詳しくは、「codespace でのコンテナーのリビルド」をご覧ください。
/tmp
ディレクトリは例外です。コンテナー内にマウントされていても永続的ではないからです。 したがって、/tmp
ディレクトリのコンテンツはリビルド時に保持されますが、codespace が停止するたびにクリアされます。 たとえば、非アクティブな時間が経過した後に codespace セッションがタイムアウトすると、/tmp
ディレクトリがクリアされます。 詳しくは、「GitHub Codespaces のタイムアウト期間を設定する」を参照してください。
次に codespace を起動したときに使用できるようにしたい一時ファイルがある場合は、/tmp
ディレクトリに保存しないでください。