simp-beaker-helpers 1.22.1 → 1.23.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 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: []