是否有必要将云构建中的环境变量注入到App Engine标准环境中?
我不想将我的环境变量推送到应用程序中的GitHub。yaml
或。env
。因此,当Cloud Build拉入并部署时,它缺少。env
文件,服务器无法完成某些请求。
我试图避免使用数据存储,因为数据存储的异步特性会使代码更加混乱。我试图使用这里找到的加密机密,但这似乎不起作用,因为我将这些机密添加到了app deploy中,并且它们没有进入部署,所以我假设这不是云构建的用例。
我还尝试了这里的教程,以导入。env
文件从存储中导入App Engine Standard,但由于Standard没有本地存储,我认为它将失效。
那么是否无论如何都可以将. env
注入App Engine Standard环境而不使用Datastore,或者提交app.yaml
或. env
来更改控制?可能使用Cloud Build、KMS或某种类型的存储?
以下是我尝试的cloudbuild。yaml
:
steps:
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
secretEnv: ['SECRET1', 'SECRET2', 'SECRET3', 'SECRET4', 'SECRET5']
timeout: "1600s"
secrets:
- kmsKeyName: projects/<Project-Name>/locations/global/keyRings/<Key-Ring-Name>/cryptoKeys/<Key-Name>
secretEnv:
SECRET1: <encrypted-key-base64 here>
SECRET2: <encrypted-key-base64 here>
SECRET3: <encrypted-key-base64 here>
SECRET4: <encrypted-key-base64 here>
SECRET5: <encrypted-key-base64 here>
高五布里亚式的回答很棒,但我添加了我稍微不同的解决方案。
1). 在根项目文件夹中,我们需要cloudbuild。yaml文件,但我将其称为buildsetttings。yaml
,因为第一个名字有问题
buildsetttings.yaml我添加了这段代码:
steps:
- name: node
entrypoint: npm
args: ['install']
- name: node
entrypoint: npm
env:
- 'DB_URL=${_DB_URL}'
- 'SENDGRID_API_KEY=${_SENDGRID_API_KEY}'
- 'CLIENT_ID=${_CLIENT_ID}'
args: ['run', 'create-app-yaml']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
我有另一个解决方案,如果有人仍然对此感兴趣。这应该适用于所有语言,因为环境变量直接添加到app.yaml
文件中
>
在构建触发器中添加替换变量(如本答案所述)。
将环境变量添加到应用程序。yaml
在某种程度上,它们可以很容易地被构建触发变量替代。这样地:
env_variables:
SECRET_KEY: %SECRET_KEY%
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: bash
args:
- '-c'
- |
sed -i 's/%SECRET_KEY%/'${_SECRET_KEY}'/g' app.yaml
gcloud app deploy app.yaml
下面是一个关于如何在云构建(触发器)设置中安全存储环境变量并将其导入应用程序的教程。
基本上有三个步骤:
>
将环境变量添加到构建触发器设置之一的“variables”部分
在构建触发器中向何处添加变量的屏幕截图
按照惯例,在构建触发器中设置的变量必须以下划线(_)开头
配置cloudbuild.yaml
(在代码示例的第二步)以从构建触发器中读取变量,将它们设置为env vars,并将所有env vars写入本地. env文件
将couldbuild.yaml
(下图)添加到您的项目根目录
steps:
- name: node:10.15.1
entrypoint: npm
args: ["install"]
- name: node:10.15.1
entrypoint: npm
args: ["run", "create-env"]
env:
- 'MY_SECRET_KEY=${_MY_SECRET_KEY}'
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "1600s"
本文向大家介绍Python环境变量设置方法,包括了Python环境变量设置方法的使用技巧和注意事项,需要的朋友参考一下 Alias Maya中的脚本语言是Mel 和 Python,据说Houdini未来也会把Python作为主要的脚本语言,作为影视特效师,掌握Python语言是必备技能;虽然Maya内置了Python运行时,但是,如果要系统学习Python语言,环境变量还是需要配置一下~ 默认情况
问题内容: 我使用martini在Go中有一个GAE应用程序。我需要能够设置环境变量以告诉martini它应该使用生产设置进行初始化。根据Python文档,您可以在app.yaml中设置环境变量。我没有在Go docs中 看到任何有关此的内容,但我猜想它应该可以正常工作。 我需要能够将环境变量设置为,但是我只想在实际投入生产时(即)进行操作。有什么方法可以告诉您仅在非开发服务器上运行吗? 问题答案
问题内容: 我需要在python脚本中设置一些环境变量,并且我希望从python调用的所有其他脚本(shell脚本)(将是子进程)来查看设置的环境变量。该值为数字。 如果这样做,它会抱怨说1必须是字符串。我也想知道一旦设置它,如何在python(在脚本的后半部分)中读取环境变量。 问题答案: 你可能需要考虑其他方面的代码健壮性; 当你将整数值的变量存储为环境变量时,请尝试 然后为了进行检索,请考虑
问题内容: 如何从内部设置一些环境变量以与类似命令一起使用? 这是我目前所拥有的: 我想在启动脚本中设置环境变量(例如),同时仍然能够仅通过一个命令来启动应用程序。 问题答案: 在脚本命令中设置环境变量: 然后在您的应用中使用。 注意:确保它可以跨平台工作。如果只关心Mac / Linux,则可以忽略它。
问题内容: 我已经开始在Django项目中工作,我想设置一些环境变量,而不必手动设置它们或将bash文件作为源。 我想设置以下变量: 我已经读过这篇文章,但这并不能解决我想要的问题。另外,我尝试在Preferences- > Build,Execution,Deployment- > Console- > Python Console / Django Console中设置环境变量,但是它设置了解
问题内容: 我正在尝试设置一个环境变量,然后将其读回以验证它是否确实被设置。 我有以下内容: 但是,它看起来总是空的,这意味着它可能设置不正确。 我的exec命令正确吗?javadocs声明它可以将字符串参数作为命令。 有任何想法吗? 问题答案: 这行不通。当您开始一个新过程时,该过程将收到环境 的副本 。然后,它对环境变量所做的任何更改都将在该副本中进行,并且在任何时候都不会对调用方可见。 您实