simp-beaker-helpers 1.22.1 → 1.23.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf4dabba2a12366f3acb4e850cd1894df06f7ab2f1de040f384351c8a2fdc3a1
4
- data.tar.gz: ee3ee574fbb0165bc5354cc5a5bc5a9355add5da3412f5e65d2e3d27274d1f4a
3
+ metadata.gz: 77288902c91655a0e3f5c7db8d5573375e3c341638a8bfc3be82b76f7753f3f6
4
+ data.tar.gz: ec02b6c05c5b1b69615b83b7ed5682d1e2ba9619d72752c4adfa5d48e3e3ec61
5
5
  SHA512:
6
- metadata.gz: c11025a91bc2e4cb079531e9930c54e7540b759bc365bb7a676c90a1c6ce50b5af4f610fb22e3c74b54f8c1d858d71ff4f12b30ba136ef5d1788255727c0df91
7
- data.tar.gz: 50696f976eba788b3ed287af8aab9925ff237ba8d1b524ea0eaf04dbd97b11192a350cde65004696f6b0d83c3ce0bae1561fd408dce6d334aab57745cc1e7f40
6
+ metadata.gz: 6c006e7df61eaeb23dce36101ae518d88f99f34778821402973cf5c9358226572beab46c319fafee6487bbf325dbe07f72f7343c49d023e3d9949dd695092b57
7
+ data.tar.gz: f0535c393d9a6b6b8e3e9484fcf52e78adc4892bd0eca8255479eb06185e9865ddad9af2c6c5f3cd67d55c537632f88e178c39e6ad4a48757e2b61d7b229b826
@@ -0,0 +1,6 @@
1
+ {
2
+ "gem_build_command": "bundle exec rake pkg:gem",
3
+ "gem_release_command": "gem push dist/*.gem",
4
+ "gem_pkg_dir": "dist"
5
+ }
6
+
@@ -1,4 +1,6 @@
1
1
  # Build & Deploy RubyGem & GitHub release when a SemVer tag is pushed
2
+ #
3
+ # This workflow's jobs are only triggered in repos under the `simp` organization
2
4
  # ------------------------------------------------------------------------------
3
5
  #
4
6
  # NOTICE: **This file is maintained with puppetsync**
@@ -21,6 +23,19 @@
21
23
  #
22
24
  # * The CHANGLOG text is altered to remove RPM-style date headers, which don't
23
25
  # render well as markdown on the GitHub release pages
26
+ #
27
+ # * By default, the gem is built and released using the standard rake tasks
28
+ # from "bundler/gem_tasks". To override these, create a JSON file at
29
+ # `.github/workflows.local.json`, using the following format:
30
+ #
31
+ # {
32
+ # "gem_build_command": "bundle exec rake build",
33
+ # "gem_release_command": "bundle exec rake build release:rubygem_push",
34
+ # "gem_pkg_dir": "pkg"
35
+ # }
36
+ #
37
+ # All keys are optional.
38
+ #
24
39
  ---
25
40
  name: 'Tag: Release to GitHub & rubygems.org'
26
41
 
@@ -36,10 +51,12 @@ env:
36
51
  jobs:
37
52
  releng-checks:
38
53
  name: "RELENG checks"
54
+ if: github.repository_owner == 'simp'
39
55
  runs-on: ubuntu-18.04
40
56
  outputs:
41
57
  build_command: ${{ steps.commands.outputs.build_command }}
42
58
  release_command: ${{ steps.commands.outputs.release_command }}
59
+ pkg_dir: ${{ steps.commands.outputs.pkg_dir }}
43
60
  steps:
44
61
  - name: "Assert '${{ github.ref }}' is a tag"
45
62
  run: '[[ "$GITHUB_REF" =~ ^refs/tags/ ]] || { echo "::error ::GITHUB_REF is not a tag: ${GITHUB_REF}"; exit 1 ; }'
@@ -53,27 +70,45 @@ jobs:
53
70
  # By default, these are the standard tasks from "bundler/gem_tasks"
54
71
  # To override them in the LOCAL_WORKFLOW_CONFIG_FILE
55
72
  GEM_BUILD_COMMAND='bundle exec rake build'
