![](/img/trans.png)
[英]Where to store environment variables in App Engine for CI/CD Pipeline?
[英]NodeJS environment variables on Google App Engine and Travis CI
我有nodejs
应用程序并使用Travis CI进行持续集成(通过 eslint 运行测试和代码检查)。 在我的项目中,我在.env
文件中使用了一些环境变量(jwt 密钥、mongodb 凭据等)
现在我想在将development
分支合并到master
后设置持续部署。 为此,我已经调查了在谷歌上找到的 Travis 文档和其他指南并进行了一些设置。 我的.travis.yml
文件:
language: node_js
node_js: lts/*
cache:
directories:
- node_modules
script:
- yarn install
- yarn test
- yarn lint
notifications:
email: false
deploy:
provider: gae
project: gae-project-name
skip_cleanup: true
keyfile: gae.json
on: master
env:
global:
- secure: FlwzKDN8HXl1cuGBhtQwbm/GjbOVMcLfEhcJkKky+2aGIhe4BOSxjMynrCts7eM53a87GMnyJXsmFxKOeO+w8RYqHVixD77duejV2o+XkoZL1QWORqiSMyK8dvLNc+lqoJ1Lf+qFqOOQCq1TxJ4W5ycFs82/hJMlMuu8jf2fxGhENoDwcARivZ0Fsrq/4/JA+YS3JjG6dqr78M7VwhrKv4mk4M5wMHiacHpKPhHib56v//wwUtsgYnyVLV0n+CPBlm6yh2aWbESt+YLU4uar39gumpG5bzp4+F01qDrWQwi3ctArOYZ5sKHgSfHZDP4jOEcKF4pYWoUlMqkT1vInmK27jnoiiCjZzQ6sfLw2O8eTb104Rlbgae4ttY38KWNE5N5w37DvSV5VzkAZ5xJuXb4j+GF/YmDep5tKNFKgjyUkFeNb7gXY/9INaJlCMiw6guQ6dYRoQlHCbv43jLnxy75E5PHPKMKHkZEi1nfvCKBYgJhIZxZ1PEjWyrupvnt+eyV0IxC7e9vCr/Ih8GkUEPa/uFVHAhDzr5x11OxQogOlSbh+G1kytUS2LhUyxqnQeFwo0DZACML/GPW41r2iXmIwI+SZzSVuT/01ZTRJNiS56UfnncI/+q5rbHR/1muTArnEqbeCISOP0YN2cBF4MefelXuNmjy2IJop56vea/U=
...other variables
这样的配置效果很好:如果在test
和lint
命令期间没有发生错误,项目将部署到 Google App Engine。
但是我遇到了一个问题:我无法安全地导出我的 env。 在 CI 过程中 GAE 构建的变量,至于构建,它从master
库中获取文件,其中.env
不存在(具有敏感数据的文件在.gitignore
)。 因此,虽然应用程序已部署,但它不能作为 env 工作。 变量不存在。
我没有找到如何使用 Travis CI 安全地将环境变量导出到 GAE 的方法,希望得到您的帮助。
PS,您可能会注意到我已经加密了我的 env。 .travis.yml
变量。 我是为了运行使用环境细节的测试而制作的。 但我不知道如何将它们导出到 GAE 构建过程。
处理这个问题的方法很少。 我更喜欢 ci 中的 ENV 变量,将它们放入目录中,然后删除。
echo "$ENV_DEVELOP" > ./.env
echo $APP_ENGINE_TEST_KEY > /tmp/$CI_PIPELINE_ID.json
在管道期间执行类似的操作,然后在从系统中部署进程后将其删除
rm /tmp/$CI_PIPELINE_ID.json
rm ./.env
此外,如果您不想在管道的 envs 中的任何位置存储凭据,您可以创建基本 https 服务器,该服务器将根据请求为您检索 env 示例,并使用提交哈希的 auth。
您可以为推送事件创建一个钩子,并在推送时将提交哈希发送到您的服务器并将其存储在某个文件中,之后,当获取 env 的时间到来时,使用 deployment_commit_hash 作为授权从您的管道直接卷曲到服务器,并检查保存的值:) 祝你有美好的一天^_^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.