Ruby 如何让GitLab CI变量进入Sinatra应用程序以查询Google云数据存储?
简称: 我希望能够使用谷歌云应用引擎部署一个没有硬编码秘密和变量的Sinatra应用程序。建议在确保从Google云数据存储加载环境变量的同时部署到App Engine。我希望找到类似于Heroku的简单性的东西,但事实并非如此 问题: 如何获取$SERVICE\u帐户环境信息(我在GitLab CI/CD部分中设置的)作为Ruby 如何让GitLab CI变量进入Sinatra应用程序以查询Google云数据存储?,ruby,environment-variables,google-cloud-datastore,gitlab-ci,Ruby,Environment Variables,Google Cloud Datastore,Gitlab Ci,简称: 我希望能够使用谷歌云应用引擎部署一个没有硬编码秘密和变量的Sinatra应用程序。建议在确保从Google云数据存储加载环境变量的同时部署到App Engine。我希望找到类似于Heroku的简单性的东西,但事实并非如此 问题: 如何获取$SERVICE\u帐户环境信息(我在GitLab CI/CD部分中设置的)作为foobar.rb中的凭据值 app.yaml: image: google/cloud-sdk:latest before_script: - apt-get ins
foobar.rb中的凭据值
app.yaml:
image: google/cloud-sdk:latest
before_script:
- apt-get install -y ruby-full build-essential
- gem install bundler
- bundle config --global silence_root_warning 1
- bundle install
after_script:
- rm /tmp/$CI_PIPELINE_ID.json
deploy_production:
stage: deploy
environment: Production
only:
- production
script:
- echo $SERVICE_ACCOUNT > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
- gcloud --quiet --project $PROJECT_ID app deploy app.yaml
foobar.rb:
...
require "google/cloud/datastore"
class App < Sinatra::Application
if settings.production?
data_store = Google::Cloud::Datastore.new(
project: 'foobar',
credentials: "???"
)
query = data_store.query "kindoffoobar"
results = data_store.run query
# Set each result as an env variable
results[0].properties.to_h.each do |key, value|
ENV[key]= value
end
end
... rest of app
...
需要“谷歌/云/数据存储”
类应用程序
这个答案有帮助吗?放弃并决定在部署之前将env变量保存在app.yaml文件中,而不提交它们。这个答案有帮助吗?放弃并决定在部署之前将env变量保存在app.yaml文件中,而不是提交它们。