Festlegen persistenter Umgebungsvariablen
Du kannst persistente benutzerdefinierte Umgebungsvariablen auf verschiedene Arten festlegen, je nachdem, für welche Codespaces, Repositorys oder Benutzer*innen die Variablen verfügbar sein sollen.
Für alle unten aufgeführten Methoden zum Festlegen benutzerdefinierter Variablen kannst du mithilfe einer Syntax wie echo $VARNAME
auf die benutzerdefinierte Variable in deinem Codespace zugreifen.
Für einen einzelnen Codespace
Du kannst den Wert der Umgebungsvariablen in der ~/.bashrc
-Datei oder in einer entsprechenden Konfigurationsdatei festlegen, wenn du die Bash-Shell nicht verwendest. Füge beispielsweise die Anweisung VARNAME=value
hinzu.
Nachdem du die Änderung an dieser Datei gespeichert hast, wird der Wert beim nächsten Öffnen des Codespaces festgelegt, oder du kannst ihn sofort mit einem Befehl wie source ~/.bashrc
festlegen. Die Variable bleibt festgelegt, wenn du den Codespace beendest und startest. Änderungen an Dateien im Basisverzeichnis werden jedoch zurückgesetzt, wenn du den Container neu erstellst, sodass Variablen, die in der ~/.bashrc
-Datei festgelegt sind, bei einer Neuerstellung nicht beibehalten werden. Weitere Informationen findest du unter Verhindern des automatischen Löschens von temporären Dateien.
Für alle Codespaces für ein Repository
Es gibt drei Möglichkeiten, wie du persistente benutzerdefinierte Umgebungsvariablen für alle Codespaces festlegen kannst, die du für ein Repository erstellst:
- Sie können die Konfigurationsdatei
devcontainer.json
für das Repository bearbeiten. - Sie können ein benutzerdefiniertes Dockerfile verwenden.
- Sie können Geheimnisse für die Entwicklungsumgebung verwenden.
Bearbeiten der Konfigurationsdatei devcontainer.json
für das Repository
Bearbeite die Konfigurationsdatei devcontainer.json
für das Repository, und verwende die remoteEnv
-Eigenschaft, um den Wert der Umgebungsvariablen festzulegen:
{
"remoteEnv": {
"VARNAME": "value"
}
}
Verwende diese Methode nur für Werte, die du als Klartext an dein Repository committen möchtest. Verwenden Sie für vertrauliche Werte wie Zugriffstoken Entwicklungsumgebungs-Geheimnisse.
Die Umgebungsvariable wird im Remoteserverprozess deines Editors festgelegt und steht für Teilprozesse dieses Remoteserverprozesses (z. B. Terminals und Debugsitzungen) zur Verfügung. Die Variable ist jedoch im Container nicht allgemeiner verfügbar. Diese Methode ist nützlich, wenn du die Umgebungsvariable nicht für andere Hintergrundprozesse festlegen musst, die beim Start ausgeführt werden, und wenn du ein vorgefertigtes Image verwendest und über kein benutzerdefiniertes Dockerfile verfügst oder dieses verwenden möchtest.
Diese Einstellung wird wirksam, wenn du deinen Container neu erstellst oder einen neuen Codespace erstellst, nachdem du diese Änderung an das Repository gepusht hast. Weitere Informationen zum Anwenden von Konfigurationsänderungen auf einen Codespace findest du unter Einführung in Entwicklungscontainer.
Verwenden eines benutzerdefinierten Dockerfiles
Wenn du ein benutzerdefiniertes Dockerfile verwendest, kannst du die Umgebungsvariable dort festlegen, indem du ENV VARNAME=value
hinzufügst.
Diese Methode ist nützlich, wenn du bereits über ein Dockerfile verfügst und eine Variable auf Containerebene festlegen möchtest.
Diese Einstellung wird wirksam, wenn du deinen Container neu erstellst oder einen neuen Codespace erstellst, nachdem du diese Änderung an das Repository gepusht hast. Weitere Informationen zum Anwenden von Konfigurationsänderungen auf einen Codespace findest du unter Einführung in Entwicklungscontainer.
Verwenden Sie Entwicklungsumgebungs-Geheimnisse.
Sie können Entwicklungsumgebungs-Geheimnisse für GitHub Codespaces verwenden, um benutzerdefinierte Variablen für Codespaces festzulegen, die für das Repository erstellt wurden. Weitere Informationen findest du unter Verwalten deiner kontospezifischen Geheimnisse für GitHub Codespaces.
Du solltest diese Methode für Umgebungsvariablenwerte verwenden, die du nicht als Klartext an das Repository committen möchtest.
Diese Einstellung wird wirksam, wenn du das nächste Mal einen Codespace für dieses Repository erstellst oder einen vorhandenen Codespace neu startest.
Für alle Codespaces, die du erstellst
Wenn du eine personalisierte Umgebungsvariable für alle Codespaces festlegen möchtest, die du erstellst, kannst du dies mithilfe einer Datei in deinem dotfiles
-Repository festlegen. Füge beispielsweise VARNAME=value
in der .bash_profile
-Datei hinzu. Umgebungsvariablen, die du in einem Dotfile festlegst, sind vertraulich und werden nicht für andere Personen festgelegt. Weitere Informationen zu Dotfiles findest du unter Personalisieren von GitHub Codespaces für dein Konto.
Verhindern, dass temporäre Dateien automatisch gelöscht werden
Wenn du einen Codespace erstellst, wird dein Repository in das /workspaces
-Verzeichnis deines Codespace geklont. Es handelt sich um ein persistentes Verzeichnis, das in den Container eingebunden wird. Alle Änderungen, die du in diesem Verzeichnis vornimmst, einschließlich dem Bearbeiten, Hinzufügen oder Löschen von Dateien, werden beibehalten, wenn du den Codespace beendest und startest oder wenn du den Container im Codespace neu erstellst.
Außerhalb des /workspaces
-Verzeichnisses hat Ihr Codespace eine Linux-Verzeichnisstruktur, die abhängig vom Dev-Containerimage variiert, das zum Erstellen Ihres Codespace verwendet wird. Sie können Dateien hinzufügen oder Änderungen an Dateien außerhalb des Verzeichnisses /workspaces
vornehmen. Sie können beispielsweise neue Programme installieren oder die Shell-Konfiguration in einer Datei einrichten wie z. B. ~/.bashrc
. Als Nicht-Root-Benutzer*in hast du möglicherweise nicht automatisch Schreibzugriff auf bestimmte Verzeichnisse, aber die meisten Images lassen den Root-Zugriff auf diese Verzeichnisse mit dem sudo
-Befehl zu.
Außerhalb von /workspaces
sind die Verzeichnisse in einem Codespace mit Ausnahme des /tmp
-Verzeichnisses an den Lebenszyklus des Containers gebunden. Das bedeutet, dass alle Änderungen, die Sie vornehmen, beibehalten werden, wenn Sie den Codespace beenden und starten, aber nicht, wenn Sie den Container neu erstellen. Informationen zum Erstellen von Symlinks zum Beibehalten von Daten außerhalb des /workspaces
-Verzeichnisses findest du unter Neuerstellen des Containers in einem Codespace.
Das /tmp
-Verzeichnis ist eine Ausnahme, da es in den Container eingebunden, aber nicht persistent ist. Daher wird der Inhalt des /tmp
-Verzeichnisses bei einer Neuerstellung beibehalten, aber jedes Mal gelöscht, wenn der Codespace beendet wird. Beispielsweise wird das /tmp
-Verzeichnis gelöscht, wenn bei einer Codespacesitzung nach einem Zeitraum der Inaktivität ein Timeout auftritt. Weitere Informationen findest du unter Festlegen des Timeoutzeitraums für GitHub Codespaces.
Wenn du über temporäre Dateien verfügst, die beim nächsten Starten des Codespaces verfügbar sein sollen, speichere sie nicht im /tmp
-Verzeichnis.