puppet_litmus 2.7.0 → 2.8.1
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/README.md +5 -0
- data/exe/matrix.json +3 -2
- data/exe/matrix_from_metadata_v2 +3 -2
- data/exe/matrix_from_metadata_v3 +39 -0
- data/lib/puppet_litmus/version.rb +1 -1
- data/spec/exe/fake_metadata.json +2 -1
- data/spec/exe/matrix_from_metadata_v2_spec.rb +12 -8
- data/spec/exe/matrix_from_metadata_v3_spec.rb +61 -6
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a42ef3d3e0ba9f5001c6d2c38ca780fc3d339c0ea42f421e366b6f382f26ba9f
|
|
4
|
+
data.tar.gz: 857f51a782da81d1f9739c20f254838e9434fa13c35e482980dbc26334585c5c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 184d79c640c841d8438ec469a52b2c061f987f095f844a257823e035a039dfa9b8efe562ca0212e087bbe4b768c67b01de680cd7a18dee6473f93973f7de44b2
|
|
7
|
+
data.tar.gz: 95b07a6b131bfcccfc440137e82fb87ac2188baf1748c2aa3660d7b651f4309958c04e202fb7622643e9223db5f997d5c091022427b9f75449746a7626cd9a35
|
data/README.md
CHANGED
|
@@ -68,6 +68,7 @@ in the project module root directory run `bundle exec matrix_from_metadata_v3`
|
|
|
68
68
|
| --puppet-exclude | MAJOR | | Filter puppet major version |
|
|
69
69
|
| --platform-include | REGEX | | Select platform |
|
|
70
70
|
| --platform-exclude | REGEX | | Filter platform |
|
|
71
|
+
| --collection-platform-exclude | MAJOR:REGEX | | Filter a platform for one puppet major only, emitted as a GitHub Actions matrix exclude so the platform stays in other collections. Repeatable |
|
|
71
72
|
| --arch-include | REGEX | | Select architecture |
|
|
72
73
|
| --arch-exclude | REGEX | | Filter architecture |
|
|
73
74
|
| --provision-prefer | NAME | docker | Prefer provisioner |
|
|
@@ -88,6 +89,10 @@ in the project module root directory run `bundle exec matrix_from_metadata_v3`
|
|
|
88
89
|
```sh
|
|
89
90
|
matrix_from_metadata_v3 --platform-exclude redhat-7 --platform-exclude ubuntu-18.04
|
|
90
91
|
```
|
|
92
|
+
* Exclude a platform for one puppet major only (kept in other collections). E.g. ubuntu-20.04 has no Puppet 9 agent but is valid on Puppet 8:
|
|
93
|
+
```sh
|
|
94
|
+
matrix_from_metadata_v3 --nightly --collection-platform-exclude 9:ubuntu-20.04
|
|
95
|
+
```
|
|
91
96
|
* Exclude architecture
|
|
92
97
|
```sh
|
|
93
98
|
matrix_from_metadata_v3 --arch-exclude x86_64
|
data/exe/matrix.json
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"15": { "x86_64": "sles-15" }
|
|
42
42
|
},
|
|
43
43
|
"Ubuntu": {
|
|
44
|
-
"20.04": { "x86_64": "ubuntu-2004-lts" },
|
|
44
|
+
"20.04": { "x86_64": "ubuntu-os-pro-cloud/ubuntu-pro-2004-lts" },
|
|
45
45
|
"22.04": { "x86_64": "ubuntu-2204-lts", "arm": "ubuntu-2204-lts-arm64" },
|
|
46
46
|
"24.04": { "x86_64": "ubuntu-2404-lts", "arm": "ubuntu-2404-lts-arm64" }
|
|
47
47
|
},
|
|
@@ -91,7 +91,8 @@
|
|
|
91
91
|
"18.04": { "x86_64": "litmusimage/ubuntu:18.04" },
|
|
92
92
|
"20.04": { "x86_64": "litmusimage/ubuntu:20.04" },
|
|
93
93
|
"22.04": { "x86_64": "litmusimage/ubuntu:22.04" },
|
|
94
|
-
"24.04": { "x86_64": "litmusimage/ubuntu:24.04" }
|
|
94
|
+
"24.04": { "x86_64": "litmusimage/ubuntu:24.04" },
|
|
95
|
+
"26.04": { "x86_64": "litmusimage/ubuntu:26.04" }
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
},
|
data/exe/matrix_from_metadata_v2
CHANGED
|
@@ -66,7 +66,8 @@ DOCKER_PLATFORMS = {
|
|
|
66
66
|
'Ubuntu-18.04' => 'litmusimage/ubuntu:18.04',
|
|
67
67
|
'Ubuntu-20.04' => 'litmusimage/ubuntu:20.04',
|
|
68
68
|
'Ubuntu-22.04' => 'litmusimage/ubuntu:22.04',
|
|
69
|
-
'Ubuntu-24.04' => 'litmusimage/ubuntu:24.04'
|
|
69
|
+
'Ubuntu-24.04' => 'litmusimage/ubuntu:24.04',
|
|
70
|
+
'Ubuntu-26.04' => 'litmusimage/ubuntu:26.04'
|
|
70
71
|
}.freeze
|
|
71
72
|
|
|
72
73
|
# This table uses the latest version in each collection for accurate
|
|
@@ -125,7 +126,7 @@ if ARGV.include?('--provision-service')
|
|
|
125
126
|
'Debian-11' => 'debian-11',
|
|
126
127
|
'Debian-12' => 'debian-12',
|
|
127
128
|
'Debian-13' => 'debian-13',
|
|
128
|
-
'Ubuntu-20.04' => 'ubuntu-2004-lts',
|
|
129
|
+
'Ubuntu-20.04' => 'ubuntu-os-pro-cloud/ubuntu-pro-2004-lts',
|
|
129
130
|
'Ubuntu-22.04' => 'ubuntu-2204-lts',
|
|
130
131
|
'Ubuntu-24.04' => 'ubuntu-2404-lts'
|
|
131
132
|
}
|
data/exe/matrix_from_metadata_v3
CHANGED
|
@@ -86,6 +86,7 @@ options = OpenStruct.new(
|
|
|
86
86
|
puppet_include: [],
|
|
87
87
|
platform_exclude: [],
|
|
88
88
|
platform_include: [],
|
|
89
|
+
collection_platform_exclude: [],
|
|
89
90
|
arch_include: [],
|
|
90
91
|
arch_exclude: [],
|
|
91
92
|
provision_prefer: [],
|
|
@@ -155,6 +156,21 @@ begin
|
|
|
155
156
|
opt.on('--platform-include REGEX', Regexp, 'Select platform') { |o| options.platform_include << o }
|
|
156
157
|
opt.on('--platform-exclude REGEX', Regexp, 'Filter platform') { |o| options.platform_exclude << o }
|
|
157
158
|
|
|
159
|
+
opt.on('--collection-platform-exclude SPEC', String,
|
|
160
|
+
'Filter a platform for one puppet major only, as MAJOR:PLATFORM_REGEX (e.g. 9:ubuntu-20.04). ' \
|
|
161
|
+
'Emitted as a GitHub Actions matrix exclude so the platform stays in other collections. Repeatable.') do |o|
|
|
162
|
+
major, regex = o.split(':', 2)
|
|
163
|
+
raise OptionParser::InvalidArgument, "--collection-platform-exclude '#{o}' must be MAJOR:PLATFORM_REGEX" \
|
|
164
|
+
if regex.nil? || regex.empty? || major !~ /\A\d+\z/
|
|
165
|
+
|
|
166
|
+
begin
|
|
167
|
+
platform = Regexp.new(regex, Regexp::IGNORECASE)
|
|
168
|
+
rescue RegexpError => e
|
|
169
|
+
raise OptionParser::InvalidArgument, "--collection-platform-exclude '#{o}' has an invalid PLATFORM_REGEX: #{e.message}"
|
|
170
|
+
end
|
|
171
|
+
options.collection_platform_exclude << { major: major.to_i, platform: }
|
|
172
|
+
end
|
|
173
|
+
|
|
158
174
|
opt.on('--arch-include REGEX', Regexp, 'Select architecture') { |o| options.arch_include << o }
|
|
159
175
|
opt.on('--arch-exclude REGEX', Regexp, 'Filter architecture') { |o| options.arch_exclude << o }
|
|
160
176
|
|
|
@@ -370,6 +386,29 @@ options[:metadata]['operatingsystem_support'].each do |os_sup|
|
|
|
370
386
|
end
|
|
371
387
|
end
|
|
372
388
|
|
|
389
|
+
# Exclude specific platform x collection combinations (e.g. an OS a given puppet
|
|
390
|
+
# major ships no agent package for, such as ubuntu-20.04 on puppet 9). The platform
|
|
391
|
+
# and collection remain valid on their own, so this is emitted as a GitHub Actions
|
|
392
|
+
# matrix `exclude` that only drops the matching combinations.
|
|
393
|
+
unless options[:collection_platform_exclude].empty?
|
|
394
|
+
exclude = []
|
|
395
|
+
matrix[:collection].each do |coll|
|
|
396
|
+
coll_name = coll.is_a?(Hash) ? coll[:collection] : coll
|
|
397
|
+
major = coll_name.to_s[/\d+/]&.to_i
|
|
398
|
+
next if major.nil?
|
|
399
|
+
|
|
400
|
+
matrix[:platforms].each do |platform|
|
|
401
|
+
next unless options[:collection_platform_exclude].any? do |spec|
|
|
402
|
+
spec[:major] == major && platform[:label].match?(spec[:platform])
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
Action.notice("collection-platform-exclude filtered #{platform[:label]} x #{coll_name}")
|
|
406
|
+
exclude << { platforms: platform, collection: coll }
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
matrix[:exclude] = exclude unless exclude.empty?
|
|
410
|
+
end
|
|
411
|
+
|
|
373
412
|
Action.group('matrix', matrix, pretty: true).group('spec_matrix', spec_matrix, pretty: true) if Action.type == 'github' && Action.notice
|
|
374
413
|
|
|
375
414
|
Action.error('no supported puppet versions') if matrix[:collection].empty?
|
data/spec/exe/fake_metadata.json
CHANGED
|
@@ -32,7 +32,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
32
32
|
'{"label":"RedHat-9-arm","provider":"provision_service","image":"rhel-9-arm64"},',
|
|
33
33
|
'{"label":"Ubuntu-18.04","provider":"docker","image":"litmusimage/ubuntu:18.04"},',
|
|
34
34
|
'{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"},',
|
|
35
|
-
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"}',
|
|
35
|
+
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"},',
|
|
36
|
+
'{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
|
|
36
37
|
'],',
|
|
37
38
|
'"collection":[',
|
|
38
39
|
'"puppetcore8"',
|
|
@@ -43,7 +44,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
43
44
|
expect(github_output_content).to include(
|
|
44
45
|
'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
|
|
45
46
|
)
|
|
46
|
-
expect(result.stdout).to include("Created matrix with
|
|
47
|
+
expect(result.stdout).to include("Created matrix with 12 cells:\n - Acceptance Test Cells: 11\n - Spec Test Cells: 1")
|
|
47
48
|
end
|
|
48
49
|
end
|
|
49
50
|
|
|
@@ -76,7 +77,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
76
77
|
'{"label":"RedHat-9","provider":"provision_service","image":"rhel-9"},',
|
|
77
78
|
'{"label":"RedHat-9-arm","provider":"provision_service","image":"rhel-9-arm64"},',
|
|
78
79
|
'{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"},',
|
|
79
|
-
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"}',
|
|
80
|
+
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"},',
|
|
81
|
+
'{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
|
|
80
82
|
'],',
|
|
81
83
|
'"collection":[',
|
|
82
84
|
'"puppetcore8"',
|
|
@@ -87,7 +89,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
87
89
|
expect(github_output_content).to include(
|
|
88
90
|
'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
|
|
89
91
|
)
|
|
90
|
-
expect(result.stdout).to include("Created matrix with
|
|
92
|
+
expect(result.stdout).to include("Created matrix with 11 cells:\n - Acceptance Test Cells: 10\n - Spec Test Cells: 1")
|
|
91
93
|
end
|
|
92
94
|
end
|
|
93
95
|
|
|
@@ -117,7 +119,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
117
119
|
'{"label":"RedHat-10","provider":"provision_service","image":"rhel-10"},',
|
|
118
120
|
'{"label":"RedHat-10-arm","provider":"provision_service","image":"rhel-10-arm64"},',
|
|
119
121
|
'{"label":"RedHat-9-arm","provider":"provision_service","image":"rhel-9-arm64"},',
|
|
120
|
-
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"}',
|
|
122
|
+
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"},',
|
|
123
|
+
'{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
|
|
121
124
|
'],',
|
|
122
125
|
'"collection":[',
|
|
123
126
|
'"puppetcore8"',
|
|
@@ -128,7 +131,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
128
131
|
expect(github_output_content).to include(
|
|
129
132
|
'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
|
|
130
133
|
)
|
|
131
|
-
expect(result.stdout).to include("Created matrix with
|
|
134
|
+
expect(result.stdout).to include("Created matrix with 6 cells:\n - Acceptance Test Cells: 5\n - Spec Test Cells: 1")
|
|
132
135
|
end
|
|
133
136
|
end
|
|
134
137
|
|
|
@@ -156,7 +159,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
156
159
|
'{"label":"AmazonLinux-2","provider":"docker","image":"litmusimage/amazonlinux:2"},',
|
|
157
160
|
'{"label":"AmazonLinux-2023","provider":"docker","image":"litmusimage/amazonlinux:2023"},',
|
|
158
161
|
'{"label":"Ubuntu-18.04","provider":"docker","image":"litmusimage/ubuntu:18.04"},',
|
|
159
|
-
'{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"}',
|
|
162
|
+
'{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"},',
|
|
163
|
+
'{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
|
|
160
164
|
'],',
|
|
161
165
|
'"collection":[',
|
|
162
166
|
'"puppetcore8"',
|
|
@@ -167,7 +171,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
|
|
|
167
171
|
expect(github_output_content).to include(
|
|
168
172
|
'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
|
|
169
173
|
)
|
|
170
|
-
expect(result.stdout).to include("Created matrix with
|
|
174
|
+
expect(result.stdout).to include("Created matrix with 6 cells:\n - Acceptance Test Cells: 5\n - Spec Test Cells: 1")
|
|
171
175
|
end
|
|
172
176
|
end
|
|
173
177
|
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'spec_helper'
|
|
4
|
+
require 'json'
|
|
4
5
|
|
|
5
6
|
RSpec.describe 'matrix_from_metadata_v3' do
|
|
6
7
|
let(:github_output) { Tempfile.new('github_output') }
|
|
@@ -27,7 +28,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
27
28
|
'{"label":"AmazonLinux-2","provider":"docker","arch":"x86_64","image":"litmusimage/amazonlinux:2","runner":"ubuntu-22.04"},',
|
|
28
29
|
'{"label":"AmazonLinux-2023","provider":"docker","arch":"x86_64","image":"litmusimage/amazonlinux:2023","runner":"ubuntu-22.04"},',
|
|
29
30
|
'{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
|
|
30
|
-
'{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"}',
|
|
31
|
+
'{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
|
|
32
|
+
'{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
|
|
31
33
|
'],',
|
|
32
34
|
'"collection":[',
|
|
33
35
|
'"puppetcore8","puppetcore9"',
|
|
@@ -62,7 +64,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
62
64
|
'{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
|
|
63
65
|
'{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
|
|
64
66
|
'{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
|
|
65
|
-
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
|
|
67
|
+
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
|
|
68
|
+
'{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
|
|
66
69
|
'],',
|
|
67
70
|
'"collection":[',
|
|
68
71
|
'"puppetcore8","puppetcore9"',
|
|
@@ -104,7 +107,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
104
107
|
'{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
|
|
105
108
|
'{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
|
|
106
109
|
'{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
|
|
107
|
-
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
|
|
110
|
+
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
|
|
111
|
+
'{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
|
|
108
112
|
'],',
|
|
109
113
|
'"collection":[',
|
|
110
114
|
'"puppetcore8","puppetcore9"',
|
|
@@ -145,7 +149,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
145
149
|
'{"label":"RedHat-10","provider":"provision_service","arch":"x86_64","image":"rhel-10","runner":"ubuntu-latest"},',
|
|
146
150
|
'{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
|
|
147
151
|
'{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
|
|
148
|
-
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
|
|
152
|
+
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
|
|
153
|
+
'{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
|
|
149
154
|
'],',
|
|
150
155
|
'"collection":[',
|
|
151
156
|
'"puppetcore8","puppetcore9"',
|
|
@@ -179,6 +184,7 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
179
184
|
[
|
|
180
185
|
'matrix={',
|
|
181
186
|
'"platforms":[',
|
|
187
|
+
'{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
|
|
182
188
|
'],',
|
|
183
189
|
'"collection":[',
|
|
184
190
|
'"puppetcore8","puppetcore9"',
|
|
@@ -239,7 +245,7 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
239
245
|
'::group::matrix',
|
|
240
246
|
'::group::spec_matrix'
|
|
241
247
|
)
|
|
242
|
-
expect(github_output_content).to match(/"collection":\[(?:"\d{4}\.\d
|
|
248
|
+
expect(github_output_content).to match(/"collection":\[(?:"\d{4}\.\d+\.\d+-puppet_enterprise",)+"puppetcore8","puppetcore9"/)
|
|
243
249
|
expect(github_output_content).to include(
|
|
244
250
|
'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2},{"puppet_version":"~> 9.0","ruby_version":4.0}]}'
|
|
245
251
|
)
|
|
@@ -261,7 +267,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
261
267
|
'{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
|
|
262
268
|
'{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
|
|
263
269
|
'{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
|
|
264
|
-
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
|
|
270
|
+
'{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
|
|
271
|
+
'{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
|
|
265
272
|
'],',
|
|
266
273
|
'"collection":[',
|
|
267
274
|
'"puppetcore8-nightly","puppetcore9-nightly"',
|
|
@@ -335,4 +342,52 @@ RSpec.describe 'matrix_from_metadata_v3' do
|
|
|
335
342
|
)
|
|
336
343
|
end
|
|
337
344
|
end
|
|
345
|
+
|
|
346
|
+
context 'with --collection-platform-exclude' do
|
|
347
|
+
let(:result) do
|
|
348
|
+
run_matrix_from_metadata_v3(
|
|
349
|
+
['--collection-platform-exclude', '9:ubuntu-18.04'],
|
|
350
|
+
env: { 'PUPPET_FORGE_TOKEN' => 'fake' }
|
|
351
|
+
)
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
it 'runs successfully' do
|
|
355
|
+
expect(result.status_code).to eq 0
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
it 'emits a matrix exclude for only the matching platform x collection' do
|
|
359
|
+
result
|
|
360
|
+
matrix = JSON.parse(github_output_content[/^matrix=(.+)$/, 1])
|
|
361
|
+
expect(matrix['exclude']).to contain_exactly(
|
|
362
|
+
'platforms' => {
|
|
363
|
+
'label' => 'Ubuntu-18.04', 'provider' => 'docker', 'arch' => 'x86_64',
|
|
364
|
+
'image' => 'litmusimage/ubuntu:18.04', 'runner' => 'ubuntu-22.04'
|
|
365
|
+
},
|
|
366
|
+
'collection' => 'puppetcore9'
|
|
367
|
+
)
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
it 'keeps the platform and the collection usable in other combinations' do
|
|
371
|
+
# Ubuntu-18.04 is still a platform and puppetcore9 is still a collection;
|
|
372
|
+
# only the single pair is excluded (so Ubuntu-18.04 still runs on puppetcore8).
|
|
373
|
+
result
|
|
374
|
+
expect(github_output_content).to include('{"label":"Ubuntu-18.04","provider":"docker",')
|
|
375
|
+
expect(github_output_content).to include('"collection":["puppetcore8","puppetcore9"]')
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
it 'logs the exclusion' do
|
|
379
|
+
expect(result.stdout).to include('::notice::collection-platform-exclude filtered Ubuntu-18.04 x puppetcore9')
|
|
380
|
+
end
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
context 'with an invalid --collection-platform-exclude spec' do
|
|
384
|
+
let(:result) do
|
|
385
|
+
run_matrix_from_metadata_v3(['--collection-platform-exclude', 'ubuntu-18.04'])
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
it 'fails with a helpful error' do
|
|
389
|
+
expect(result.status_code).not_to eq 0
|
|
390
|
+
expect(result.stdout).to include("--collection-platform-exclude 'ubuntu-18.04' must be MAJOR:PLATFORM_REGEX")
|
|
391
|
+
end
|
|
392
|
+
end
|
|
338
393
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: puppet_litmus
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppet, Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-09-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bolt
|