Class: DPL::Provider::GAE
- Inherits:
-
DPL::Provider
- Object
- DPL::Provider
- DPL::Provider::GAE
- Defined in:
- lib/dpl/provider/gae.rb
Constant Summary collapse
- BASE =
'https://dl.google.com/dl/cloudsdk/channels/rapid/'
- NAME =
'google-cloud-sdk'
- EXT =
'.tar.gz'
- INSTALL =
'~'
- BOOTSTRAP =
"#{INSTALL}/#{NAME}/bin/bootstrapping/install.py"
- GCLOUD =
"#{INSTALL}/#{NAME}/bin/gcloud"
Instance Method Summary collapse
- #check_auth ⇒ Object
- #config ⇒ Object
- #install_deploy_dependencies ⇒ Object
- #keyfile ⇒ Object
- #needs_key? ⇒ Boolean
- #no_promote ⇒ Object
- #no_stop_previous_version ⇒ Object
- #project ⇒ Object
- #push_app ⇒ Object
- #verbosity ⇒ Object
- #version ⇒ Object
- #with_python_2_7(cmd) ⇒ Object
Instance Method Details
#check_auth ⇒ Object
46 47 48 49 50 |
# File 'lib/dpl/provider/gae.rb', line 46 def check_auth unless with_python_2_7("#{GCLOUD} -q auth activate-service-account --key-file #{keyfile}") error 'Authentication failed.' end end |
#config ⇒ Object
64 65 66 |
# File 'lib/dpl/provider/gae.rb', line 64 def config [:config] || 'app.yaml' end |
#install_deploy_dependencies ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/dpl/provider/gae.rb', line 18 def install_deploy_dependencies if File.exists? GCLOUD return end $stderr.puts 'Python 2.7 Version' unless with_python_2_7("python -c 'import sys; print(sys.version)'") error 'Could not use python2.7' end $stderr.puts 'Downloading Google Cloud SDK ...' unless context.shell("curl -L #{BASE + NAME + EXT} | gzip -d | tar -x -C #{INSTALL}") error 'Could not download Google Cloud SDK.' end $stderr.puts 'Bootstrapping Google Cloud SDK ...' unless with_python_2_7("#{BOOTSTRAP} --usage-reporting=false --command-completion=false --path-update=false") error 'Could not bootstrap Google Cloud SDK.' end end |
#keyfile ⇒ Object
52 53 54 |
# File 'lib/dpl/provider/gae.rb', line 52 def keyfile [:keyfile] || context.env['GOOGLECLOUDKEYFILE'] || 'service-account.json' end |
#needs_key? ⇒ Boolean
42 43 44 |
# File 'lib/dpl/provider/gae.rb', line 42 def needs_key? false end |
#no_promote ⇒ Object
68 69 70 |
# File 'lib/dpl/provider/gae.rb', line 68 def no_promote [:no_promote] end |
#no_stop_previous_version ⇒ Object
76 77 78 |
# File 'lib/dpl/provider/gae.rb', line 76 def no_stop_previous_version [:no_stop_previous_version] end |
#project ⇒ Object
56 57 58 |
# File 'lib/dpl/provider/gae.rb', line 56 def project [:project] || context.env['GOOGLECLOUDPROJECT'] || context.env['CLOUDSDK_CORE_PROJECT'] || File.dirname(context.env['TRAVIS_REPO_SLUG'] || '') end |
#push_app ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/dpl/provider/gae.rb', line 80 def push_app command = GCLOUD command << ' --quiet' command << " --verbosity \"#{verbosity}\"" command << " --project \"#{project}\"" command << " app deploy \"#{config}\"" command << " --version \"#{version}\"" unless version.to_s.empty? command << " --#{no_promote ? 'no-' : ''}promote" command << ' --no-stop-previous-version' unless no_stop_previous_version.to_s.empty? unless with_python_2_7(command) log 'Deployment failed.' context.shell('find $HOME/.config/gcloud/logs -type f -print -exec cat {} \;') error '' end end |
#verbosity ⇒ Object
72 73 74 |
# File 'lib/dpl/provider/gae.rb', line 72 def verbosity [:verbosity] || 'warning' end |
#version ⇒ Object
60 61 62 |
# File 'lib/dpl/provider/gae.rb', line 60 def version [:version] end |
#with_python_2_7(cmd) ⇒ Object
13 14 15 16 |
# File 'lib/dpl/provider/gae.rb', line 13 def with_python_2_7(cmd) cmd.gsub!(/'/, "'\\\\''") context.shell("bash -c 'source #{context.env['HOME']}/virtualenv/python2.7/bin/activate; #{cmd}'") end |