56
- GEM_RELEASE_COMMAND='gem push pkg/*.gem'
73
+ GEM_RELEASE_COMMAND='bundle exec rake build release:rubygem_push'
74
+ GEM_PKG_DIR='pkg'
75
+ if jq -r '. | keys' "$LOCAL_WORKFLOW_CONFIG_FILE" 2>/dev/null | \
76
+ grep -w '"gem_pkg_dir"' &> /dev/null; then
77
+ GEM_PKG_DIR="$(jq -r .gem_pkg_dir "$LOCAL_WORKFLOW_CONFIG_FILE" )"
78
+ fi
57
79
  if jq -r '. | keys' "$LOCAL_WORKFLOW_CONFIG_FILE" 2>/dev/null | \
58
80
  grep -w '"gem_build_command"' &> /dev/null; then
59
- GEM_BUILD_COMMAND="$(jq .gem_build_command "$LOCAL_WORKFLOW_CONFIG_FILE" )"
81
+ GEM_BUILD_COMMAND="$(jq -r .gem_build_command "$LOCAL_WORKFLOW_CONFIG_FILE" )"
60
82
  fi
61
83
  if jq -r '. | keys' "$LOCAL_WORKFLOW_CONFIG_FILE" 2>/dev/null | \
62
84
  grep -w '"gem_release_command"' &> /dev/null; then
63
- GEM_RELEASE_COMMAND="$(jq .gem_release_command "$LOCAL_WORKFLOW_CONFIG_FILE" )"
85
+ GEM_RELEASE_COMMAND="$(jq -r .gem_release_command "$LOCAL_WORKFLOW_CONFIG_FILE" )"
64
86
  fi
65
87
  echo "::set-output name=build_command::${GEM_BUILD_COMMAND}"
88
+ echo "::set-output name=pkg_dir::${GEM_PKG_DIR}"
66
89
  echo "::set-output name=release_command::${GEM_RELEASE_COMMAND}"
67
90
  - uses: ruby/setup-ruby@v1
68
91
  with:
69
92
  ruby-version: 2.5
70
93
  bundler-cache: true
71
94
  - name: Test build the package
