一般來說,如果只有單一 Codespace,可以考慮與原來地端開發環境方式相同: 透過 ~/.bashrc 檔案中設定環境變數的值。這部分要注意 Codespace 生命週期:如果停止/重啟 codespace,此環境變數會維持設定;但如果重建 dev container 或刪除 code space 建立新的,檔案內容將重置,環境變數則不再保留。
此設定方式主要在遠端伺服器的 proecess 內使用 (包含 terminals 與 debugging sessions),但不能在容器內廣泛使用。設定方式為在 devcontainer.json 內使用 remoteEnv 進行設定,設定方法如下:
{
"remoteEnv": {
"key": "value"
}
}
如果你使用自定義的 dev container,則可以在 dockerfile 內以新增 ENV VARNAME=value 來設定環境變數。當將此變更推送到 Repository 後重建容器或建立新的 Codespace 時生效。
本篇文章後面秘密管理會提到如何新增秘密。
如果是對於個人所有 Codespace,則可以使用 dotfiles Repository 中的檔案進行設定。例如,在 .bash_profile 檔案中加入 VARNAME=value。此方式所設定的環境變數是個人的,不會為其他任何人設定。
官方使用的環境變數參考如下 (節入置官方文件: https://docs.github.com/en/codespaces/developing-in-a-codespace/default-environment-variables-for-your-codespace)
Environment variable | Description |
---|---|
CODESPACE_NAME |
codespace 名稱 |
CODESPACES |
在 code內總是為 true為 true |
GIT_COMMITTER_EMAIL |
未來 git commit 的「author」欄位的電子郵件。 |
GIT_COMMITTER_NAME |
未來 git commit 的「committer」欄位的名稱。 |
GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN |
傳回 GitHub Codespaces 轉送連接埠的網域. |
GITHUB_API_URL |
回傳 API URL. 如 https://api.github.com . |
GITHUB_GRAPHQL_URL |
回傳 GraphQL API URL. 如 https://api.github.com/graphql . |
GITHUB_REPOSITORY |
回傳 Owner 和 Repository 名稱. 如 octocat/Hello-World . |
GITHUB_SERVER_URL |
回傳 GitHub server URL . 如https://github.com . |
GITHUB_TOKEN |
代表 Codespace 中的使用者的簽名身份驗證 Token。您可以使用它對 GitHub API 進行經過身份驗證的呼叫。 " |
GITHUB_USER |
啟動 Codespace 的使用者名稱 |
使用者可以將開發環境所需的 Secret 新增至個人帳戶中 GitHub Codespace 設定內,像是開發過程中所需要的 Token 或 Service principals,使用者可以選擇哪些 Repository 有權存取每個 Secret。如果想要為目前正在運作中的 Codespace 建立 Secret 並使用,請在建立後重新啟動 Codespace。
使用時只需要透過 $變數名稱即可,如下圖所示:
你能在 Settings > Codespace > Secret 找到此功能
環境變數與秘密管理在開發與維運流程中重要的功能,可以依據不同的情境執行不同的任務,近年來其安全性也備受關注。因應開發與維運需求,GitHub Codespace 也具有這兩項功能。使用平台的好處在於是可以讓使用者專注於開發流程,無須花費太多時間在如何自己實作環境變數與秘密管理 。但也不是使用平台就絕對安全,完整裡解其功能與可能產生的風險是必須的。