dpl-gae 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/dpl-gae.gemspec +3 -0
- data/lib/dpl/provider/gae.rb +97 -0
- data/spec/provider/gae_spec.rb +26 -0
- metadata +159 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c7f26beae11df84906bcaacba7848fcc3cdcdadd
|
4
|
+
data.tar.gz: 9a7840ca3f9aec518e0ae98717dbd76a79955052
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 72f36921b38683cf68fcede0168a668d48cdf3514e651dfcfa7983742b296f69f68c83e926125f3c8d0b8ac2aa74665078237cdd83056fcfc4acc3cebd4c239c
|
7
|
+
data.tar.gz: 612d972af8a8b62b0da2ab168bd2eb46eace0169363e0fb2d0a5b78b2a951ef51eb0a6cff3b9d5cb61e243a04998d38482cd9b1eefd4318c8fdc5200d4edd672
|
data/dpl-gae.gemspec
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
module DPL
|
2
|
+
class Provider
|
3
|
+
class GAE < Provider
|
4
|
+
experimental 'Google App Engine'
|
5
|
+
|
6
|
+
BASE='https://dl.google.com/dl/cloudsdk/channels/rapid/'
|
7
|
+
NAME='google-cloud-sdk'
|
8
|
+
EXT='.tar.gz'
|
9
|
+
INSTALL='~'
|
10
|
+
BOOTSTRAP="#{INSTALL}/#{NAME}/bin/bootstrapping/install.py"
|
11
|
+
GCLOUD="#{INSTALL}/#{NAME}/bin/gcloud"
|
12
|
+
|
13
|
+
def with_python_2_7(cmd)
|
14
|
+
cmd.gsub!(/'/, "'\\\\''")
|
15
|
+
context.shell("bash -c 'source #{context.env['HOME']}/virtualenv/python2.7/bin/activate; #{cmd}'")
|
16
|
+
end
|
17
|
+
|
18
|
+
def install_deploy_dependencies
|
19
|
+
if File.exists? GCLOUD
|
20
|
+
return
|
21
|
+
end
|
22
|
+
|
23
|
+
$stderr.puts 'Python 2.7 Version'
|
24
|
+
|
25
|
+
unless with_python_2_7("python -c 'import sys; print(sys.version)'")
|
26
|
+
error 'Could not use python2.7'
|
27
|
+
end
|
28
|
+
|
29
|
+
$stderr.puts 'Downloading Google Cloud SDK ...'
|
30
|
+
|
31
|
+
unless context.shell("curl -L #{BASE + NAME + EXT} | gzip -d | tar -x -C #{INSTALL}")
|
32
|
+
error 'Could not download Google Cloud SDK.'
|
33
|
+
end
|
34
|
+
|
35
|
+
$stderr.puts 'Bootstrapping Google Cloud SDK ...'
|
36
|
+
|
37
|
+
unless with_python_2_7("#{BOOTSTRAP} --usage-reporting=false --command-completion=false --path-update=false")
|
38
|
+
error 'Could not bootstrap Google Cloud SDK.'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def needs_key?
|
43
|
+
false
|
44
|
+
end
|
45
|
+
|
46
|
+
def check_auth
|
47
|
+
unless with_python_2_7("#{GCLOUD} -q auth activate-service-account --key-file #{keyfile}")
|
48
|
+
error 'Authentication failed.'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def keyfile
|
53
|
+
options[:keyfile] || context.env['GOOGLECLOUDKEYFILE'] || 'service-account.json'
|
54
|
+
end
|
55
|
+
|
56
|
+
def project
|
57
|
+
options[:project] || context.env['GOOGLECLOUDPROJECT'] || context.env['CLOUDSDK_CORE_PROJECT'] || File.dirname(context.env['TRAVIS_REPO_SLUG'] || '')
|
58
|
+
end
|
59
|
+
|
60
|
+
def version
|
61
|
+
options[:version]
|
62
|
+
end
|
63
|
+
|
64
|
+
def config
|
65
|
+
options[:config] || 'app.yaml'
|
66
|
+
end
|
67
|
+
|
68
|
+
def no_promote
|
69
|
+
options[:no_promote]
|
70
|
+
end
|
71
|
+
|
72
|
+
def verbosity
|
73
|
+
options[:verbosity] || 'warning'
|
74
|
+
end
|
75
|
+
|
76
|
+
def no_stop_previous_version
|
77
|
+
options[:no_stop_previous_version]
|
78
|
+
end
|
79
|
+
|
80
|
+
def push_app
|
81
|
+
command = GCLOUD
|
82
|
+
command << ' --quiet'
|
83
|
+
command << " --verbosity \"#{verbosity}\""
|
84
|
+
command << " --project \"#{project}\""
|
85
|
+
command << " app deploy \"#{config}\""
|
86
|
+
command << " --version \"#{version}\"" unless version.to_s.empty?
|
87
|
+
command << " --#{no_promote ? 'no-' : ''}promote"
|
88
|
+
command << ' --no-stop-previous-version' unless no_stop_previous_version.to_s.empty?
|
89
|
+
unless with_python_2_7(command)
|
90
|
+
log 'Deployment failed.'
|
91
|
+
context.shell('find $HOME/.config/gcloud/logs -type f -print -exec cat {} \;')
|
92
|
+
error ''
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dpl/provider/gae'
|
3
|
+
|
4
|
+
describe DPL::Provider::GAE do
|
5
|
+
subject :provider do
|
6
|
+
described_class.new(DummyContext.new, project: 'test')
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
describe '#push_app' do
|
11
|
+
example 'with defaults' do
|
12
|
+
expect(provider.context.env).to receive(:[]).with('HOME').and_return('/home/travis')
|
13
|
+
allow(provider.context).to receive(:shell).with("bash -c 'source /home/travis/virtualenv/python2.7/bin/activate; #{DPL::Provider::GAE::GCLOUD} --quiet --verbosity \"warning\" --project \"test\" app deploy \"app.yaml\" --promote'").and_return(true)
|
14
|
+
provider.push_app
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
describe '#with_python_2_7' do
|
20
|
+
example 'with apostrophe' do
|
21
|
+
expect(provider.context.env).to receive(:[]).with('HOME').and_return('/home/travis')
|
22
|
+
allow(provider.context).to receive(:shell).with("bash -c 'source /home/travis/virtualenv/python2.7/bin/activate; python -c '\\''import sys; print(sys.version)'\\'''").and_return(true)
|
23
|
+
provider.with_python_2_7("python -c 'import sys; print(sys.version)'")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dpl-gae
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Konstantin Haase
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dpl
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.9.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.9.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-its
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: json_pure
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: tins
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: coveralls
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: highline
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: deploy tool abstraction for clients
|
126
|
+
email: konstantin.mailinglists@googlemail.com
|
127
|
+
executables: []
|
128
|
+
extensions: []
|
129
|
+
extra_rdoc_files: []
|
130
|
+
files:
|
131
|
+
- dpl-gae.gemspec
|
132
|
+
- lib/dpl/provider/gae.rb
|
133
|
+
- spec/provider/gae_spec.rb
|
134
|
+
homepage: https://github.com/travis-ci/dpl
|
135
|
+
licenses:
|
136
|
+
- MIT
|
137
|
+
metadata: {}
|
138
|
+
post_install_message:
|
139
|
+
rdoc_options: []
|
140
|
+
require_paths:
|
141
|
+
- lib
|
142
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '2.2'
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
requirements: []
|
153
|
+
rubyforge_project:
|
154
|
+
rubygems_version: 2.6.13
|
155
|
+
signing_key:
|
156
|
+
specification_version: 4
|
157
|
+
summary: deploy tool
|
158
|
+
test_files:
|
159
|
+
- spec/provider/gae_spec.rb
|