- 为什么要用环境变量
- .env文件的书写和使用
- GitHub Actions和Secrets
- GitHub Actions的workflow中配置环境变量
- 1. 在env属性中明文写出秘钥(不推荐)
- 2. 在env属性中逐个引用secrets(麻烦)
- 3. 使用secrets注入多个环境变量到env(推荐)
- 总结
为什么要用环境变量
有的项目中需要配置秘钥,如果不希望把秘钥公开上传到代码仓库,可以在项目的开发文件夹中使用 .env 文件,然后在 .gitignore 文件中新增一行 .env ,这样 push 到GitHub的时候就不会上传秘钥了。
.env文件的书写和使用
.env文件内容
VITE_apiKey001 = "***"
VITE_apiKey002 = "***"
VITE_apiKey003 = "***"
VITE_apiKey004 = "***"
VITE_apiKey005 = "***"
vite 项目中调用
const config = {
apiKey001: import.meta.env.VITE_apiKey001,
apiKey002: import.meta.env.VITE_apiKey002,
apiKey003: import.meta.env.VITE_apiKey003,
apiKey004: import.meta.env.VITE_apiKey004,
apiKey005: import.meta.env.VITE_apiKey005
};
请注意,这样只是让查看工程文件的人看不到秘钥而已,如果生成的静态文件是部署在GitHub pages上,那别人也能在静态文件里找到秘钥。
GitHub Actions和Secrets
我想用 GitHub Actions 自动生成静态文件并部署到 pages 变成静态网站,我已经有好几个这样的静态网站了,这并不难操作。
自动部署的时候需要使用GitHub账号秘钥。
在 Github 的账号设置当中找到 developer settings,再找到 Tokens(classic),然后 generate new token,选 classic 的那个,权限范围至少要包括 repo, workflow,给这个 token 写个备注,比如是给哪个项目做什么用的,然后复制 token 的内容。
回到项目的代码仓库,点 settings,左侧菜单里找到Secrets and Variables,点开之后进入 Actions 的页面,新增一个 repository secrets,给秘钥起个名称,我看大家通常叫 API_TOKEN_GITHUB,然后把token贴入秘钥内容。
再回到此项目的 Actions ,在 workflows 的流程文件里用 ${{ secrets.API_TOKEN_GITHUB }} 来引用秘钥即可。
GitHub Actions的workflow中配置环境变量
刚才是给 workflow 文件配置了可以访问到的环境变量,但是我们的项目文件和 workflow 文件不同,项目文件无法直接访问这些变量。
想要创建项目文件可以访问到的环境变量,有三种做法。
1. 在env属性中明文写出秘钥(不推荐)
在 workflow 文件中这样写
jobs:
my_job:
env:
VITE_apiKey001: "***"
VITE_apiKey002: "***"
VITE_apiKey003: "***"
VITE_apiKey004: "***"
VITE_apiKey005: "***"
如果代码仓库是公开的,那么别人也能看到这个 workflow 文件的内容,那还叫什么“秘”钥。
2. 在env属性中逐个引用secrets(麻烦)
在代码仓库的环境变量中新建五个变量,输入变量名和内容,保存,然后在 workflow 里面引用。
jobs:
my_job:
env:
VITE_apiKey001: ${{ secrets.VITE_apiKey001 }}
VITE_apiKey002: ${{ secrets.VITE_apiKey002 }}
VITE_apiKey003: ${{ secrets.VITE_apiKey003 }}
VITE_apiKey004: ${{ secrets.VITE_apiKey004 }}
VITE_apiKey005: ${{ secrets.VITE_apiKey005 }}
这里只有五个,所以新建五个就行了,如果有五十个,那就太麻烦了。
3. 使用secrets注入多个环境变量到env(推荐)
我们回到代码仓库的环境变量,新建一个secret变量,变量名可以叫 ENV_FILE,变量内容输入 .env 文件里的内容
VITE_apiKey001 = "***"
VITE_apiKey002 = "***"
VITE_apiKey003 = "***"
VITE_apiKey004 = "***"
VITE_apiKey005 = "***"
然后在工作流程文件的 steps 当中新增一步
jobs:
my_job:
steps:
- name: Create .env file
run: echo "${{ secrets.ENV_FILE }}" > .env
这样会在 workflow 的部署环境下新建一个 .env 文件,那么在后面的步骤中,工程文件就能访问到 .env 里面的环境变量了。
总结
瞎凑合用吧。