iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

環境變數 (Environment Variable)

一般來說,如果只有單一 Codespace,可以考慮與原來地端開發環境方式相同: 透過 ~/.bashrc 檔案中設定環境變數的值。這部分要注意 Codespace 生命週期:如果停止/重啟 codespace,此環境變數會維持設定;但如果重建 dev container 或刪除 code space 建立新的,檔案內容將重置,環境變數則不再保留。

單一 repository 對多個 codespace

  • 透過 devcontainer.json

此設定方式主要在遠端伺服器的 proecess 內使用 (包含 terminals 與 debugging sessions),但不能在容器內廣泛使用。設定方式為在 devcontainer.json 內使用 remoteEnv 進行設定,設定方法如下:

    {
        "remoteEnv": {
          "key": "value"
       }
    }

 

  • 使用自定義的 Dockerfile

如果你使用自定義的 dev container,則可以在 dockerfile 內以新增 ENV VARNAME=value 來設定環境變數。當將此變更推送到 Repository 後重建容器或建立新的 Codespace 時生效。

 

  • 使用開發環境的 Secret

本篇文章後面秘密管理會提到如何新增秘密。

 
 

個人 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)

使用者可以將開發環境所需的 Secret 新增至個人帳戶中 GitHub Codespace 設定內,像是開發過程中所需要的 TokenService principals,使用者可以選擇哪些 Repository 有權存取每個 Secret。如果想要為目前正在運作中的 Codespace 建立 Secret 並使用,請在建立後重新啟動 Codespace。
使用時只需要透過 $變數名稱即可,如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20240921/20091494JOrMXkVqDh.png

 
 

Secret 命名原則

  • 只能包含字母數字字元([a-z]、[A-Z]、[0-9])或底線(_)。不允許有空格
  • 秘密名稱不得以 GITHUB_ 前綴開頭
  • 秘密名稱不得以數字開頭
  • 秘密名稱不區分大小寫
  • 秘密名稱在其建立層級必須是唯一的

 
 

Secret 限制:

  • 最高 100 secrets
  • Secrets 大小限制為 48 KB

你能在 Settings > Codespace > Secret 找到此功能

https://ithelp.ithome.com.tw/upload/images/20240921/20091494t3nUfTvy48.png

 
 
 

後記

環境變數與秘密管理在開發與維運流程中重要的功能,可以依據不同的情境執行不同的任務,近年來其安全性也備受關注。因應開發與維運需求,GitHub Codespace 也具有這兩項功能。使用平台的好處在於是可以讓使用者專注於開發流程,無須花費太多時間在如何自己實作環境變數秘密管理 。但也不是使用平台就絕對安全,完整裡解其功能與可能產生的風險是必須的。


上一篇
GitHub Codespace 各項管理功能說明
下一篇
GitHub Codespace 安全最佳實踐
系列文
現代化應用程式開發與維運 - GitHub Codespace 與 GitHub Copilot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言