Short:
Я хочу иметь возможность развертывать приложение Sinatra без жестко закодированных секретов и переменных с помощью Google Cloud App Engine. Развертывание в App Engine с гарантией загрузки переменных среды из хранилища данных Google Cloud было рекомендуемым вариантом. Я надеялся найти что-то похожее на простоту Heroku, но это не так.
Вопрос:
Как получить информацию о среде $ SERVICE_ACCOUNT (которую я установил в разделе Cit / CD GitLab) в качестве значения учетных данных в 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