omnibus 6.0.30 → 6.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -0
- data/lib/omnibus/cli.rb +1 -1
- data/lib/omnibus/cli/publish.rb +5 -5
- data/lib/omnibus/compressors/dmg.rb +42 -3
- data/lib/omnibus/file_syncer.rb +2 -2
- data/lib/omnibus/publisher.rb +12 -10
- data/lib/omnibus/version.rb +1 -1
- data/omnibus.gemspec +2 -2
- data/spec/functional/file_syncer_spec.rb +42 -0
- data/spec/unit/compressors/dmg_spec.rb +43 -4
- data/spec/unit/publisher_spec.rb +7 -7
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5094211ab9d21742c4b0df1f711cd73b8f7ac9c275886fa4411a7ac8683fb287
|
4
|
+
data.tar.gz: 370b50282eb2a4d9ab9cfae046dce0856957e3ee672f7138df19f4e52e59b0f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 763997a408440c9194de3596088d6936d9c86a4ffdc67506058d82518580d4dcd25d314885fa592472dbc3796ff958ddbae957e9708456e8c0c138422ac726f7
|
7
|
+
data.tar.gz: ad013568c56d30105bdac1715fff11632e24ef91542ab8658e5f6fd0d710b5fc6ddd734210cf8e0e8927d579bd2441cdc55fcc6c387ec921acb8914b87ce192a
|
data/README.md
CHANGED
@@ -4,6 +4,14 @@
|
|
4
4
|
[![Build Status](https://badge.buildkite.com/446fd6049a9a5eeab50112aba117d3b7670ec085acb91f78dd.svg?branch=master)](https://buildkite.com/chef-oss/chef-omnibus-master-verify)
|
5
5
|
[![AppVeyor Build Status](http://img.shields.io/appveyor/ci/chef/omnibus.svg?label=AppVeyor)][appveyor]
|
6
6
|
|
7
|
+
**Umbrella Project**: [Chef Foundation](https://github.com/chef/chef-oss-practices/blob/master/projects/chef-foundation.md)
|
8
|
+
|
9
|
+
**Project State**: [Active](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md#active)
|
10
|
+
|
11
|
+
**Issues [Response Time Maximum](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md)**: 14 days
|
12
|
+
|
13
|
+
**Pull Request [Response Time Maximum](https://github.com/chef/chef-oss-practices/blob/master/repo-management/repo-states.md)**: 14 days
|
14
|
+
|
7
15
|
Easily create full-stack installers for your project across a variety of platforms.
|
8
16
|
|
9
17
|
Seth Chisamore and Christopher Maier of CHEF gave an introductory talk on Omnibus at ChefConf 2013, entitled **Eat the Whole Bowl: Building a Full-Stack Installer with Omnibus**:
|
data/lib/omnibus/cli.rb
CHANGED
@@ -91,7 +91,7 @@ module Omnibus
|
|
91
91
|
if @options[:output_manifest]
|
92
92
|
FileUtils.mkdir_p("pkg")
|
93
93
|
File.open(::File.join("pkg", "version-manifest.json"), "w") do |f|
|
94
|
-
f.write(FFI_Yajl::Encoder.encode(project.built_manifest.to_hash))
|
94
|
+
f.write(FFI_Yajl::Encoder.encode(project.built_manifest.to_hash, pretty: true))
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
data/lib/omnibus/cli/publish.rb
CHANGED
@@ -26,10 +26,10 @@ module Omnibus
|
|
26
26
|
#
|
27
27
|
# @example JSON
|
28
28
|
# {
|
29
|
-
# "ubuntu-10.04": [
|
30
|
-
# "ubuntu-10.04",
|
31
|
-
# "ubuntu-12.04",
|
32
|
-
# "ubuntu-14.04"
|
29
|
+
# "ubuntu-10.04-x86_64": [
|
30
|
+
# "ubuntu-10.04-x86_64",
|
31
|
+
# "ubuntu-12.04-x86_64",
|
32
|
+
# "ubuntu-14.04-x86_64"
|
33
33
|
# ]
|
34
34
|
# }
|
35
35
|
#
|
@@ -99,7 +99,7 @@ module Omnibus
|
|
99
99
|
end
|
100
100
|
|
101
101
|
klass.publish(pattern, options) do |package|
|
102
|
-
say("Published '#{package.name}' for #{package.metadata[:platform]}-#{package.metadata[:platform_version]}", :green)
|
102
|
+
say("Published '#{package.name}' for #{package.metadata[:platform]}-#{package.metadata[:platform_version]}-#{package.metadata[:arch]}", :green)
|
103
103
|
end
|
104
104
|
end
|
105
105
|
end
|
@@ -43,6 +43,8 @@ module Omnibus
|
|
43
43
|
prettify_dmg
|
44
44
|
compress_dmg
|
45
45
|
set_dmg_icon
|
46
|
+
verify_dmg
|
47
|
+
remove_writable_dmg
|
46
48
|
end
|
47
49
|
|
48
50
|
#
|
@@ -143,7 +145,8 @@ module Omnibus
|
|
143
145
|
-fs HFS+ \\
|
144
146
|
-fsargs "-c c=64,a=16,e=16" \\
|
145
147
|
-size 512000k \\
|
146
|
-
"#{writable_dmg}"
|
148
|
+
"#{writable_dmg}" \\
|
149
|
+
-puppetstrings
|
147
150
|
EOH
|
148
151
|
end
|
149
152
|
|
@@ -159,6 +162,7 @@ module Omnibus
|
|
159
162
|
|
160
163
|
cmd = shellout! <<-EOH.gsub(/^ {10}/, "")
|
161
164
|
hdiutil attach \\
|
165
|
+
-puppetstrings \\
|
162
166
|
-readwrite \\
|
163
167
|
-noverify \\
|
164
168
|
-noautoopen \\
|
@@ -254,13 +258,48 @@ module Omnibus
|
|
254
258
|
shellout! <<-EOH.gsub(/^ {10}/, "")
|
255
259
|
chmod -Rf go-w "/Volumes/#{volume_name}"
|
256
260
|
sync
|
257
|
-
hdiutil
|
261
|
+
hdiutil unmount "#{@device}"
|
262
|
+
# Give some time to the system so unmount dmg
|
263
|
+
sleep 5
|
264
|
+
hdiutil detach "#{@device}" && \
|
258
265
|
hdiutil convert \\
|
259
266
|
"#{writable_dmg}" \\
|
260
267
|
-format UDZO \\
|
261
268
|
-imagekey \\
|
262
269
|
zlib-level=9 \\
|
263
|
-
-o "#{package_path}"
|
270
|
+
-o "#{package_path}" \\
|
271
|
+
-puppetstrings
|
272
|
+
EOH
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
#
|
277
|
+
# Verify checksum on created dmg.
|
278
|
+
#
|
279
|
+
# @return [void]
|
280
|
+
#
|
281
|
+
def verify_dmg
|
282
|
+
log.info(log_key) { "Verifying dmg" }
|
283
|
+
|
284
|
+
Dir.chdir(staging_dir) do
|
285
|
+
shellout! <<-EOH.gsub(/^ {10}/, "")
|
286
|
+
hdiutil verify \\
|
287
|
+
"#{package_path}" \\
|
288
|
+
-puppetstrings
|
289
|
+
EOH
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
#
|
294
|
+
# Remove writable dmg.
|
295
|
+
#
|
296
|
+
# @return [void]
|
297
|
+
#
|
298
|
+
def remove_writable_dmg
|
299
|
+
log.info(log_key) { "Removing writable dmg" }
|
300
|
+
|
301
|
+
Dir.chdir(staging_dir) do
|
302
|
+
shellout! <<-EOH.gsub(/^ {10}/, "")
|
264
303
|
rm -rf "#{writable_dmg}"
|
265
304
|
EOH
|
266
305
|
end
|
data/lib/omnibus/file_syncer.rb
CHANGED
@@ -56,13 +56,13 @@ module Omnibus
|
|
56
56
|
#
|
57
57
|
def all_files_under(source, options = {})
|
58
58
|
excludes = Array(options[:exclude]).map do |exclude|
|
59
|
-
[exclude, "#{exclude}
|
59
|
+
[exclude, "#{exclude}/**"]
|
60
60
|
end.flatten
|
61
61
|
|
62
62
|
source_files = glob(File.join(source, "**/*"))
|
63
63
|
source_files = source_files.reject do |source_file|
|
64
64
|
basename = relative_path_for(source_file, source)
|
65
|
-
excludes.any? { |exclude| File.fnmatch?(exclude, basename, File::FNM_DOTMATCH) }
|
65
|
+
excludes.any? { |exclude| File.fnmatch?(exclude, basename, File::FNM_DOTMATCH | File::FNM_PATHNAME) }
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
data/lib/omnibus/publisher.rb
CHANGED
@@ -44,10 +44,10 @@ module Omnibus
|
|
44
44
|
# mapping of build to publish platform(s)
|
45
45
|
# @example
|
46
46
|
# {
|
47
|
-
# 'ubuntu-10.04' => [
|
48
|
-
# 'ubuntu-10.04',
|
49
|
-
# 'ubuntu-12.04',
|
50
|
-
# 'ubuntu-14.04',
|
47
|
+
# 'ubuntu-10.04-x86_64' => [
|
48
|
+
# 'ubuntu-10.04-x86_64',
|
49
|
+
# 'ubuntu-12.04-x86_64',
|
50
|
+
# 'ubuntu-14.04-x86_64',
|
51
51
|
# ],
|
52
52
|
# }
|
53
53
|
#
|
@@ -75,33 +75,35 @@ module Omnibus
|
|
75
75
|
if @options[:platform_mappings]
|
76
76
|
# the platform map is a simple hash with publish to build platform mappings
|
77
77
|
@options[:platform_mappings].each_pair do |build_platform, publish_platforms|
|
78
|
-
# Splits `ubuntu-12.04` into `ubuntu
|
79
|
-
build_platform, build_platform_version = build_platform.
|
78
|
+
# Splits `ubuntu-12.04-x86_64` into `ubuntu`, `12.04` and `x86_64`
|
79
|
+
build_platform, build_platform_version, build_architecture = build_platform.split("-")
|
80
80
|
|
81
81
|
# locate the package for the build platform
|
82
82
|
packages = build_packages.select do |p|
|
83
83
|
p.metadata[:platform] == build_platform &&
|
84
|
-
p.metadata[:platform_version] == build_platform_version
|
84
|
+
p.metadata[:platform_version] == build_platform_version &&
|
85
|
+
p.metadata[:arch] == build_architecture
|
85
86
|
end
|
86
87
|
|
87
88
|
if packages.empty?
|
88
89
|
log.warn(log_key) do
|
89
|
-
"Could not locate a package for build platform #{build_platform}-#{build_platform_version}. " \
|
90
|
+
"Could not locate a package for build platform #{build_platform}-#{build_platform_version}-#{build_architecture}. " \
|
90
91
|
"Publishing will be skipped for: #{publish_platforms.join(', ')}"
|
91
92
|
end
|
92
93
|
end
|
93
94
|
|
94
95
|
publish_platforms.each do |publish_platform|
|
95
|
-
publish_platform, publish_platform_version = publish_platform.
|
96
|
+
publish_platform, publish_platform_version, publish_architecture = publish_platform.split("-")
|
96
97
|
|
97
98
|
packages.each do |p|
|
98
99
|
# create a copy of our package before mucking with its metadata
|
99
100
|
publish_package = p.dup
|
100
101
|
publish_metadata = p.metadata.dup.to_hash
|
101
102
|
|
102
|
-
# override the platform
|
103
|
+
# override the platform, platform version and architecture in the metadata
|
103
104
|
publish_metadata[:platform] = publish_platform
|
104
105
|
publish_metadata[:platform_version] = publish_platform_version
|
106
|
+
publish_metadata[:arch] = publish_architecture
|
105
107
|
|
106
108
|
# Set the updated metadata on the package object
|
107
109
|
publish_package.metadata = Metadata.new(publish_package, publish_metadata)
|
data/lib/omnibus/version.rb
CHANGED
data/omnibus.gemspec
CHANGED
@@ -22,8 +22,8 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.require_paths = ["lib"]
|
23
23
|
|
24
24
|
gem.add_dependency "aws-sdk-s3", "~> 1"
|
25
|
-
gem.add_dependency "chef-sugar",
|
26
|
-
gem.add_dependency "cleanroom",
|
25
|
+
gem.add_dependency "chef-sugar-ng", ">= 3.3"
|
26
|
+
gem.add_dependency "chef-cleanroom", "~> 1.0"
|
27
27
|
gem.add_dependency "ffi-yajl", "~> 2.2"
|
28
28
|
gem.add_dependency "mixlib-shellout", ">= 2.0", "< 4.0"
|
29
29
|
gem.add_dependency "ohai", ">= 13", "< 16"
|
@@ -56,6 +56,14 @@ module Omnibus
|
|
56
56
|
FileUtils.touch(File.join(source, ".dot_folder", "file_f"))
|
57
57
|
|
58
58
|
FileUtils.touch(File.join(source, ".file_g"))
|
59
|
+
|
60
|
+
FileUtils.mkdir_p(File.join(source, "nested", "deep", "folder"))
|
61
|
+
FileUtils.touch(File.join(source, "nested", "deep", "folder", "file_h"))
|
62
|
+
FileUtils.touch(File.join(source, "nested", "deep", "folder", "file_i"))
|
63
|
+
|
64
|
+
FileUtils.mkdir_p(File.join(source, "nested", "deep", "deep", "folder"))
|
65
|
+
FileUtils.touch(File.join(source, "nested", "deep", "deep", "folder", "file_j"))
|
66
|
+
FileUtils.touch(File.join(source, "nested", "deep", "deep", "folder", "file_k"))
|
59
67
|
source
|
60
68
|
end
|
61
69
|
|
@@ -233,6 +241,40 @@ module Omnibus
|
|
233
241
|
expect("#{destination}/.file_g").to be_a_file
|
234
242
|
end
|
235
243
|
|
244
|
+
it "does not copy files and folders that match the wildcard pattern" do
|
245
|
+
described_class.sync(source, destination, exclude: "nested/*/folder")
|
246
|
+
|
247
|
+
expect("#{destination}/file_a").to be_a_file
|
248
|
+
expect("#{destination}/file_b").to be_a_file
|
249
|
+
expect("#{destination}/file_c").to be_a_file
|
250
|
+
expect("#{destination}/folder/file_d").to be_a_file
|
251
|
+
expect("#{destination}/folder/file_e").to be_a_file
|
252
|
+
expect("#{destination}/.dot_folder").to be_a_directory
|
253
|
+
expect("#{destination}/.dot_folder/file_f").to be_a_file
|
254
|
+
expect("#{destination}/.file_g").to be_a_file
|
255
|
+
expect("#{destination}/nested/deep/folder/file_h").to_not be_a_file
|
256
|
+
expect("#{destination}/nested/deep/folder/file_i").to_not be_a_file
|
257
|
+
expect("#{destination}/nested/deep/deep/folder/file_j").to be_a_file
|
258
|
+
expect("#{destination}/nested/deep/deep/folder/file_k").to be_a_file
|
259
|
+
end
|
260
|
+
|
261
|
+
it "does not copy files and folders that match the super wildcard pattern" do
|
262
|
+
described_class.sync(source, destination, exclude: "nested/**/folder")
|
263
|
+
|
264
|
+
expect("#{destination}/file_a").to be_a_file
|
265
|
+
expect("#{destination}/file_b").to be_a_file
|
266
|
+
expect("#{destination}/file_c").to be_a_file
|
267
|
+
expect("#{destination}/folder/file_d").to be_a_file
|
268
|
+
expect("#{destination}/folder/file_e").to be_a_file
|
269
|
+
expect("#{destination}/.dot_folder").to be_a_directory
|
270
|
+
expect("#{destination}/.dot_folder/file_f").to be_a_file
|
271
|
+
expect("#{destination}/.file_g").to be_a_file
|
272
|
+
expect("#{destination}/nested/deep/folder/file_h").to_not be_a_file
|
273
|
+
expect("#{destination}/nested/deep/folder/file_i").to_not be_a_file
|
274
|
+
expect("#{destination}/nested/deep/deep/folder/file_j").to_not be_a_file
|
275
|
+
expect("#{destination}/nested/deep/deep/folder/file_k").to_not be_a_file
|
276
|
+
end
|
277
|
+
|
236
278
|
it "removes existing files and folders in destination" do
|
237
279
|
FileUtils.mkdir_p("#{destination}/existing_folder")
|
238
280
|
FileUtils.touch("#{destination}/existing_file")
|
@@ -90,7 +90,8 @@ module Omnibus
|
|
90
90
|
-fs HFS+ \\
|
91
91
|
-fsargs "-c c=64,a=16,e=16" \\
|
92
92
|
-size 512000k \\
|
93
|
-
"#{staging_dir}/project-writable.dmg"
|
93
|
+
"#{staging_dir}/project-writable.dmg" \\
|
94
|
+
-puppetstrings
|
94
95
|
EOH
|
95
96
|
|
96
97
|
subject.create_writable_dmg
|
@@ -114,6 +115,7 @@ module Omnibus
|
|
114
115
|
expect(subject).to receive(:shellout!)
|
115
116
|
.with <<-EOH.gsub(/^ {12}/, "")
|
116
117
|
hdiutil attach \\
|
118
|
+
-puppetstrings \\
|
117
119
|
-readwrite \\
|
118
120
|
-noverify \\
|
119
121
|
-noautoopen \\
|
@@ -215,20 +217,57 @@ module Omnibus
|
|
215
217
|
.with <<-EOH.gsub(/^ {12}/, "")
|
216
218
|
chmod -Rf go-w "/Volumes/Project One"
|
217
219
|
sync
|
218
|
-
hdiutil
|
220
|
+
hdiutil unmount "#{device}"
|
221
|
+
# Give some time to the system so unmount dmg
|
222
|
+
sleep 5
|
223
|
+
hdiutil detach "#{device}" &&\
|
219
224
|
hdiutil convert \\
|
220
225
|
"#{staging_dir}/project-writable.dmg" \\
|
221
226
|
-format UDZO \\
|
222
227
|
-imagekey \\
|
223
228
|
zlib-level=9 \\
|
224
|
-
-o "#{package_dir}/project-1.2.3-2.dmg"
|
225
|
-
|
229
|
+
-o "#{package_dir}/project-1.2.3-2.dmg" \\
|
230
|
+
-puppetstrings
|
226
231
|
EOH
|
227
232
|
|
228
233
|
subject.compress_dmg
|
229
234
|
end
|
230
235
|
end
|
231
236
|
|
237
|
+
describe "#verify_dmg" do
|
238
|
+
it "logs a message" do
|
239
|
+
output = capture_logging { subject.verify_dmg }
|
240
|
+
expect(output).to include("Verifying dmg")
|
241
|
+
end
|
242
|
+
|
243
|
+
it "runs the command" do
|
244
|
+
expect(subject).to receive(:shellout!)
|
245
|
+
.with <<-EOH.gsub(/^ {12}/, "")
|
246
|
+
hdiutil verify \\
|
247
|
+
"#{package_dir}/project-1.2.3-2.dmg" \\
|
248
|
+
-puppetstrings
|
249
|
+
EOH
|
250
|
+
|
251
|
+
subject.verify_dmg
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
describe "#remove_writable_dmg" do
|
256
|
+
it "logs a message" do
|
257
|
+
output = capture_logging { subject.remove_writable_dmg }
|
258
|
+
expect(output).to include("Removing writable dmg")
|
259
|
+
end
|
260
|
+
|
261
|
+
it "runs the command" do
|
262
|
+
expect(subject).to receive(:shellout!)
|
263
|
+
.with <<-EOH.gsub(/^ {12}/, "")
|
264
|
+
rm -rf "#{staging_dir}/project-writable.dmg"
|
265
|
+
EOH
|
266
|
+
|
267
|
+
subject.remove_writable_dmg
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
232
271
|
describe "#set_dmg_icon" do
|
233
272
|
it "logs a message" do
|
234
273
|
output = capture_logging { subject.set_dmg_icon }
|
data/spec/unit/publisher_spec.rb
CHANGED
@@ -47,9 +47,9 @@ module Omnibus
|
|
47
47
|
let(:options) do
|
48
48
|
{
|
49
49
|
platform_mappings: {
|
50
|
-
"ubuntu-12.04" => [
|
51
|
-
"ubuntu-12.04",
|
52
|
-
"ubuntu-14.04",
|
50
|
+
"ubuntu-12.04-x86_64" => [
|
51
|
+
"ubuntu-12.04-x86_64",
|
52
|
+
"ubuntu-14.04-x86_64",
|
53
53
|
],
|
54
54
|
},
|
55
55
|
}
|
@@ -155,9 +155,9 @@ module Omnibus
|
|
155
155
|
let(:options) do
|
156
156
|
{
|
157
157
|
platform_mappings: {
|
158
|
-
"ubuntu-10.04" => [
|
159
|
-
"ubuntu-12.04",
|
160
|
-
"ubuntu-14.04",
|
158
|
+
"ubuntu-10.04-x86_64" => [
|
159
|
+
"ubuntu-12.04-x86_64",
|
160
|
+
"ubuntu-14.04-x86_64",
|
161
161
|
],
|
162
162
|
},
|
163
163
|
}
|
@@ -165,7 +165,7 @@ module Omnibus
|
|
165
165
|
|
166
166
|
it "prints a warning" do
|
167
167
|
output = capture_logging { subject.packages }
|
168
|
-
expect(output).to include("Could not locate a package for build platform ubuntu-10.04. Publishing will be skipped for: ubuntu-12.04, ubuntu-14.04")
|
168
|
+
expect(output).to include("Could not locate a package for build platform ubuntu-10.04-x86_64. Publishing will be skipped for: ubuntu-12.04-x86_64, ubuntu-14.04-x86_64")
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omnibus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-s3
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: chef-sugar
|
28
|
+
name: chef-sugar-ng
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: cleanroom
|
42
|
+
name: chef-cleanroom
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|