vanagon 0.15.22 → 0.15.23

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42d918b0447fd3dfad90bb8246f1f7e3e89ed06dd928c9d10dc0afc799bf22ba
4
- data.tar.gz: 8c645b45b957188ef340b0080d279bd53c3f31779c9c366295ed17825632cbae
3
+ metadata.gz: 7bf8cec1d39b4fe95d0d109181be2d573f5be24eb8e1241936b5b9035022ebbd
4
+ data.tar.gz: bc390abf3fe18a06fb82d7ed4936f54ca4f64840bb1b4374ec7f4a5d0c3119f7
5
5
  SHA512:
6
- metadata.gz: e986cb4d690ee09d39c395e6835b677def887f2f90553c6b3086466470eb325c445647a8ee67d75d84e499d5410d4de68b540f6738f3758699412085c4c558b2
7
- data.tar.gz: d29f4ea07e13b83918d697015857a0860a27fab8b1b491b93f0cbec0092bc8d88e9e36b627f60b079fd1ddb2799f82fee9fedd80fa4fdabcb58961bc590ff41e
6
+ metadata.gz: afd0ca4f73413d2f228e520f1456aa4f8c59cd9c28cd36522fc43a74d8b38d0e43b3a032de8703f3d821d469d02d12d9e9cf03c2456920bf820bfe218d86955a
7
+ data.tar.gz: '08197372b61873aacff50c307f23fa80e7b566e6ad2c45bd98b7d662d101650f79594227438cd192febe4037d8746b44b472810663e3d13e80c6cfab2036b8cc'
@@ -383,6 +383,23 @@ class Vanagon
383
383
  end
384
384
  end
385
385
 
386
+ # Force version determination for components
387
+ #
388
+ # If the component doesn't already have a version set (which normally happens for git sources),
389
+ # the source will be fetched into a temporary directory to attempt to figure out the version if the
390
+ # source type supports :version. This directory will be cleaned once the get_sources method returns
391
+ #
392
+ # @raise Vanagon::Error raises a vanagon error if we're unable to determine the version
393
+ def force_version
394
+ if @version.nil?
395
+ Dir.mktmpdir do |dir|
396
+ get_source(dir)
397
+ end
398
+ end
399
+ raise Vanagon::Error, "Unable to determine source version for component #{@name}!" if @version.nil?
400
+ @version
401
+ end
402
+
386
403
  # Prints the environment in a way suitable for use in a Makefile
387
404
  # or shell script. This is deprecated, because all Env. Vars. are
388
405
  # moving directly into the Makefile (and out of recipe subshells).
@@ -512,6 +512,17 @@ class Vanagon
512
512
  @component.preremove_actions << OpenStruct.new(:pkg_state => pkg_state, :scripts => scripts)
513
513
  end
514
514
 
515
+ # Force version determination for components
516
+ #
517
+ # If the component doesn't already have a version set (which normally happens for git sources),
518
+ # the source will be fetched into a temporary directory to attempt to figure out the version if the
519
+ # source type supports :version. This directory will be cleaned once the get_sources method returns
520
+ #
521
+ # @raise Vanagon::Error raises a vanagon error if we're unable to determine the version
522
+ def get_version_forced
523
+ @component.force_version
524
+ end
525
+
515
526
  # Adds action to run during the postremoval phase of packaging
516
527
  #
517
528
  # @param pkg_state [Array] the state in which the scripts should execute. Can be
@@ -21,7 +21,10 @@ class Vanagon
21
21
  def build_host_name
22
22
  if @build_host_name.nil?
23
23
  validate_platform
24
- @build_host_name = @platform.docker_image
24
+ # Docker requires container names to match: [a-zA-Z0-9][a-zA-Z0-9_.-]
25
+ # So, transform slashes and colons commonly used as separators in
26
+ # image names.
27
+ @build_host_name = @platform.docker_image.gsub(%r{[/:]}, '_')
25
28
  end
26
29
 
27
30
  @build_host_name
@@ -31,7 +34,9 @@ class Vanagon
31
34
  # a docker container.
32
35
  # @raise [Vanagon::Error] if a target cannot be obtained
33
36
  def select_target
