omnibus 6.1.9 → 8.0.15
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 +4 -4
- data/Gemfile +0 -4
- data/README.md +54 -13
- data/bin/omnibus +1 -1
- data/lib/omnibus.rb +2 -2
- data/lib/omnibus/build_version.rb +1 -1
- data/lib/omnibus/build_version_dsl.rb +5 -7
- data/lib/omnibus/builder.rb +4 -4
- data/lib/omnibus/cleaner.rb +1 -1
- data/lib/omnibus/cli.rb +2 -2
- data/lib/omnibus/cli/changelog.rb +1 -1
- data/lib/omnibus/compressor.rb +2 -2
- data/lib/omnibus/compressors/base.rb +2 -2
- data/lib/omnibus/compressors/dmg.rb +5 -2
- data/lib/omnibus/compressors/tgz.rb +2 -2
- data/lib/omnibus/config.rb +13 -3
- data/lib/omnibus/core_extensions/open_uri.rb +1 -1
- data/lib/omnibus/digestable.rb +2 -2
- data/lib/omnibus/download_helpers.rb +6 -2
- data/lib/omnibus/fetchers/file_fetcher.rb +1 -1
- data/lib/omnibus/fetchers/net_fetcher.rb +1 -1
- data/lib/omnibus/fetchers/path_fetcher.rb +1 -1
- data/lib/omnibus/file_syncer.rb +1 -1
- data/lib/omnibus/generator.rb +2 -2
- data/lib/omnibus/generator_files/README.md.erb +20 -16
- data/lib/omnibus/generator_files/config/software/preparation.rb.erb +1 -1
- data/lib/omnibus/generator_files/omnibus.rb.erb +5 -4
- data/lib/omnibus/git_cache.rb +2 -2
- data/lib/omnibus/health_check.rb +2 -0
- data/lib/omnibus/licensing.rb +3 -3
- data/lib/omnibus/logger.rb +1 -1
- data/lib/omnibus/manifest.rb +1 -1
- data/lib/omnibus/metadata.rb +3 -3
- data/lib/omnibus/ohai.rb +1 -1
- data/lib/omnibus/package.rb +1 -1
- data/lib/omnibus/packager.rb +6 -14
- data/lib/omnibus/packagers/base.rb +1 -1
- data/lib/omnibus/packagers/msi.rb +1 -1
- data/lib/omnibus/packagers/pkg.rb +122 -3
- data/lib/omnibus/packagers/solaris.rb +1 -1
- data/lib/omnibus/project.rb +2 -2
- data/lib/omnibus/publishers/artifactory_publisher.rb +2 -2
- data/lib/omnibus/publishers/s3_publisher.rb +6 -4
- data/lib/omnibus/s3_cache.rb +4 -2
- data/lib/omnibus/s3_helpers.rb +7 -7
- data/lib/omnibus/software.rb +52 -34
- data/lib/omnibus/sugarable.rb +5 -14
- data/lib/omnibus/templating.rb +1 -1
- data/lib/omnibus/thread_pool.rb +0 -2
- data/lib/omnibus/util.rb +1 -1
- data/lib/omnibus/version.rb +1 -1
- data/lib/omnibus/whitelist.rb +24 -1
- data/omnibus.gemspec +7 -8
- data/resources/ips/doc-transform.erb +1 -0
- data/resources/msi/CustomActionFastMsi.CA.dll +0 -0
- data/resources/msi/source.wxs.erb +2 -10
- data/resources/rpm/signing.erb +7 -10
- data/spec/support/path_helpers.rb +2 -2
- data/spec/unit/compressor_spec.rb +1 -1
- data/spec/unit/compressors/dmg_spec.rb +5 -2
- data/spec/unit/metadata_spec.rb +6 -6
- data/spec/unit/packager_spec.rb +6 -13
- data/spec/unit/packagers/ips_spec.rb +1 -0
- data/spec/unit/packagers/pkg_spec.rb +354 -0
- data/spec/unit/packagers/rpm_spec.rb +5 -5
- data/spec/unit/project_spec.rb +5 -5
- data/spec/unit/s3_cacher_spec.rb +17 -0
- data/spec/unit/s3_helpers_spec.rb +20 -1
- data/spec/unit/software_spec.rb +58 -119
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 585e2c596ef1c84a2e679f73503cc00480fe5ef7484c35febaa0c3f9591d1cb2
|
4
|
+
data.tar.gz: 0d05d3f29a6d5e596f0e0e27c3077dda52f6f0a263d7481ce1ef3372a2aa07b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 337957c5a64cd387614afd55193a739b5e668857f7858c5ef5665f77e7a8dc58709e94c04a6d497ee32502b37045b6089adea9b4f0e4991e0b93fd80218007e5
|
7
|
+
data.tar.gz: 66b99392d12b7a3c5757300b57243e856c7f0c67a132ebc39b4a74df84a03f5a6711903ae88325e8270c9930218147b93d53b3c83e1984ab48875f92a6f367d5
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -16,7 +16,6 @@ Easily create full-stack installers for your project across a variety of platfor
|
|
16
16
|
|
17
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**:
|
18
18
|
|
19
|
-
- [Video](http://www.youtube.com/watch?v=q8iJAntXCNY)
|
20
19
|
- [Slides](https://speakerdeck.com/schisamo/eat-the-whole-bowl-building-a-full-stack-installer-with-omnibus)
|
21
20
|
|
22
21
|
This project is managed by the CHEF Release Engineering team. For more information on the Release Engineering team's contribution, triage, and release process, please consult the [CHEF Release Engineering OSS Management Guide](https://docs.google.com/a/opscode.com/document/d/1oJB0vZb_3bl7_ZU2YMDBkMFdL-EWplW1BJv_FXTUOzg/edit).
|
@@ -25,8 +24,7 @@ This project is managed by the CHEF Release Engineering team. For more informati
|
|
25
24
|
|
26
25
|
Omnibus is designed to run with a minimal set of prerequisites. You will need the following:
|
27
26
|
|
28
|
-
- Ruby 2.
|
29
|
-
- Bundler
|
27
|
+
- Ruby 2.6+
|
30
28
|
|
31
29
|
## Get Started
|
32
30
|
|
@@ -46,10 +44,11 @@ $ omnibus new $MY_PROJECT_NAME
|
|
46
44
|
|
47
45
|
This will generate a complete project skeleton in the directory `omnibus-$MY_PROJECT_NAME`
|
48
46
|
|
47
|
+
By default this will make a directory called `omnibus-$MY_PROJECT_NAME` assuming you're keeping your omnibus config separate from the repo. However, keeping it *in* your repo is a common practice, so feel to rename this directory to `omnibus` and place it in the top level of your projects source repo.
|
48
|
+
|
49
49
|
```bash
|
50
50
|
$ cd omnibus-$MY_PROJECT_NAME
|
51
51
|
$ bundle install --binstubs
|
52
|
-
$ bin/omnibus build $MY_PROJECT_NAME
|
53
52
|
```
|
54
53
|
|
55
54
|
More details can be found in the generated project's README file.
|
@@ -84,11 +83,19 @@ use_git_caching false
|
|
84
83
|
# Enable S3 asset caching
|
85
84
|
# ------------------------------
|
86
85
|
use_s3_caching true
|
86
|
+
s3_bucket ENV['S3_BUCKET']
|
87
|
+
|
88
|
+
# There are three ways to authenticate to the S3 bucket
|
89
|
+
|
90
|
+
# 1. set `s3_access_key` and `s3_secret_key`
|
87
91
|
s3_access_key ENV['S3_ACCESS_KEY']
|
88
92
|
s3_secret_key ENV['S3_SECRET_KEY']
|
89
|
-
|
93
|
+
|
94
|
+
# 2. set `s3_profile` to use an AWS profile in the Shared Credentials files
|
90
95
|
#s3_profile ENV['S3_PROFILE']
|
91
|
-
|
96
|
+
|
97
|
+
# 3. set `s3_iam_role_arn` to use an AWS IAM role
|
98
|
+
#s3_iam_role_arn ENV['S3_IAM_ROLE_ARN']
|
92
99
|
```
|
93
100
|
|
94
101
|
For more information, please see the [`Config` documentation](http://www.rubydoc.info/github/chef/omnibus/Omnibus/Config).
|
@@ -135,7 +142,7 @@ DSL Method | Description
|
|
135
142
|
`package` | Invoke a packager-specific DSL
|
136
143
|
`compress` | Invoke a compressor-specific DSL
|
137
144
|
|
138
|
-
By default a timestamp is appended to the build_version. You can turn this behavior off by setting `append_timestamp` to `false` in your
|
145
|
+
By default a timestamp is appended to the build_version. You can turn this behavior off by setting `append_timestamp` to `false` in your `omnibus.rb` or using `--override append_timestamp:false` at the command line.
|
139
146
|
|
140
147
|
For more information, please see the [`Project` documentation](http://www.rubydoc.info/github/chef/omnibus/Omnibus/Project).
|
141
148
|
|
@@ -253,12 +260,46 @@ For all of these paths, **order matters**, so it is possible to depend on local
|
|
253
260
|
$PWD/config/software/foo.rb
|
254
261
|
/path/to/software/config/software/foo.rb
|
255
262
|
/other/path/to/software/config/software/foo.rb
|
256
|
-
/Users/sethvargo/.gems/.../my-
|
263
|
+
/Users/sethvargo/.gems/.../my-company-omnibus-software/config/software/foo.rb
|
257
264
|
/Users/sethvargo/.gems/.../omnibus-software/config/software/foo.rb
|
258
265
|
```
|
259
266
|
|
260
267
|
The first instance of `foo.rb` that is encountered will be used. Please note that **local** (vendored) softare definitions take precedence!
|
261
268
|
|
269
|
+
## Building
|
270
|
+
|
271
|
+
Once you've created your package and software definitions you can build with:
|
272
|
+
|
273
|
+
```shell
|
274
|
+
./bin/omnibus build $MY_PACKAGE_NAME
|
275
|
+
```
|
276
|
+
|
277
|
+
However there are several caveats to be aware of:
|
278
|
+
|
279
|
+
1. You will almost certainly want to uncomment the `base_dir` in `omnibus.rb`,
|
280
|
+
or at the very least change `cache_dir` and `build_dir` as otherwise it'll try
|
281
|
+
to use `/var/cache/omnibus` and `/opt/$MY_PROJECT_NAME`, requiring root.
|
282
|
+
1. The default configuration created for you references a lot of things
|
283
|
+
that are in the default config that come from the `omnibus-software` gem.
|
284
|
+
So you want to use those you'll need to either uncomment it in the `Gemfile`,
|
285
|
+
or fork it, and then reference your own
|
286
|
+
1. If this is a ruby project and you want binstubs in `/opt/$project/bin`, you
|
287
|
+
will either need to use [appbundler](https://github.com/chef/appbundler), or
|
288
|
+
you will need to have a post install step to create those binstubs.
|
289
|
+
- Side note, appbundler requires that you include your Gemfile and gemspec
|
290
|
+
in your gem.
|
291
|
+
- Also, needs to be in your Gemfile for you to use it, as it also must
|
292
|
+
be in the resulting gem.
|
293
|
+
1. If you specify an override of the version of the `ruby`, you will also need
|
294
|
+
to override `rubygems` and `bundler` to match the versions in that version of
|
295
|
+
`ruby` or you'll get failures around bundler version mismatches.
|
296
|
+
|
297
|
+
The build command above will of course build on your local host thus being
|
298
|
+
specific to the OS and base system you are on. But the skeleten setup by
|
299
|
+
`omnibus new` already setup kitchen for you so that it's easy to build for
|
300
|
+
a variety of OSes, See the `README.md` in your generated omnibus directory
|
301
|
+
for details.
|
302
|
+
|
262
303
|
## Version Manifest
|
263
304
|
|
264
305
|
Git-based software definitions may specify branches as their default_version. In this case, the exact git revision to use will be determined at build-time unless a project override (see below) or external version manifest is used. To generate a version manifest use the `omnibus manifest` command:
|
@@ -273,7 +314,7 @@ This will output a JSON-formatted manifest containing the resolved version of ev
|
|
273
314
|
|
274
315
|
Sometimes a platform has libraries that need to be whitelisted so the healthcheck can pass. The whitelist found in the [healthcheck](https://github.com/chef/omnibus/blob/master/lib/omnibus/health_check.rb) code comprises the minimal required for successful builds on supported platforms.
|
275
316
|
|
276
|
-
To add your own whitelisted library, simply add
|
317
|
+
To add your own whitelisted library, simply add a regex to your software definition in your omnibus project as follows:
|
277
318
|
|
278
319
|
```
|
279
320
|
whitelist_file /libpcrecpp\.so\..+/
|
@@ -289,11 +330,11 @@ STATUS: _EXPERIMENTAL_
|
|
289
330
|
|
290
331
|
`omnibus changelog generate` will generate a changelog for an omnibus project. This command currently assumes:
|
291
332
|
|
292
|
-
- version-manifest.json is checked into the project root
|
293
|
-
-
|
294
|
-
-
|
333
|
+
- A version-manifest.json file is checked into the project root
|
334
|
+
- The project is a git repository
|
335
|
+
- Each version is tagged with a SemVer compliant annotated tag
|
295
336
|
- Any git-based sources are checked out at ../COMPONENT_NAME
|
296
|
-
- Any commit message line prepended with ChangeLog-Entry: should be added to the changelog
|
337
|
+
- Any commit message line prepended with ChangeLog-Entry: should be added to the changelog
|
297
338
|
|
298
339
|
These assumptions _will_ change as we determine what works best for a number of our projects.
|
299
340
|
|
data/bin/omnibus
CHANGED
data/lib/omnibus.rb
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
require "omnibus/core_extensions"
|
18
18
|
|
19
19
|
require "cleanroom"
|
20
|
-
require "pathname"
|
20
|
+
require "pathname" unless defined?(Pathname)
|
21
21
|
|
22
22
|
require "omnibus/digestable"
|
23
23
|
require "omnibus/exceptions"
|
@@ -208,7 +208,7 @@ module Omnibus
|
|
208
208
|
# @return [Pathname]
|
209
209
|
#
|
210
210
|
def source_root
|
211
|
-
@source_root ||= Pathname.new(File.expand_path("
|
211
|
+
@source_root ||= Pathname.new(File.expand_path("..", __dir__))
|
212
212
|
end
|
213
213
|
|
214
214
|
#
|
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "time"
|
17
|
+
require "time" unless defined?(Time.zone_offset)
|
18
18
|
|
19
19
|
module Omnibus
|
20
20
|
class BuildVersionDSL
|
@@ -136,12 +136,10 @@ module Omnibus
|
|
136
136
|
return false if build_info.nil?
|
137
137
|
|
138
138
|
build_info.split(".").any? do |part|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
false
|
144
|
-
end
|
139
|
+
Time.strptime(part, Omnibus::BuildVersion::TIMESTAMP_FORMAT)
|
140
|
+
true
|
141
|
+
rescue ArgumentError
|
142
|
+
false
|
145
143
|
end
|
146
144
|
end
|
147
145
|
|
data/lib/omnibus/builder.rb
CHANGED
@@ -14,10 +14,10 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "fileutils"
|
18
|
-
require "mixlib/shellout"
|
19
|
-
require "ostruct"
|
20
|
-
require "pathname"
|
17
|
+
require "fileutils" unless defined?(FileUtils)
|
18
|
+
require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
|
19
|
+
require "ostruct" unless defined?(OpenStruct)
|
20
|
+
require "pathname" unless defined?(Pathname)
|
21
21
|
require "omnibus/whitelist"
|
22
22
|
|
23
23
|
module Omnibus
|
data/lib/omnibus/cleaner.rb
CHANGED
data/lib/omnibus/cli.rb
CHANGED
@@ -18,7 +18,7 @@ require "omnibus/changelog"
|
|
18
18
|
require "omnibus/changelog_printer"
|
19
19
|
require "omnibus/manifest_diff"
|
20
20
|
require "omnibus/semantic_version"
|
21
|
-
require "ffi_yajl"
|
21
|
+
require "ffi_yajl" unless defined?(FFI_Yajl)
|
22
22
|
|
23
23
|
module Omnibus
|
24
24
|
class Command::ChangeLog < Command::Base
|
data/lib/omnibus/compressor.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "fileutils"
|
17
|
+
require "fileutils" unless defined?(FileUtils)
|
18
18
|
|
19
19
|
module Omnibus
|
20
20
|
class Compressor::Base < Packager::Base
|
@@ -30,7 +30,7 @@ module Omnibus
|
|
30
30
|
# @param [Project] project
|
31
31
|
#
|
32
32
|
def initialize(project)
|
33
|
-
@project
|
33
|
+
@project = project
|
34
34
|
|
35
35
|
# There can now be multiple packagers per platform
|
36
36
|
# but windows is the only platform that uses multiple
|
@@ -259,8 +259,11 @@ module Omnibus
|
|
259
259
|
sync
|
260
260
|
hdiutil unmount "#{@device}"
|
261
261
|
# Give some time to the system so unmount dmg
|
262
|
-
|
263
|
-
hdiutil detach "#{@device}"
|
262
|
+
ATTEMPTS=1
|
263
|
+
until [ $ATTEMPTS -eq 6 ] || hdiutil detach "#{@device}"; do
|
264
|
+
sleep 10
|
265
|
+
echo Attempt number $(( ATTEMPTS++ ))
|
266
|
+
done
|
264
267
|
hdiutil convert \\
|
265
268
|
"#{writable_dmg}" \\
|
266
269
|
-format UDZO \\
|
@@ -14,8 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "rubygems/package"
|
18
|
-
require "zlib"
|
17
|
+
require "rubygems/package" unless defined?(Gem::Package)
|
18
|
+
require "zlib" unless defined?(Zlib)
|
19
19
|
|
20
20
|
module Omnibus
|
21
21
|
class Compressor::TGZ < Compressor::Base
|
data/lib/omnibus/config.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "singleton"
|
17
|
+
require "singleton" unless defined?(Singleton)
|
18
18
|
|
19
19
|
module Omnibus
|
20
20
|
class Config
|
@@ -285,7 +285,7 @@ module Omnibus
|
|
285
285
|
#
|
286
286
|
# @return [String, nil]
|
287
287
|
default(:s3_access_key) do
|
288
|
-
if s3_profile
|
288
|
+
if s3_profile || s3_iam_role_arn
|
289
289
|
nil
|
290
290
|
else
|
291
291
|
raise MissingRequiredAttribute.new(self, :s3_access_key, "'ABCD1234'")
|
@@ -296,7 +296,7 @@ module Omnibus
|
|
296
296
|
#
|
297
297
|
# @return [String, nil]
|
298
298
|
default(:s3_secret_key) do
|
299
|
-
if s3_profile
|
299
|
+
if s3_profile || s3_iam_role_arn
|
300
300
|
nil
|
301
301
|
else
|
302
302
|
raise MissingRequiredAttribute.new(self, :s3_secret_key, "'EFGH5678'")
|
@@ -308,6 +308,11 @@ module Omnibus
|
|
308
308
|
# @return [String, nil]
|
309
309
|
default(:s3_profile, nil)
|
310
310
|
|
311
|
+
# The AWS IAM role arn to use with S3 caching.
|
312
|
+
#
|
313
|
+
# @return [String, nil]
|
314
|
+
default(:s3_iam_role_arn, nil)
|
315
|
+
|
311
316
|
# The region of the S3 bucket you want to cache software artifacts in.
|
312
317
|
# Defaults to 'us-east-1'
|
313
318
|
#
|
@@ -455,6 +460,11 @@ module Omnibus
|
|
455
460
|
# @return [String, nil]
|
456
461
|
default(:publish_s3_profile, nil)
|
457
462
|
|
463
|
+
# The AWS IAM role arn to use with S3 publisher.
|
464
|
+
#
|
465
|
+
# @return [String, nil]
|
466
|
+
default(:publish_s3_iam_role_arn, nil)
|
467
|
+
|
458
468
|
# Directory pattern for the S3 publisher.
|
459
469
|
# Interpolation of metadata keys is supported.
|
460
470
|
#
|
data/lib/omnibus/digestable.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require "open-uri"
|
17
|
+
require "open-uri" unless defined?(OpenURI)
|
18
18
|
require "ruby-progressbar"
|
19
19
|
|
20
20
|
module Omnibus
|
@@ -77,7 +77,11 @@ module Omnibus
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
|
80
|
+
if RUBY_VERSION.to_f < 2.7
|
81
|
+
file = open(from_url, options)
|
82
|
+
else
|
83
|
+
file = URI.open(from_url, options)
|
84
|
+
end
|
81
85
|
# This is a temporary file. Close and flush it before attempting to copy
|
82
86
|
# it over.
|
83
87
|
file.close
|