繁体   English   中英

Google App Engine 和 Travis CI 上的 NodeJS 环境变量

[英]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

这样的配置效果很好:如果在testlint命令期间没有发生错误,项目将部署到 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM