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