heirloom 0.0.1 → 0.0.2
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.
- data/lib/heirloom/cli.rb +6 -2
- data/lib/heirloom/version.rb +1 -1
- data/lib/heirloom.rb +40 -11
- metadata +16 -16
data/lib/heirloom/cli.rb
CHANGED
@@ -9,10 +9,13 @@ build and manage artifacts
|
|
9
9
|
|
10
10
|
Usage:
|
11
11
|
|
12
|
-
heirloom [options] build
|
13
12
|
heirloom list
|
13
|
+
heirloom build [options]
|
14
|
+
heirloom delete [options]
|
15
|
+
heirloom info [options]
|
14
16
|
EOS
|
15
17
|
opt :help, "Display Help"
|
18
|
+
opt :accounts, "CSV list of accounts to authorize", :type => :string
|
16
19
|
opt :class, "Class of artifact. This should match the SCM repo", :type => :string
|
17
20
|
opt :dir, "Directory which contains git repo", :type => :string
|
18
21
|
opt :prefix, "Bucket prefix", :type => :string
|
@@ -26,7 +29,8 @@ EOS
|
|
26
29
|
raise 'Missing required args' unless @opts[:sha] && @opts[:class]
|
27
30
|
h = Heirloom.new :heirloom_type => @opts[:class],
|
28
31
|
:source_dir => @opts[:dir] ||= ".",
|
29
|
-
:prefix => @opts[:prefix]
|
32
|
+
:prefix => @opts[:prefix],
|
33
|
+
:accounts => @opts[:accounts].split(',')
|
30
34
|
|
31
35
|
h.build_and_upload_to_s3(:sha => @opts[:sha])
|
32
36
|
when 'list'
|
data/lib/heirloom/version.rb
CHANGED
data/lib/heirloom.rb
CHANGED
@@ -40,15 +40,9 @@ module Heirloom
|
|
40
40
|
sdb.delete args[:class], args[:sha]
|
41
41
|
end
|
42
42
|
|
43
|
-
def self.connect_to_sdb
|
44
|
-
@access_key = ENV['AWS_ACCESS_KEY_ID']
|
45
|
-
@secret_key = ENV['AWS_SECRET_ACCESS_KEY']
|
46
|
-
|
47
|
-
AWS::SimpleDb.new(@access_key, @secret_key)
|
48
|
-
end
|
49
|
-
|
50
43
|
def initialize(args)
|
51
44
|
@sdb = self.class.connect_to_sdb
|
45
|
+
@accounts = args[:accounts]
|
52
46
|
|
53
47
|
self.heirloom_type = args[:heirloom_type]
|
54
48
|
self.source_dir = args[:source_dir]
|
@@ -57,6 +51,7 @@ module Heirloom
|
|
57
51
|
|
58
52
|
def build_and_upload_to_s3(args)
|
59
53
|
get_commit args[:sha]
|
54
|
+
create_sdb_domain
|
60
55
|
raise 'Artifact already uploaded to S3' if already_in_sdb?
|
61
56
|
build_local_artifact
|
62
57
|
create_sdb_record
|
@@ -89,7 +84,6 @@ module Heirloom
|
|
89
84
|
end
|
90
85
|
|
91
86
|
def create_sdb_record
|
92
|
-
create_sdb_domain
|
93
87
|
@sdb.put_attributes domain, sha, { 'built_by' => "#{user}@#{hostname}",
|
94
88
|
'built_at' => Time.now.utc.iso8601,
|
95
89
|
'tests' => 'pending',
|
@@ -111,6 +105,7 @@ module Heirloom
|
|
111
105
|
|
112
106
|
# Connect to s3 in region of bucket
|
113
107
|
region = options['region']
|
108
|
+
endpoint = options['endpoint']
|
114
109
|
connection = Fog::Storage.new :provider => 'AWS',
|
115
110
|
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
|
116
111
|
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
|
@@ -124,23 +119,50 @@ module Heirloom
|
|
124
119
|
:body => File.open(artifact_path),
|
125
120
|
:public => false
|
126
121
|
|
122
|
+
# Get the bucket owner name and ID
|
123
|
+
id = connection.get_bucket_acl(bucket).body['Owner']['ID']
|
124
|
+
name = connection.get_bucket_acl(bucket).body['Owner']['Name']
|
125
|
+
|
126
|
+
# Set the objects ACLs
|
127
|
+
connection.put_object_acl(bucket, "#{folder}/#{artifact}", build_bucket_grants(id, name))
|
128
|
+
|
127
129
|
# Add the artifact location
|
128
130
|
@sdb.put_attributes domain, sha, { "#{region}-s3-url" => "s3://#{bucket}/#{folder}/#{artifact}" }
|
129
131
|
|
130
132
|
# Add the http url
|
131
|
-
@sdb.put_attributes domain, sha, { "#{region}-http-url" => "http://#{
|
133
|
+
@sdb.put_attributes domain, sha, { "#{region}-http-url" => "http://#{endpoint}/#{folder}/#{artifact}" }
|
132
134
|
|
133
135
|
# Add the https url
|
134
|
-
@sdb.put_attributes domain, sha, { "#{region}-https-url" => "https://#{
|
136
|
+
@sdb.put_attributes domain, sha, { "#{region}-https-url" => "https://#{endpoint}/#{folder}/#{artifact}" }
|
135
137
|
end
|
136
138
|
end
|
137
139
|
|
138
140
|
private
|
139
141
|
|
142
|
+
def build_bucket_grants(id, name)
|
143
|
+
# Creat the AccessControlList based on given accounts
|
144
|
+
a = Array.new
|
145
|
+
@accounts.each do |g|
|
146
|
+
a << {
|
147
|
+
'Grantee' => { 'EmailAddress' => g } ,
|
148
|
+
'Permission' => 'READ'
|
149
|
+
}
|
150
|
+
end
|
151
|
+
|
152
|
+
{
|
153
|
+
'Owner' => {
|
154
|
+
'DisplayName' => name,
|
155
|
+
'ID' => id
|
156
|
+
},
|
157
|
+
'AccessControlList' => a
|
158
|
+
}
|
159
|
+
end
|
160
|
+
|
140
161
|
def buckets
|
141
162
|
{
|
142
163
|
"#{prefix}-us-west-1" => {
|
143
|
-
'region' => 'us-west-1'
|
164
|
+
'region' => 'us-west-1',
|
165
|
+
'endpoint' => 's3-us-west-1.amazonaws.com'
|
144
166
|
}
|
145
167
|
}
|
146
168
|
end
|
@@ -185,5 +207,12 @@ module Heirloom
|
|
185
207
|
Socket.gethostname
|
186
208
|
end
|
187
209
|
|
210
|
+
def self.connect_to_sdb
|
211
|
+
@access_key = ENV['AWS_ACCESS_KEY_ID']
|
212
|
+
@secret_key = ENV['AWS_SECRET_ACCESS_KEY']
|
213
|
+
|
214
|
+
AWS::SimpleDb.new(@access_key, @secret_key)
|
215
|
+
end
|
216
|
+
|
188
217
|
end
|
189
218
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heirloom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70259568822860 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70259568822860
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: fog
|
27
|
-
requirement: &
|
27
|
+
requirement: &70259568822200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70259568822200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: grit
|
38
|
-
requirement: &
|
38
|
+
requirement: &70259568821600 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70259568821600
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: logger
|
49
|
-
requirement: &
|
49
|
+
requirement: &70259568820920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70259568820920
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: minitar
|
60
|
-
requirement: &
|
60
|
+
requirement: &70259568820320 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70259568820320
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: trollop
|
71
|
-
requirement: &
|
71
|
+
requirement: &70259568819700 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70259568819700
|
80
80
|
description: I help build and manage artifacts
|
81
81
|
email:
|
82
82
|
- brett@weav.net
|
@@ -109,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
109
|
version: '0'
|
110
110
|
segments:
|
111
111
|
- 0
|
112
|
-
hash:
|
112
|
+
hash: -2437410671225482023
|
113
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
114
|
none: false
|
115
115
|
requirements:
|
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
version: '0'
|
119
119
|
segments:
|
120
120
|
- 0
|
121
|
-
hash:
|
121
|
+
hash: -2437410671225482023
|
122
122
|
requirements: []
|
123
123
|
rubyforge_project: heirloom
|
124
124
|
rubygems_version: 1.8.16
|