34
- Vanagon::Utilities.ex("#{@docker_cmd} run -d --name #{build_host_name}-builder -p #{@platform.ssh_port}:22 #{build_host_name}")
37
+ extra_args = @platform.docker_run_args.nil? ? [] : @platform.docker_run_args
38
+
39
+ Vanagon::Utilities.ex("#{@docker_cmd} run -d --name #{build_host_name}-builder -p #{@platform.ssh_port}:22 #{extra_args.join(' ')} #{@platform.docker_image}")
35
40
  @target = 'localhost'
36
41
 
37
42
  # Wait for ssh to come up in the container
@@ -114,6 +114,7 @@ class Vanagon
114
114
 
115
115
  # Docker engine specific
116
116
  attr_accessor :docker_image
117
+ attr_accessor :docker_run_args
117
118
 
118
119
  # AWS engine specific
119
120
  attr_accessor :aws_ami
@@ -277,6 +277,13 @@ class Vanagon
277
277
  @platform.docker_image = image_name
278
278
  end
279
279
 
280
+ # Set additional `docker run` arguments to pass when creating containers
281
+ #
282
+ # @param args [Array<String>] array of CLI arguments for `docker run`
283
+ def docker_run_args(args)
284
+ @platform.docker_run_args = Array(args)
285
+ end
286
+
280
287
  # Set the ami for the platform to use
281
288
  #
282
289
  # @param ami [String] the ami id used.
@@ -242,6 +242,49 @@ describe "Vanagon::Component" do
242
242
  end
243
243
  end
244
244
 
245
+ describe '#force_version' do
246
+ let(:source) {
247
+ allow(File).to receive(:realpath).and_return('/this/is/a/test')
248
+ Vanagon::Component::Source::Git.new('git://github.com/puppetlabs/facter', workdir: '/this/is/a/test')
249
+ }
250
+
251
+ let(:component) {
252
+ Vanagon::Component.new('force-version-test', {}, {}).tap do |comp|
253
+ comp.url = 'git://github.com/puppetlabs/facter'
254
+ comp.source = source
255
+ end
256
+ }
257
+
258
+ let(:versioned_component) {
259
+ Vanagon::Component.new('force-version-test', {}, {}).tap do |comp|
260
+ comp.version = '1.2.3'
261
+ end
262
+ }
263
+
264
+ it 'returns a version if it\'s already set' do
265
+ expect(versioned_component).not_to receive(:get_source)
266
+ expect(versioned_component.force_version).to eq('1.2.3')
267
+ end
268
+
269
+ it 'fetches sources if no version is set' do
270
+ clone = double(Git::Base)
271
+ allow(::Git).to receive(:clone).and_return(clone)
272
+ allow(clone).to receive(:describe).and_return('4.5.6')
273
+ allow(clone).to receive(:checkout).and_return(nil)
274
+ allow(clone).to receive(:update_submodules).and_return(nil)
275
+ expect(component.force_version).to eq('4.5.6')
276
+ end
277
+
278
+ it 'fails if it can\'t determine the version' do
279
+ clone = double(Git::Base)
280
+ allow(::Git).to receive(:clone).and_return(clone)
281
+ allow(clone).to receive(:describe).and_return(nil)
282
+ allow(clone).to receive(:checkout).and_return(nil)
283
+ allow(clone).to receive(:update_submodules).and_return(nil)
284
+ expect{ component.force_version }.to raise_error(Vanagon::Error, /unable to determine source version/i)
285
+ end
286
+ end
287
+
245
288
  describe 'rpm ghost files' do
246
289
  let(:component) { Vanagon::Component.new('ghost-test', {}, {}) }
247
290
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.22
4
+ version: 0.15.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-04 00:00:00.000000000 Z
11
+ date: 2019-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -260,46 +260,47 @@ required_rubygems_version: !ruby/object:Gem::Requirement
260
260
  - !ruby/object:Gem::Version
261
261
  version: '0'
262
262
  requirements: []
263
- rubygems_version: 3.0.3
263
+ rubyforge_project:
264
+ rubygems_version: 2.7.6
264
265
  signing_key:
265
266
  specification_version: 3
266
267
  summary: All of your packages will fit into this van with this one simple trick.
267
268
  test_files:
