如何在GitHub Actions中存储API Key等密钥供Expo构建时读取
Expo GitHub Actions 自动构建环境变量配置方案
存储加密环境变量的位置
直接使用GitHub仓库原生的Secrets功能即可,该功能会自动加密存储内容,所有敏感信息不会明文泄露,操作入口为仓库页的 Settings > Secrets and variables > Actions:
- 敏感配置(如API密钥、鉴权Token、私有服务地址等)存储在Secrets分类下,该分类内容会在工作流日志中自动打码,避免泄露
- 非敏感公开配置可以存储在Variables分类下
配置工作流实现Expo正常读取变量
按以下步骤配置GitHub Actions工作流文件即可:
- 首先在工作流yaml的全局env字段,把GitHub Secrets映射为工作流可读取的环境变量,示例如下:
env: EXPO_PUBLIC_API_URL: ${{ secrets.EXPO_PUBLIC_API_URL }} EXPO_PUBLIC_API_KEY: ${{ secrets.EXPO_PUBLIC_API_KEY }} # 其余所需环境变量按相同格式依次添加
- 在执行Expo构建命令前,新增生成.env文件的步骤,将变量写入项目根目录的.env文件,示例如下:
- name: 生成.env配置文件 run: | echo "EXPO_PUBLIC_API_URL=${{ env.EXPO_PUBLIC_API_URL }}" > .env echo "EXPO_PUBLIC_API_KEY=${{ env.EXPO_PUBLIC_API_KEY }}" >> .env # 其余变量依次追加,注意第二条及以后使用>>追加写入,不要用>覆盖已有内容
如果环境变量条目较多,也可以直接把本地完整的.env文件内容作为一个单独的GitHub Secret(命名为ENV_FILE_CONTENT),上述生成步骤可以简化为:
- name: 生成.env配置文件 run: echo "${{ secrets.ENV_FILE_CONTENT }}" > .env
- 如果你使用EAS Build,需要确保
eas.json中开启了dotenv读取支持,示例配置片段如下:
{ "build": { "production": { "experimental": { "enableDotenv": true } } } }
注意事项
- Expo规定需要注入到客户端代码的环境变量必须以
EXPO_PUBLIC_为前缀,否则构建时会自动过滤,不会传入客户端代码;没有该前缀的变量仅能在构建脚本阶段使用 - 不要把本地的.env文件提交到代码仓库,需要将
.env加入.gitignore规则,避免敏感信息泄露
内容的提问来源于stack exchange,提问作者Lance Liam
相关产品推荐
相关产品推荐

