simp-rake-helpers 5.6.2 → 5.7.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/simp/packer/iso_vars_json.rb +87 -0
- data/lib/simp/rake/build/auto.rb +6 -31
- data/lib/simp/rake/helpers/assets/rpm_spec/simp6.spec +36 -8
- data/lib/simp/rake/helpers/assets/rpm_spec/simpdefault.spec +36 -8
- data/lib/simp/rake/helpers/version.rb +1 -1
- data/spec/acceptance/00_pkg_rpm_custom_scriptlets_spec.rb +19 -3
- data/spec/acceptance/10_pkg_rpm_spec.rb +52 -8
- data/spec/acceptance/20_pkg_rpm_upgrade_spec.rb +223 -0
- data/spec/acceptance/files/mock_packages/simp-adapter/usr/local/sbin/simp_rpm_helper +334 -245
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/Rakefile +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/build/rpm_metadata/requires +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml +14 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json +37 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG +5 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/Rakefile +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml +14 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json +37 -0
- data/spec/acceptance/nodesets/default.yml +7 -8
- data/spec/acceptance/support/pkg_rpm_helpers.rb +2 -2
- data/spec/lib/simp/packer/iso_vars_json_spec.rb +65 -0
- metadata +29 -5
- data/spec/acceptance/20_pkg_rpm_safely_upgrading_obsolete_modules_spec.rb +0 -175
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"name": "simp-testpackage",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"author": "simp",
|
5
|
+
"summary": "A SIMP Test Package for Testing Test Things",
|
6
|
+
"license": "Apache-2.0",
|
7
|
+
"source": "https://github.com/simp/pupmod-imatest",
|
8
|
+
"project_page": "https://github.com/simp/pupmod-imatest",
|
9
|
+
"issues_url": "https://simp/project.atlassian.net",
|
10
|
+
"tags": [ "simp", "test"],
|
11
|
+
"dependencies": [
|
12
|
+
{
|
13
|
+
"name": "puppetlabs/stdlib",
|
14
|
+
"version_requirement": ">= 1.1.0"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"name": "simp/simplib",
|
18
|
+
"version_requirement": ">= 1.1.0"
|
19
|
+
}
|
20
|
+
],
|
21
|
+
"operatingsystem_support": [
|
22
|
+
{
|
23
|
+
"operatingsystem": "CentOS",
|
24
|
+
"operatingsystemrelease": [
|
25
|
+
"6",
|
26
|
+
"7"
|
27
|
+
]
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"operatingsystem": "RedHat",
|
31
|
+
"operatingsystemrelease": [
|
32
|
+
"6",
|
33
|
+
"7"
|
34
|
+
]
|
35
|
+
}
|
36
|
+
]
|
37
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"name": "simp-testpackage",
|
3
|
+
"version": "2.0.0",
|
4
|
+
"author": "simp",
|
5
|
+
"summary": "A SIMP Test Package for Testing Test Things",
|
6
|
+
"license": "Apache-2.0",
|
7
|
+
"source": "https://github.com/simp/pupmod-imatest",
|
8
|
+
"project_page": "https://github.com/simp/pupmod-imatest",
|
9
|
+
"issues_url": "https://simp/project.atlassian.net",
|
10
|
+
"tags": [ "simp", "test"],
|
11
|
+
"dependencies": [
|
12
|
+
{
|
13
|
+
"name": "puppetlabs/stdlib",
|
14
|
+
"version_requirement": ">= 1.1.0"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"name": "simp/simplib",
|
18
|
+
"version_requirement": ">= 1.1.0"
|
19
|
+
}
|
20
|
+
],
|
21
|
+
"operatingsystem_support": [
|
22
|
+
{
|
23
|
+
"operatingsystem": "CentOS",
|
24
|
+
"operatingsystemrelease": [
|
25
|
+
"6",
|
26
|
+
"7"
|
27
|
+
]
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"operatingsystem": "RedHat",
|
31
|
+
"operatingsystemrelease": [
|
32
|
+
"6",
|
33
|
+
"7"
|
34
|
+
]
|
35
|
+
}
|
36
|
+
]
|
37
|
+
}
|
@@ -18,10 +18,10 @@ HOSTS:
|
|
18
18
|
- 'yum install -y rpm-build augeas-devel createrepo genisoimage git gnupg2 libicu-devel libxml2 libxml2-devel libxslt libxslt-devel rpmdevtools which'
|
19
19
|
# rvm build-deps
|
20
20
|
- 'yum install -y libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel'
|
21
|
-
- 'runuser build_user -l -c "gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys
|
21
|
+
- 'runuser build_user -l -c "{ gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3; } || { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB ; }"'
|
22
22
|
- 'runuser build_user -l -c "curl -sSL https://get.rvm.io | bash -s stable"'
|
23
|
-
- 'runuser build_user -l -c "rvm install 2.
|
24
|
-
- 'runuser build_user -l -c "rvm use --default 2.
|
23
|
+
- 'runuser build_user -l -c "rvm install 2.4"'
|
24
|
+
- 'runuser build_user -l -c "rvm use --default 2.4"'
|
25
25
|
- 'runuser build_user -l -c "rvm all do gem install bundler"'
|
26
26
|
mount_folders:
|
27
27
|
folder1:
|
@@ -47,11 +47,10 @@ HOSTS:
|
|
47
47
|
- 'yum install -y rpm-build augeas-devel createrepo genisoimage git gnupg2 libicu-devel libxml2 libxml2-devel libxslt libxslt-devel rpmdevtools clamav-update which'
|
48
48
|
# rvm build-deps
|
49
49
|
- 'yum install -y libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel'
|
50
|
-
- 'runuser build_user -l -c "gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys
|
51
|
-
- 'runuser build_user -l -c "gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3"'
|
50
|
+
- 'runuser build_user -l -c "{ gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3; } || { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB ; }"'
|
52
51
|
- 'runuser build_user -l -c "curl -sSL https://get.rvm.io | bash -s stable"'
|
53
|
-
- 'runuser build_user -l -c "rvm install 2.
|
54
|
-
- 'runuser build_user -l -c "rvm use --default 2.
|
52
|
+
- 'runuser build_user -l -c "rvm install 2.4"'
|
53
|
+
- 'runuser build_user -l -c "rvm use --default 2.4"'
|
55
54
|
- 'runuser build_user -l -c "rvm all do gem install bundler"'
|
56
55
|
- 'yum install -y rpm-sign'
|
57
56
|
mount_folders:
|
@@ -66,4 +65,4 @@ HOSTS:
|
|
66
65
|
|
67
66
|
CONFIG:
|
68
67
|
log_level: verbose
|
69
|
-
type:
|
68
|
+
type: aio
|
@@ -29,7 +29,7 @@ module Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
|
29
29
|
'postinstall' => 'post',
|
30
30
|
'preuninstall' => 'preun',
|
31
31
|
'postuninstall' => 'postun',
|
32
|
-
'posttrans' =>
|
32
|
+
'posttrans' => 'posttrans',
|
33
33
|
}
|
34
34
|
end
|
35
35
|
|
@@ -37,7 +37,7 @@ module Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
|
37
37
|
# returns a Hash of information about an RPM file's scriptlets
|
38
38
|
def rpm_scriptlets_for( host, rpm_file )
|
39
39
|
_labels = scriptlet_label_map.keys.join('|')
|
40
|
-
rx_scriptlet_blocks = /^(?<block>(?<scriptlet>#{_labels}) scriptlet.*?(\r|\n)(?<content>.*?))(?=\n#{_labels}|\Z)/m
|
40
|
+
rx_scriptlet_blocks = /^(?<block>(?<scriptlet>#{_labels}) scriptlet.*?(\r|\n)(?<content>.*?))(?=\n(#{_labels}) scriptlet|\Z)/m
|
41
41
|
|
42
42
|
result = on host, %Q(rpm -qp --scripts #{rpm_file})
|
43
43
|
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'simp/packer/iso_vars_json'
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tmpdir'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
describe Simp::Packer::IsoVarsJson do
|
7
|
+
DUMMY_CONTENT = 'Dummy text with known checksum'.freeze
|
8
|
+
DUMMY_CHECKSUM = 'bd6eae40b2b18359f33332dd5b1a3dd5c9e885240c3d4907d6a1208cdafa0003'.freeze
|
9
|
+
|
10
|
+
before do
|
11
|
+
@tmp_dir = Dir.mktmpdir(File.basename(__FILE__))
|
12
|
+
@iso = File.expand_path('fixture.iso', @tmp_dir)
|
13
|
+
File.open(@iso, 'w') { |f| f.puts DUMMY_CONTENT }
|
14
|
+
target_release = '6.3.0-Beta1'
|
15
|
+
target_data = {
|
16
|
+
'isos' => ['/path/to/CentOS-6.10-x86_64-bin-DVD1.iso', '/path/to/CentOS-6.10-x86_64-bin-DVD2.iso'],
|
17
|
+
'build_command' => "bundle exec rake build:auto[/path/to,#{target_release}]",
|
18
|
+
'os_version' => '6.10',
|
19
|
+
'flavor' => 'CentOS'
|
20
|
+
}
|
21
|
+
@var_json = described_class.new(@iso, target_release, target_data, :silent => true)
|
22
|
+
end
|
23
|
+
|
24
|
+
after do
|
25
|
+
FileUtils.remove_entry_secure @tmp_dir
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:expected_checksum) { DUMMY_CHECKSUM }
|
29
|
+
|
30
|
+
describe '#data' do
|
31
|
+
it 'returns expected information for v1.0.0 format' do
|
32
|
+
expect(@var_json.data).to include(
|
33
|
+
'simp_vars_version' => '1.0.0',
|
34
|
+
'box_distro_release' => 'SIMP-6.3.0-Beta1-CentOS-6.10',
|
35
|
+
'box_simp_release' => '6.3.0-Beta1',
|
36
|
+
'iso_checksum' => DUMMY_CHECKSUM,
|
37
|
+
'iso_checksum_type' => 'sha256',
|
38
|
+
'dist_os_flavor' => 'CentOS',
|
39
|
+
'dist_os_maj_version' => '6',
|
40
|
+
'dist_os_version' => '6.10',
|
41
|
+
'dist_source_isos' => 'CentOS-6.10-x86_64-bin-DVD1.iso:CentOS-6.10-x86_64-bin-DVD2.iso',
|
42
|
+
'packer_src_type' => 'simp-iso',
|
43
|
+
'iso_builder' => 'rubygem-simp-rake-helpers'
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#write' do
|
49
|
+
before (:each) { @var_json.write }
|
50
|
+
|
51
|
+
let(:json_file) { "#{File.basename(@iso, '.iso')}.json" }
|
52
|
+
|
53
|
+
it 'writes a .json file with the same name as the .iso' do
|
54
|
+
Dir.chdir(@tmp_dir) { |_dir| expect(File.exist?(json_file)).to be true }
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'writes a .json file with expected data' do
|
58
|
+
Dir.chdir(@tmp_dir) do |_dir|
|
59
|
+
file_content = File.read(json_file)
|
60
|
+
file_data = JSON.parse(file_content)
|
61
|
+
expect(file_data['iso_checksum']).to eq expected_checksum
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simp-rake-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Tessmer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-12-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: simp-beaker-helpers
|
@@ -159,16 +159,22 @@ dependencies:
|
|
159
159
|
name: parallel_tests
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
|
-
- - "
|
162
|
+
- - ">"
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: '2.4'
|
165
|
+
- - "<"
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '2.25'
|
165
168
|
type: :runtime
|
166
169
|
prerelease: false
|
167
170
|
version_requirements: !ruby/object:Gem::Requirement
|
168
171
|
requirements:
|
169
|
-
- - "
|
172
|
+
- - ">"
|
170
173
|
- !ruby/object:Gem::Version
|
171
174
|
version: '2.4'
|
175
|
+
- - "<"
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '2.25'
|
172
178
|
- !ruby/object:Gem::Dependency
|
173
179
|
name: r10k
|
174
180
|
requirement: !ruby/object:Gem::Requirement
|
@@ -245,6 +251,7 @@ files:
|
|
245
251
|
- bin/simp_rake_helpers
|
246
252
|
- lib/simp/componentinfo.rb
|
247
253
|
- lib/simp/local_gpg_signing_key.rb
|
254
|
+
- lib/simp/packer/iso_vars_json.rb
|
248
255
|
- lib/simp/rake.rb
|
249
256
|
- lib/simp/rake/build/auto.rb
|
250
257
|
- lib/simp/rake/build/build.rb
|
@@ -278,7 +285,7 @@ files:
|
|
278
285
|
- lib/simp/yum.rb
|
279
286
|
- spec/acceptance/00_pkg_rpm_custom_scriptlets_spec.rb
|
280
287
|
- spec/acceptance/10_pkg_rpm_spec.rb
|
281
|
-
- spec/acceptance/
|
288
|
+
- spec/acceptance/20_pkg_rpm_upgrade_spec.rb
|
282
289
|
- spec/acceptance/30_pkg_misc_spec.rb
|
283
290
|
- spec/acceptance/50_local_gpg_signing_key_spec.rb
|
284
291
|
- spec/acceptance/55_build_pkg_signing_spec.rb
|
@@ -336,6 +343,22 @@ files:
|
|
336
343
|
- spec/acceptance/files/module_with_misordered_entries/CHANGELOG
|
337
344
|
- spec/acceptance/files/module_with_misordered_entries/Rakefile
|
338
345
|
- spec/acceptance/files/module_with_misordered_entries/metadata.json
|
346
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG
|
347
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/Rakefile
|
348
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/build/rpm_metadata/requires
|
349
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml
|
350
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml
|
351
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml
|
352
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp
|
353
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json
|
354
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG
|
355
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/Rakefile
|
356
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires
|
357
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml
|
358
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml
|
359
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml
|
360
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp
|
361
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json
|
339
362
|
- spec/acceptance/files/simplib/CHANGELOG
|
340
363
|
- spec/acceptance/files/simplib/Rakefile
|
341
364
|
- spec/acceptance/files/simplib/build/rpm_metadata/requires
|
@@ -448,6 +471,7 @@ files:
|
|
448
471
|
- spec/lib/simp/files/testpackage-multi.spec
|
449
472
|
- spec/lib/simp/files/testpackage.spec
|
450
473
|
- spec/lib/simp/local_gpg_signing_key_spec.rb.beaker-only
|
474
|
+
- spec/lib/simp/packer/iso_vars_json_spec.rb
|
451
475
|
- spec/lib/simp/rake/build/files/changed_name_mod/metadata.json
|
452
476
|
- spec/lib/simp/rake/build/files/dependencies.yaml
|
453
477
|
- spec/lib/simp/rake/build/files/malformed_dep_meta_mod/metadata.json
|
@@ -1,175 +0,0 @@
|
|
1
|
-
require 'spec_helper_acceptance'
|
2
|
-
require_relative 'support/pkg_rpm_helpers'
|
3
|
-
|
4
|
-
require 'beaker/puppet_install_helper'
|
5
|
-
require 'json'
|
6
|
-
|
7
|
-
RSpec.configure do |c|
|
8
|
-
c.include Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
9
|
-
c.extend Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
# These tests demonstrate custom RPM triggers that work around the obsolete
|
14
|
-
# module RPM upgrate + simp_rpm_helper problem described in SIMP-3895:
|
15
|
-
#
|
16
|
-
# https://simp-project.atlassian.net/browse/SIMP-3988
|
17
|
-
#
|
18
|
-
# The expected outcome is that simp_rpm_helper always ensures the correct
|
19
|
-
# content is installed after an upgrade, even during after a package has been
|
20
|
-
# obsoleted. This is accomplished via %triggerpostun -- <name of old package>
|
21
|
-
#
|
22
|
-
# old 1.0 -> old 2.0 = no need for a trigger
|
23
|
-
# old 1.0 -> new 2.0 = must re-run simp_rpm_helper
|
24
|
-
# old 1.0 -> new 3.0 = must re-run simp_rpm_helper
|
25
|
-
# old 2.0 -> new 2.0 = must re-run simp_rpm_helper
|
26
|
-
# old 2.0 -> new 3.0 = must re-run simp_rpm_helper
|
27
|
-
# new 2.0 -> new 3.0 = no need for a trigger
|
28
|
-
|
29
|
-
|
30
|
-
shared_examples_for 'an upgrade path that works safely with rpm_simp_helper' do |first_package_file, second_package_file|
|
31
|
-
let( :rpm_regex ) do
|
32
|
-
/^(?<name>pupmod-[a-z0-9_]+-[a-z0-9_]+)-(?<version>\d+\.\d+\.\d+)-(?<release>\d+)\..*\.rpm$/
|
33
|
-
end
|
34
|
-
|
35
|
-
let( :first_package_version ){ first_package_file.match(rpm_regex)['version'] }
|
36
|
-
let( :first_package_name ){ first_package_file.match(rpm_regex)['name'] }
|
37
|
-
let( :first_package_forge_name ){ first_package_name.sub(/^[^-]+-/,'') }
|
38
|
-
let( :first_package_module_name ){ first_package_forge_name.sub(/^[^-]+-/,'') }
|
39
|
-
let( :first_package_dir_name ){ first_package_name + '-' + first_package_version.sub(/\.\d+-\d+$/,'') }
|
40
|
-
|
41
|
-
let( :second_package_name ){ second_package_file.match(rpm_regex)['name'] }
|
42
|
-
let( :second_package_forge_name ){ second_package_name.sub(/^[^-]+-/,'') }
|
43
|
-
let( :second_package_module_name ){ second_package_forge_name.sub(/^[^-]+-/,'') }
|
44
|
-
let( :second_package_version ){ second_package_file.match(rpm_regex)['version'] }
|
45
|
-
let( :second_package_dir_name ){ second_package_name + '-' + second_package_version.sub(/\.\d+-\d+$/,'') }
|
46
|
-
|
47
|
-
context "When upgrading from #{first_package_file} to #{second_package_file}" do
|
48
|
-
it "should clean out any old installs" do
|
49
|
-
on host, "rpm -e #{first_package_name} &> /dev/null; " +
|
50
|
-
"rpm -e #{second_package_name} &> /dev/null ",
|
51
|
-
accept_all_exit_codes: true
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should install #{first_package_file}" do
|
55
|
-
on host, "cd #{pkg_root_dir}/#{first_package_dir_name.gsub(/\.\d+$/,'')}; "+
|
56
|
-
"rpm -Uvh dist/#{first_package_file}"
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should transfer contents of #{first_package_file} into the code directory" do
|
60
|
-
result = on host, "cat /opt/test/puppet/code/#{first_package_module_name}/metadata.json"
|
61
|
-
metadata = JSON.parse(result.stdout)
|
62
|
-
expect(metadata['name']).to eq first_package_forge_name
|
63
|
-
expect(metadata['version']).to eq first_package_version
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should upgrade to #{second_package_file}" do
|
67
|
-
on host, "cd #{pkg_root_dir}/#{second_package_dir_name.gsub(/\.\d+$/,'')}; rpm -Uvh dist/#{second_package_file}"
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should transfer contents of #{second_package_file} into the code directory" do
|
71
|
-
result = on host, "cat /opt/test/puppet/code/#{second_package_module_name}/metadata.json"
|
72
|
-
metadata = JSON.parse(result.stdout)
|
73
|
-
expect(metadata['name']).to eq second_package_forge_name
|
74
|
-
expect(metadata['version']).to eq second_package_version
|
75
|
-
end
|
76
|
-
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
describe 'rake pkg:rpm + modules with customized content to safely upgrade obsoleted packagess' do
|
82
|
-
|
83
|
-
let(:pkg_root_dir) do
|
84
|
-
'/home/build_user/host_files/spec/acceptance/files/custom_scriptlet_triggers'
|
85
|
-
end
|
86
|
-
|
87
|
-
before :all do
|
88
|
-
copy_host_files_into_build_user_homedir(hosts)
|
89
|
-
|
90
|
-
comment 'ensure the Puppet AIO is installed'
|
91
|
-
ENV['PUPPET_INSTALL_TYPE'] ||= 'agent'
|
92
|
-
ENV['PUPPET_INSTALL_VERSION'] ||= '1.10.6'
|
93
|
-
run_puppet_install_helper_on(hosts)
|
94
|
-
|
95
|
-
comment 'configure puppet agent to look like a Puppet server for simp_rpm_helper'
|
96
|
-
on hosts, '/opt/puppetlabs/bin/puppet config --section master set user root; ' +
|
97
|
-
'/opt/puppetlabs/bin/puppet config --section master set group root; ' +
|
98
|
-
'/opt/puppetlabs/bin/puppet config --section master set codedir /opt/test/puppet/code; ' +
|
99
|
-
'/opt/puppetlabs/bin/puppet config --section master set confdir /opt/test/puppet/code'
|
100
|
-
|
101
|
-
|
102
|
-
comment 'build and install mock RPMs'
|
103
|
-
mock_pkg_dir = '/home/build_user/host_files/spec/acceptance/files/mock_packages'
|
104
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; rm -rf pkg"]
|
105
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh simp-adapter.spec"]
|
106
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-puppetlabs-stdlib.spec"]
|
107
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-simp-simplib.spec"]
|
108
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-simp-foo.spec"]
|
109
|
-
|
110
|
-
on hosts, %Q[rpm -Uvh "#{mock_pkg_dir}/pkg/dist/*.noarch.rpm"], acceptable_exit_codes: [0,1]
|
111
|
-
end
|
112
|
-
|
113
|
-
hosts.each do |_host|
|
114
|
-
context "on #{_host}" do
|
115
|
-
let!(:host){ _host }
|
116
|
-
|
117
|
-
context 'with module RPMs that are suceptible to SIMP-3895' do
|
118
|
-
|
119
|
-
let(:testpackages) do
|
120
|
-
[
|
121
|
-
'pupmod-old-package-1.0',
|
122
|
-
'pupmod-old-package-2.0',
|
123
|
-
'pupmod-old-package-2.2',
|
124
|
-
'pupmod-new-package-2.1',
|
125
|
-
'pupmod-new-package-3.0',
|
126
|
-
]
|
127
|
-
end
|
128
|
-
|
129
|
-
it 'should create RPMs' do
|
130
|
-
testpackages.each do |package|
|
131
|
-
on host, %Q(#{run_cmd} "cd #{pkg_root_dir}/#{package}; ) +
|
132
|
-
%Q(rvm use default; bundle update --local || bundle update")
|
133
|
-
rpm_name = package.sub(/-[^-]+$/,'')
|
134
|
-
# In case previous tests haven't been clean
|
135
|
-
on host, "rpm -q #{rpm_name} && rpm -e #{rpm_name}; :"
|
136
|
-
|
137
|
-
on host, %(#{run_cmd} "cd #{pkg_root_dir}/#{package}; #{rake_cmd} pkg:rpm")
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
142
|
-
'pupmod-old-package-1.0.0-0.noarch.rpm',
|
143
|
-
'pupmod-old-package-2.0.0-0.noarch.rpm')
|
144
|
-
|
145
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
146
|
-
'pupmod-old-package-1.0.0-0.noarch.rpm',
|
147
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm')
|
148
|
-
|
149
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
150
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm',
|
151
|
-
'pupmod-old-package-2.2.0-0.noarch.rpm')
|
152
|
-
|
153
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
154
|
-
'pupmod-old-package-1.0.0-0.noarch.rpm',
|
155
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
156
|
-
|
157
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
158
|
-
'pupmod-old-package-2.0.0-0.noarch.rpm',
|
159
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm')
|
160
|
-
|
161
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
162
|
-
'pupmod-old-package-2.0.0-0.noarch.rpm',
|
163
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
164
|
-
|
165
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
166
|
-
'pupmod-old-package-2.2.0-0.noarch.rpm',
|
167
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
168
|
-
|
169
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
170
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm',
|
171
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|