268
- - spec/lib/git/rev_list_spec.rb
269
- - spec/lib/makefile_spec.rb
270
- - spec/lib/vanagon/common/pathname_spec.rb
271
- - spec/lib/vanagon/common/user_spec.rb
272
- - spec/lib/vanagon/component/dsl_spec.rb
273
- - spec/lib/vanagon/component/rules_spec.rb
274
- - spec/lib/vanagon/component/source/git_spec.rb
275
- - spec/lib/vanagon/component/source/http_spec.rb
276
- - spec/lib/vanagon/component/source/local_spec.rb
277
- - spec/lib/vanagon/component/source/rewrite_spec.rb
278
- - spec/lib/vanagon/component/source_spec.rb
279
269
  - spec/lib/vanagon/component_spec.rb
270
+ - spec/lib/vanagon/project_spec.rb
271
+ - spec/lib/vanagon/optparse_spec.rb
280
272
  - spec/lib/vanagon/driver_spec.rb
281
- - spec/lib/vanagon/engine/always_be_scheduling_spec.rb
282
- - spec/lib/vanagon/engine/base_spec.rb
283
- - spec/lib/vanagon/engine/docker_spec.rb
284
- - spec/lib/vanagon/engine/ec2_spec.rb
285
- - spec/lib/vanagon/engine/hardware_spec.rb
286
- - spec/lib/vanagon/engine/local_spec.rb
287
- - spec/lib/vanagon/engine/pooler_spec.rb
288
273
  - spec/lib/vanagon/environment_spec.rb
289
- - spec/lib/vanagon/extensions/ostruct/json_spec.rb
290
- - spec/lib/vanagon/extensions/set/json_spec.rb
291
- - spec/lib/vanagon/extensions/string_spec.rb
292
- - spec/lib/vanagon/optparse_spec.rb
293
- - spec/lib/vanagon/platform/deb_spec.rb
274
+ - spec/lib/vanagon/platform/windows_spec.rb
275
+ - spec/lib/vanagon/platform/solaris_11_spec.rb
276
+ - spec/lib/vanagon/platform/solaris_10_spec.rb
294
277
  - spec/lib/vanagon/platform/dsl_spec.rb
295
278
  - spec/lib/vanagon/platform/osx_spec.rb
296
- - spec/lib/vanagon/platform/rpm/aix_spec.rb
279
+ - spec/lib/vanagon/platform/deb_spec.rb
297
280
  - spec/lib/vanagon/platform/rpm_spec.rb
298
- - spec/lib/vanagon/platform/solaris_10_spec.rb
299
- - spec/lib/vanagon/platform/solaris_11_spec.rb
300
- - spec/lib/vanagon/platform/windows_spec.rb
301
- - spec/lib/vanagon/platform_spec.rb
281
+ - spec/lib/vanagon/platform/rpm/aix_spec.rb
282
+ - spec/lib/vanagon/component/source/rewrite_spec.rb
283
+ - spec/lib/vanagon/component/source/git_spec.rb
284
+ - spec/lib/vanagon/component/source/local_spec.rb
285
+ - spec/lib/vanagon/component/source/http_spec.rb
286
+ - spec/lib/vanagon/component/dsl_spec.rb
287
+ - spec/lib/vanagon/component/source_spec.rb
288
+ - spec/lib/vanagon/component/rules_spec.rb
289
+ - spec/lib/vanagon/extensions/string_spec.rb
290
+ - spec/lib/vanagon/extensions/set/json_spec.rb
291
+ - spec/lib/vanagon/extensions/ostruct/json_spec.rb
302
292
  - spec/lib/vanagon/project/dsl_spec.rb
303
- - spec/lib/vanagon/project_spec.rb
304
293
  - spec/lib/vanagon/utilities/shell_utilities_spec.rb
305
294
  - spec/lib/vanagon/utilities_spec.rb
295
+ - spec/lib/vanagon/common/pathname_spec.rb
296
+ - spec/lib/vanagon/common/user_spec.rb
297
+ - spec/lib/vanagon/platform_spec.rb
298
+ - spec/lib/vanagon/engine/always_be_scheduling_spec.rb
299
+ - spec/lib/vanagon/engine/docker_spec.rb
300
+ - spec/lib/vanagon/engine/ec2_spec.rb
301
+ - spec/lib/vanagon/engine/hardware_spec.rb
302
+ - spec/lib/vanagon/engine/local_spec.rb
303
+ - spec/lib/vanagon/engine/base_spec.rb
304
+ - spec/lib/vanagon/engine/pooler_spec.rb
305
+ - spec/lib/makefile_spec.rb
306
+ - spec/lib/git/rev_list_spec.rb