72
- run: "${{ steps.commands.outputs.build_command }}"
95
+ env:
96
+ GEM_BUILD_COMMAND: ${{ steps.commands.outputs.build_command }}
97
+ run: "$GEM_BUILD_COMMAND"
98
+ - name: "Assert '${{ github.ref }}' matches the package version"
99
+ run: |
100
+ tag="${GITHUB_REF/refs\/tags\//}"
101
+ [ -d "${{ steps.commands.outputs.pkg_dir }}" ] || \
102
+ { echo "::error ::No directory found at ${{ steps.commands.outputs.pkg_dir }}/" ; exit 3 ; }
103
+ ls -1 "${{ steps.commands.outputs.pkg_dir }}"/*.gem || \
104
+ { echo "::error ::No gem file found at ${{ steps.commands.outputs.pkg_dir }}/*.gem" ; exit 2 ; }
105
+ [ -f "${{ steps.commands.outputs.pkg_dir }}"/*-${tag}.gem ] || \
106
+ { echo "::error ::tag '${tag}' does not match package $(ls -1 ${{ steps.commands.outputs.pkg_dir }}/*.gem)"; exit 1 ; }
73
107
 
74
108
  create-github-release:
75
109
  name: Deploy GitHub Release
76
110
  needs: [ releng-checks ]
111
+ if: github.repository_owner == 'simp'
77
112
  runs-on: ubuntu-18.04
78
113
  steps:
79
114
  - name: Checkout code
@@ -117,11 +152,13 @@ jobs:
117
152
  deploy-rubygem:
118
153
  name: Deploy RubyGem Release
119
154
  needs: [ releng-checks ]
155
+ if: github.repository_owner == 'simp'
120
156
  runs-on: ubuntu-18.04
121
157
  env:
122
158
  RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
123
159
  BUILD_COMMAND: ${{ needs.releng-checks.outputs.build_command }}
124
160
  RELEASE_COMMAND: ${{ needs.releng-checks.outputs.release_command }}
161
+ PKG_DIR: ${{ needs.releng-checks.outputs.pkg_dir }}
125
162
  steps:
126
163
  - name: Checkout code
127
164
  uses: actions/checkout@v2
@@ -133,7 +170,12 @@ jobs:
133
170
  ruby-version: 2.5
134
171
  bundler-cache: true
135
172
  - name: Build RubyGem
136
- run: '$BUILD_COMMAND'
173
+ run: |
174
+ echo "Setting up file permissions..."
175
+ chmod -R go=u-w .
176
+
177
+ echo "Running '$BUILD_COMMAND'..."
178
+ $BUILD_COMMAND
137
179
 
138
180
  - name: Release RubyGem
139
181
  run: |
@@ -146,7 +188,5 @@ jobs:
146
188
  EOF
147
189
  chmod 0600 ~/.gem/credentials
148
190
 
149
- chmod -R go=u-w .
150
-
151
191
  echo "Running '$RELEASE_COMMAND'..."
152
192
  $RELEASE_COMMAND
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ### 1.23.0 / 2021-03-16
2
+ * Added:
3
+ * For `podman` support:
4
+ * Bumped the required beaker-docker to between 0.8.3 and 2.0.0
5
+ * Added a dependency on docker-api between 2.1.0 and 3.0.0
6
+ * Make SSG failures have verbose output to make remediation easier
7
+ * Fixed:
8
+ * Ensure that containers use the correct method for copying files
9
+
1
10
  ### 1.22.1 / 2021-03-01
2
11
  * Fixed: enable_epel_on() now installs the correct EPEL repository
3
12
  package on OracleLinux
data/Gemfile CHANGED
@@ -13,7 +13,7 @@ gem 'bundler'
13
13
  gem 'rake'
14
14
 
15
15
  group :system_tests do
16
- beaker_gem_options = ENV.fetch('BEAKER_GEM_OPTIONS', ['>= 4.17.0', '< 5.0.0'])
16
+ beaker_gem_options = ENV.fetch('BEAKER_GEM_OPTIONS', ['>= 4.28.1', '< 5.0.0'])
17
17
 
18
18
  if "#{beaker_gem_options}".include?(':')
19
19
  # Just pass in BEAKER_GEM_OPTIONS as a string that would represent the usual
@@ -186,13 +186,18 @@ module Simp::BeakerHelpers
186
186
  end
187
187
  end
188
188
 
189
- unless directory_exists_on(sut, dest)
190
- dest = File.dirname(dest)
191
- sut.mkdir_p(dest)
192
- end
189
+ sut.mkdir_p(File.dirname(dest)) unless directory_exists_on(sut, dest)
193
190
 
194
- %x(tar #{exclude_list.join(' ')} -hcf - -C "#{File.dirname(src)}" "#{File.basename(src)}" | #{docker_cmd} exec -i "#{container_id}" tar -C "#{dest}" -xf -)
191
+ if File.file?(src)
192
+ cmd = %{#{docker_cmd} cp "#{src}" "#{container_id}:#{dest}"}
193
+ else
194
+ cmd = [
195
+ %{tar #{exclude_list.join(' ')} -hcf - -C "#{File.dirname(src)}" "#{File.basename(src)}"},
196
+ %{#{docker_cmd} exec -i "#{container_id}" tar -C "#{File.dirname(dest)}" -xf -)}
197
+ ].join(' | ')
198
+ end
195
199
 
200
+ %x(#{cmd})
196
201
  elsif rsync_functional_on?(sut)
197
202
  # This makes rsync_to work like beaker and scp usually do
198
203
  exclude_hack = %(__-__' -L --exclude '__-__)
@@ -79,7 +79,7 @@ module Simp::BeakerHelpers
79
79
  '7' => {
80
80
  'required_packages' => EL_PACKAGES,
81
81
  'ssg' => {
82
- 'profile_target' => 'rhel7',
82
+ 'profile_target' => 'centos7',
83
83
  'build_target' => 'centos7',
84
84
  'datastream' => 'ssg-centos7-ds.xml'
85
85
  }
@@ -87,7 +87,7 @@ module Simp::BeakerHelpers
87
87
  '8' => {
88
88
  'required_packages' => EL8_PACKAGES,
89
89
  'ssg' => {
90
- 'profile_target' => 'rhel8',
90
+ 'profile_target' => 'centos8',
91
91
  'build_target' => 'centos8',
92
92
  'datastream' => 'ssg-centos8-ds.xml'
93
93
  }
@@ -299,8 +299,26 @@ module Simp::BeakerHelpers
299
299
  result_id = rule_result.attributes['idref'].value.to_s
300
300
  result_value = [
301
301
  'Title: ' + doc.xpath("//Rule[@id='#{result_id}']/title/text()").first.to_s,
302
- ' ID: ' + result_id
303
- ].join("\n")
302
+ ' ID: ' + result_id,
303
+ ]
304
+
305
+ if result.child.content == 'fail'
306
+ references = {}
307
+
308
+ doc.xpath("//Rule[@id='#{result_id}']/reference").each do |ref|
309
+ references[ref['href']] ||= []
310
+ references[ref['href']] << ref.text
311
+ end
312
+
313
+ result_value << ' References:'
314
+ references.each_pair do |src, items|
315
+ result_value << " * #{src}"
316
+ result_value << " * #{items.join(', ')}"
317
+ end
318
+ result_value << ' Description: ' + doc.xpath("//Rule[@id='#{result_id}']/description").text.gsub("\n","\n ")
319
+ end
320
+
321
+ result_value = result_value.join("\n")
304
322
 
305
323
  if result.child.content == 'fail'
306
324
  stats[:failed] << result_value.red
@@ -1,5 +1,5 @@
1
1
  module Simp; end
2
2
 
3
3
  module Simp::BeakerHelpers
4
- VERSION = '1.22.1'
4
+ VERSION = '1.23.0'
5
5
  end
@@ -24,7 +24,8 @@ Gem::Specification.new do |s|
24
24
  s.add_runtime_dependency 'beaker' , ['>= 4.17.0', '< 5.0.0']
25
25
  s.add_runtime_dependency 'beaker-rspec' , '~> 6.2'
26
26
  s.add_runtime_dependency 'beaker-puppet' , ['>= 1.18.14', '< 2.0.0']
27
- s.add_runtime_dependency 'beaker-docker' , '~> 0.3'
27
+ s.add_runtime_dependency 'beaker-docker' , ['>= 0.8.3', '< 2.0.0']
28
+ s.add_runtime_dependency 'docker-api' , ['>= 2.1.0', '< 3.0.0']
28
29
  s.add_runtime_dependency 'beaker-vagrant' , ['>= 0.6.4', '< 2.0.0']
29
30
  s.add_runtime_dependency 'beaker-puppet_install_helper', '~> 0.9'
30
31
  s.add_runtime_dependency 'highline' , '~> 2.0'
@@ -1,29 +1,53 @@
1
1
  HOSTS:
2
- el7:
2
+ el7.test.net:
3
3
  roles:
4
4
  - el7
5
5
  - master
6
- platform: el-7-x86_64
6
+ platform: el-7-x86_64
7
7
  hypervisor: docker
8
- image: simpproject/simp_build_centos7
9
- docker_cmd: '/usr/sbin/sshd -D -E /var/log/sshd.log'
8
+ image: simpproject/simp_beaker_el7
9
+ docker_cmd: '["/sbin/init"]'
10
10
 
11
- el8:
11
+ el8.test.net:
12
12
  roles:
13
13
  - el8
14
- platform: el-8-x86_64
14
+ platform: el-8-x86_64
15
15
  hypervisor: docker
16
- image: simpproject/simp_build_centos8
16
+ image: simpproject/simp_beaker_el8
17
17
  docker_cmd: '["/sbin/init"]'
18
18
 
19
19
  CONFIG:
20
- docker_preserve_image: true
21
20
  log_level: verbose
22
21
  type: aio
23
- <% if ENV['BEAKER_PUPPET_COLLECTION'] -%>
24
- puppet_collection: <%= ENV['BEAKER_PUPPET_COLLECTION'] %>
22
+ <% if ENV['BEAKER_PUPPET_ENVIRONMENT'] -%>
23
+ puppet_environment: <%= ENV['BEAKER_PUPPET_ENVIRONMENT'] %>
24
+ <% end -%>
25
+ # This is necessary for pretty much all containers
26
+ docker_cap_add:
27
+ - AUDIT_WRITE
28
+ <%
29
+ require 'docker-api'
30
+ unless ::Docker.podman?
31
+ -%>
32
+ # All items below this point are required for systemd
33
+ mount_folders:
34
+ cgroup:
35
+ host_path: /sys/fs/cgroup
36
+ container_path: /sys/fs/cgroup
37
+ opts: 'ro'
38
+ dockeropts:
39
+ HostConfig:
40
+ Tmpfs:
41
+ '/run': 'rw,noexec,nosuid,nodev,size=65536k'
42
+ '/run/lock': 'rw,noexec,nosuid,nodev,size=65536k'
43
+ '/tmp': 'rw,exec,nosuid,nodev,size=65536k'
44
+ '/sys/fs/cgroup/systemd': 'rw,size=65536k'
45
+ '/var/log/journal': 'rw,noexec,nodev,nosuid,size=65536k'
25
46
  <% end -%>
26
47
  ssh:
48
+ password: root
49
+ auth_methods:
50
+ - password
27
51
  keepalive: true
28
52
  keepalive_interval: 10
29
53
  host_key:
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simp-beaker-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.22.1
4
+ version: 1.23.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: 2021-03-01 00:00:00.000000000 Z
12
+ date: 2021-05-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: beaker
@@ -69,16 +69,42 @@ dependencies:
69
69
  name: beaker-docker
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 0.8.3
75
+ - - "<"
73
76
  - !ruby/object:Gem::Version
74
- version: '0.3'
77
+ version: 2.0.0
75
78
  type: :runtime
76
79
  prerelease: false
77
80
  version_requirements: !ruby/object:Gem::Requirement
78
81
  requirements:
79
- - - "~>"
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 0.8.3
85
+ - - "<"
86
+ - !ruby/object:Gem::Version
87
+ version: 2.0.0
88
+ - !ruby/object:Gem::Dependency
89
+ name: docker-api
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 2.1.0
95
+ - - "<"
96
+ - !ruby/object:Gem::Version
97
+ version: 3.0.0
98
+ type: :runtime
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.1.0
105
+ - - "<"
80
106
  - !ruby/object:Gem::Version
81
- version: '0.3'
107
+ version: 3.0.0
82
108
  - !ruby/object:Gem::Dependency
83
109
  name: beaker-vagrant
84
110
  requirement: !ruby/object:Gem::Requirement
@@ -163,6 +189,7 @@ extra_rdoc_files: []
163
189
  files:
164
190
  - ".fips_fixtures"
165
191
  - ".fixtures.yml"
192
+ - ".github/workflows.local.json"
166
193
  - ".github/workflows/pr_glci.yml"
167
194
  - ".github/workflows/pr_glci_cleanup.yml"
168
195
  - ".github/workflows/pr_glci_manual.yml"
@@ -241,38 +268,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
268
  version: '0'
242
269
  requirements: []
243
270
  rubyforge_project:
244
- rubygems_version: 2.7.10
271
+ rubygems_version: 2.7.6.3
245
272
  signing_key:
246
273
  specification_version: 4
247
274
  summary: beaker helper methods for SIMP
248
- test_files:
249
- - spec/acceptance/nodesets/default.yml
250
- - spec/acceptance/nodesets/docker.yml
251
- - spec/acceptance/nodesets/ubuntu.yml
252
- - spec/acceptance/suites/default/check_puppet_version_spec.rb
253
- - spec/acceptance/suites/default/enable_fips_spec.rb
254
- - spec/acceptance/suites/default/fixture_modules_spec.rb
255
- - spec/acceptance/suites/default/install_simp_deps_repo_spec.rb
256
- - spec/acceptance/suites/default/nodesets
257
- - spec/acceptance/suites/default/pki_tests_spec.rb
258
- - spec/acceptance/suites/default/set_hieradata_on_spec.rb
259
- - spec/acceptance/suites/default/write_hieradata_to_spec.rb
260
- - spec/acceptance/suites/fips_from_fixtures/00_default_spec.rb
261
- - spec/acceptance/suites/fips_from_fixtures/metadata.yml
262
- - spec/acceptance/suites/fips_from_fixtures/nodesets
263
- - spec/acceptance/suites/offline/00_default_spec.rb
264
- - spec/acceptance/suites/offline/README
265
- - spec/acceptance/suites/offline/nodesets/default.yml
266
- - spec/acceptance/suites/puppet_collections/00_default_spec.rb
267
- - spec/acceptance/suites/puppet_collections/metadata.yml
268
- - spec/acceptance/suites/snapshot/00_snapshot_test_spec.rb
269
- - spec/acceptance/suites/snapshot/10_general_usage_spec.rb
270
- - spec/acceptance/suites/snapshot/nodesets
271
- - spec/acceptance/suites/windows/00_default_spec.rb
272
- - spec/acceptance/suites/windows/metadata.yml
273
- - spec/acceptance/suites/windows/nodesets/default.yml
274
- - spec/acceptance/suites/windows/nodesets/win2016.yml
275
- - spec/acceptance/suites/windows/nodesets/win2019.yml
276
- - spec/lib/simp/beaker_helpers_spec.rb
277
- - spec/spec_helper.rb
278
- - spec/spec_helper_acceptance.rb
275
+ test_files: []