ood_packaging 0.0.4.r2.0 → 0.1.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: bd3aeeb95678a5bbb1364254734c6fcb29b52f0d864edc0c0f6142e03a7e5165
4
- data.tar.gz: 6ffdfc8efbfb4b8cf1bd5ed7170203c40ed0a7b3f075a53a0d415bf945808b61
3
+ metadata.gz: 80fe80e20ad800efba449504ba04074ede51db0f0bb8c22b77995e28ecc9c350
4
+ data.tar.gz: f5199c57d54acd2c01ad3d50f28315141bbcb199271deec5af9049d790f362a9
5
5
  SHA512:
6
- metadata.gz: f72229076dfddf1dd90d3817a8bd07b4594c436bce2ba5bebf63a9f3705f8fe0aa62608d2095418339710c41d7654af3fa200e1af0baacc78758c1c8b4ff4436
7
- data.tar.gz: 710040bdbcf6ef1d765d0ae9b9afbb6798e38245b6e5e7e213fc8a94fc99cd7ef836fcf85b781f67c31813c133e80f7e07f93316eb4e44fae260d25268d57de3
6
+ metadata.gz: b9d32724c91dbe5d77b886eaaf318b109df6c38bdbb450da79de53fcfc80eb7cccefa7e9ef780b52d0369caa151014a2e21bd694f60345f9d27d24a0d4057cb2
7
+ data.tar.gz: 4a1e28f5c482a9714d4c9dfa272089833b67c87132fc3edd9786cd0494617221704553823f72e89e5d229bda6b483115a0f776c481a602442a2e1b9e3c045fe9
data/bin/ood_packaging CHANGED
@@ -2,9 +2,13 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'optparse'
5
- libdir = File.expand_path(File.join(__dir__, '../lib'))
6
- $LOAD_PATH.unshift(libdir) if Dir.exist?(libdir)
7
- require 'ood_packaging'
5
+ begin
6
+ require 'ood_packaging'
7
+ # If gem is not installed, load from location in git repo
8
+ rescue LoadError
9
+ $LOAD_PATH.unshift(File.expand_path(File.join(__dir__, '../lib')))
10
+ require 'ood_packaging'
11
+ end
8
12
 
9
13
  options = {}
10
14
  OptionParser.new do |opts|
@@ -94,8 +94,6 @@ class OodPackaging::Build
94
94
  def debian_dir
95
95
  @debian_dir ||= if Dir.exist?('/package/deb/debian')
96
96
  '/package/deb/debian'
97
- elsif Dir.exist?('/package/packaging/deb')
98
- '/package/packaging/deb'
99
97
  else
100
98
  '/package/debian'
101
99
  end
@@ -146,7 +144,6 @@ class OodPackaging::Build
146
144
  rpmbuild! if build_box.rpm?
147
145
  debuild! if build_box.deb?
148
146
  copy_output!
149
- show_output!
150
147
  gpg_sign! if build_box.rpm? && gpg_sign?
151
148
  sanity!
152
149
  end
@@ -222,7 +219,7 @@ class OodPackaging::Build
222
219
  puts "\tBootstrap debian build files".blue
223
220
  Dir.chdir(deb_work_dir) do
224
221
  sh "dh_make -s -y --createorig -f ../#{deb_name}.tar.gz#{cmd_suffix} || true"
225
- sh "dch -b -v #{deb_version} --controlmaint 'Release #{deb_version}'#{cmd_suffix}"
222
+ sh "dch -b -v #{deb_version} 'Release #{deb_version}'#{cmd_suffix}"
226
223
  end
227
224
  end
228
225
 
@@ -248,14 +245,9 @@ class OodPackaging::Build
248
245
 
249
246
  def install_deb_dependencies!
250
247
  sh "sudo apt update -y#{cmd_suffix}"
251
- tool = [
252
- 'DEBIAN_FRONTEND=noninteractive apt-cudf-get --solver aspcud',
253
- '-o APT::Get::Assume-Yes=1 -o APT::Get::Allow-Downgrades=1',
254
- '-o Debug::pkgProblemResolver=0 -o APT::Install-Recommends=0'
255
- ]
256
248
  cmd = [
257
249
  'mk-build-deps --install --remove --root-cmd sudo',
258
- "--tool='#{tool.join(' ')}'"
250
+ "--tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes'"
259
251
  ]
260
252
  Dir.chdir(deb_work_dir) do
261
253
  sh "#{cmd.join(' ')}#{cmd_suffix}"
@@ -294,13 +286,6 @@ class OodPackaging::Build
294
286
  end
295
287
  end
296
288
 
297
- def show_output!
298
- puts '== Copied output =='.blue
299
- Dir["#{output_dir}/*"].each do |f|
300
- puts "\tSaved output #{f}".blue
301
- end
302
- end
303
-
304
289
  def gpg_sign!
305
290
  puts '== GPG sign RPMs =='.blue
306
291
  rpms.each do |rpm|
@@ -2,35 +2,32 @@ FROM <%= base_image %>
2
2
  MAINTAINER Trey Dockendorf <tdockendorf@osc.edu>
3
3
  ENV LANG=en_US.UTF-8
4
4
  ENV LC_CTYPE=en_US.UTF-8
5
- ENV USER=<%= ctr_user %>
6
5
  ENV GEM_PATH=<%= ctr_gems_dir %>:
7
- <% if scl? -%>
6
+ <% if dist == 'el7' -%>
8
7
  RUN yum update -y && yum clean all && rm -rf /var/cache/yum/*
9
8
  RUN yum install -y yum-utils epel-release centos-release-scl && yum clean all && rm -rf /var/cache/yum/*
10
9
  RUN yum install -y <%= scl_ruby %>-ruby sudo which wget @buildsys-build \
11
10
  rpm-build rpmdevtools rpm-sign scl-utils-build && \
12
11
  yum clean all && rm -rf /var/cache/yum/*
13
- RUN rm -f /etc/yum.repos.d/CentOS-Vault.repo /etc/yum.repos.d/CentOS-Sources.repo
14
- RUN head -n 13 /etc/yum.repos.d/CentOS-SCLo-scl.repo > /etc/yum.repos.d/CentOS-SCLo.repo
15
- RUN head -n 13 /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo >> /etc/yum.repos.d/CentOS-SCLo.repo
16
- RUN rm -f /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo /etc/yum.repos.d/CentOS-SCLo-scl.repo
17
- <% elsif dnf? -%>
12
+ <% elsif dist =~ /^el/ -%>
18
13
  RUN dnf update -y && dnf clean all && rm -rf /var/cache/dnf/*
19
14
  RUN dnf install -y dnf-utils epel-release langpacks-en glibc-all-langpacks && dnf clean all && rm -rf /var/cache/dnf/*
20
15
  RUN dnf config-manager --set-enabled powertools && dnf clean all && rm -rf /var/cache/dnf/*
21
- RUN dnf module enable -y ruby:<%= ruby_version %> nodejs:<%= nodejs_version %> && dnf clean all && rm -rf /var/cache/dnf/*
22
- RUN dnf install -y systemd ruby nodejs sudo which wget \
16
+ RUN dnf module enable -y ruby:<%= ruby_version %> && dnf clean all && rm -rf /var/cache/dnf/*
17
+ RUN dnf module enable -y nodejs:<%= nodejs_version %> && dnf clean all && rm -rf /var/cache/dnf/*
18
+ RUN dnf install -y ruby sudo which wget \
23
19
  gcc-c++ gcc make patch \
24
20
  rpm-build rpmdevtools rpm-sign scl-utils-build && \
25
21
  dnf clean all && rm -rf /var/cache/dnf/*
26
- <% elsif deb? -%>
22
+ <% elsif dist =~ /^ubuntu|debian/ -%>
27
23
  ENV DEBIAN_FRONTEND=noninteractive
28
24
  RUN apt update -y && apt upgrade -y && apt clean all -y
29
25
  RUN apt update -y && apt install -y locales && locale-gen $LANG && \
30
26
  apt clean all -y
31
27
  RUN apt update -y && apt install -y apt-transport-https ca-certificates \
32
- init debhelper devscripts dh-make build-essential apt-cudf lintian equivs \
33
- sudo rake wget curl ruby bundler && \
28
+ init debhelper devscripts dh-make build-essential lintian equivs \
29
+ sudo rake wget curl ruby && \
30
+ ln -snf /bin/bundle2.7 /bin/bundle && \
34
31
  apt clean all -y
35
32
  RUN echo "deb https://deb.nodesource.com/node_<%= nodejs_version %>.x <%= codename %> main" > /etc/apt/sources.list.d/nodesource.list
36
33
  RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor > /etc/apt/trusted.gpg.d/nodesource.gpg
@@ -72,7 +72,7 @@ echo "allow-loopback-pinentry" >> <%= ctr_gpg_dir %>/gpg-agent.conf
72
72
  <%- end -%>
73
73
 
74
74
  header "Install ood_packaging gem"
75
- <%- if scl? -%>
75
+ <%- if rpm? && !dnf? -%>
76
76
  run scl enable <%= scl_ruby %> -- gem install --no-doc --bindir <%= ctr_scripts_dir %> --install-dir <%= ctr_gems_dir %> /build/*.gem
77
77
  <%- else -%>
78
78
  run gem install --no-doc --bindir <%= ctr_scripts_dir %> --install-dir <%= ctr_gems_dir %> /build/*.gem
@@ -12,12 +12,10 @@ class OodPackaging::BuildBox
12
12
  BASE_IMAGES = {
13
13
  'el7' => 'centos:7',
14
14
  'el8' => 'rockylinux/rockylinux:8',
15
- 'ubuntu-18.04' => 'ubuntu:18.04',
16
15
  'ubuntu-20.04' => 'ubuntu:20.04'
17
16
  }.freeze
18
17
 
19
18
  CODENAMES = {
20
- 'ubuntu-18.04' => 'bionic',
21
19
  'ubuntu-20.04' => 'focal'
22
20
  }.freeze
23
21
 
@@ -135,10 +133,6 @@ class OodPackaging::BuildBox
135
133
  sh [container_runtime, 'push', image_tag].join(' ')
136
134
  end
137
135
 
138
- def pull!
139
- sh [container_runtime, 'pull', image_tag].join(' ')
140
- end
141
-
142
136
  def save!(path)
143
137
  sh [container_runtime, 'save', image_tag, '| gzip >', path].join(' ')
144
138
  end
@@ -21,6 +21,8 @@ class OodPackaging::Package
21
21
  @config = config
22
22
  @config[:dist] = 'el8' if tar_only?
23
23
  @build_box = OodPackaging::BuildBox.new(config)
24
+ @clean_work_dir = config[:clean_work_dir].nil? ? true : config[:clean_work_dir]
25
+ @clean_output_dir = config[:clean_output_dir].nil? ? true : config[:clean_output_dir]
24
26
  raise ArgumentError, 'Package is required' if package.nil?
25
27
  raise ArgumentError, 'Version is required' if version.nil?
26
28
  raise ArgumentError, "Package #{package} is not a directory" unless Dir.exist?(package)
@@ -31,18 +33,12 @@ class OodPackaging::Package
31
33
  @container_name ||= SecureRandom.uuid
32
34
  end
33
35
 
34
- def debug?
36
+ def debug
35
37
  return true if ENV['OOD_PACKAGING_DEBUG'] == 'true'
36
38
 
37
39
  @config[:debug].nil? ? false : @config[:debug]
38
40
  end
39
41
 
40
- def cmd_suffix
41
- return '' if debug?
42
-
43
- ' 2>/dev/null 1>/dev/null'
44
- end
45
-
46
42
  def attach?
47
43
  return true if ENV['OOD_PACKAGING_ATTACH'] == 'true'
48
44
 
@@ -53,22 +49,10 @@ class OodPackaging::Package
53
49
  @work_dir ||= File.expand_path(@config[:work_dir])
54
50
  end
55
51
 
56
- def clean_work_dir
57
- return false if ENV['OOD_PACKAGING_CLEAN_WORK_DIR'] == 'false'
58
-
59
- @config[:clean_work_dir].nil? ? true : @config[:clean_work_dir]
60
- end
61
-
62
52
  def output_dir
63
53
  @output_dir ||= File.expand_path(@config[:output_dir])
64
54
  end
65
55
 
66
- def clean_output_dir
67
- return false if ENV['OOD_PACKAGING_CLEAN_OUTPUT_DIR'] == 'false'
68
-
69
- @config[:clean_output_dir].nil? ? true : @config[:clean_output_dir]
70
- end
71
-
72
56
  def package
73
57
  @config[:package]
74
58
  end
@@ -106,6 +90,8 @@ class OodPackaging::Package
106
90
 
107
91
  def gpg_files
108
92
  [
93
+ OpenStruct.new(private_key: File.join(proj_root, 'ondemand.sec'), passphrase: File.join(proj_root, '.gpgpass')),
94
+ OpenStruct.new(private_key: File.join(package, 'ondemand.sec'), passphrase: File.join(package, '.gpgpass')),
109
95
  OpenStruct.new(private_key: @config[:gpg_private_key], passphrase: @config[:gpg_passphrase]),
110
96
  OpenStruct.new(private_key: ENV['OOD_PACKAGING_GPG_PRIVATE_KEY'],
111
97
  passphrase: ENV['OOD_PACKAGING_GPG_PASSPHRASE'])
@@ -123,12 +109,8 @@ class OodPackaging::Package
123
109
  !gpg_files.nil?
124
110
  end
125
111
 
126
- def default_gpg_name
127
- 'OnDemand Release Signing Key'
128
- end
129
-
130
112
  def gpg_name
131
- @config[:gpg_name].nil? ? default_gpg_name : @config[:gpg_name]
113
+ @config[:gpg_name].nil? ? 'OnDemand Release Signing Key' : @config[:gpg_name]
132
114
  end
133
115
 
134
116
  def container_init
@@ -192,7 +174,7 @@ class OodPackaging::Package
192
174
  cmd.concat exec_launchers if docker_runtime?
193
175
  cmd.concat ['scl', 'enable', scl_ruby, '--'] if podman_runtime? && build_box.scl?
194
176
  cmd.concat [File.join(ctr_scripts_dir, 'rake')]
195
- cmd.concat ['-q'] unless debug?
177
+ cmd.concat ['-q'] unless debug
196
178
  cmd.concat ['-f', File.join(ctr_scripts_dir, 'Rakefile'), 'ood_packaging:package:build']
197
179
  cmd
198
180
  end
@@ -218,13 +200,13 @@ class OodPackaging::Package
218
200
  end
219
201
 
220
202
  def clean!
221
- sh "rm -rf #{work_dir}", verbose: debug? if clean_work_dir
222
- sh "rm -rf #{output_dir}", verbose: debug? if clean_output_dir
203
+ sh "rm -rf #{work_dir}", verbose: debug if @clean_work_dir
204
+ sh "rm -rf #{output_dir}", verbose: debug if @clean_output_dir
223
205
  end
224
206
 
225
207
  def bootstrap!
226
- sh "mkdir -p #{work_dir}", verbose: debug?
227
- sh "mkdir -p #{output_dir}", verbose: debug?
208
+ sh "mkdir -p #{work_dir}", verbose: debug
209
+ sh "mkdir -p #{output_dir}", verbose: debug
228
210
  end
229
211
 
230
212
  def tar!
@@ -242,7 +224,7 @@ class OodPackaging::Package
242
224
  sh "rm #{tar_file}" if File.exist?(tar_file)
243
225
  puts "Create tar archive #{tar_file}".blue
244
226
  Dir.chdir(tar_path) do
245
- sh cmd.join(' '), verbose: debug?
227
+ sh cmd.join(' '), verbose: debug
246
228
  end
247
229
  end
248
230
 
@@ -256,19 +238,19 @@ class OodPackaging::Package
256
238
  tar! if tar?
257
239
  container_start!
258
240
  container_exec!(exec_rake)
259
- puts "Build SUCCESS: package=#{package} dist=#{build_box.dist}".green
260
241
  rescue RuntimeError
242
+ # ret = 1
261
243
  puts "Build FAILED package=#{package} dist=#{build_box.dist}".red
262
244
  raise
245
+ else
246
+ puts "Build SUCCESS: package=#{package} dist=#{build_box.dist}".green
263
247
  ensure
264
- container_attach! if attach?
265
- container_kill! if container_running? && !attach?
248
+ container_exec!(exec_attach, ['-i', '-t']) if attach?
249
+ container_kill! if container_running?
266
250
  end
267
251
 
268
252
  def container_running?
269
- cmd = "#{container_runtime} inspect #{container_name} 2>/dev/null 1>/dev/null"
270
- puts cmd if debug?
271
- `#{cmd}`
253
+ `#{container_runtime} inspect #{container_name} 2>/dev/null 1>/dev/null`
272
254
  $CHILD_STATUS.success?
273
255
  end
274
256
 
@@ -279,9 +261,9 @@ class OodPackaging::Package
279
261
  cmd.concat container_mounts
280
262
  cmd.concat [build_box.image_tag]
281
263
  cmd.concat [container_init]
282
- cmd.concat ['1>/dev/null'] unless debug?
264
+ cmd.concat ['1>/dev/null'] unless debug
283
265
  puts "Starting container #{container_name} using image #{build_box.image_tag}".blue
284
- sh cmd.join(' '), verbose: debug?
266
+ sh cmd.join(' '), verbose: debug
285
267
  end
286
268
 
287
269
  def container_exec!(exec_cmd, extra_args = [])
@@ -293,24 +275,14 @@ class OodPackaging::Package
293
275
  cmd.concat [container_name]
294
276
  cmd.concat exec_cmd
295
277
  puts "Build STARTED: package=#{package} dist=#{build_box.dist} exec=#{exec_cmd[-1]}".blue
296
- sh cmd.join(' '), verbose: debug?
297
- true
298
- rescue RuntimeError
299
- container_kill! if container_running? && !attach?
300
- raise
301
- end
302
-
303
- def container_attach!
304
- container_exec!(exec_attach, ['-i', '-t']) if attach?
305
- ensure
306
- container_kill! if container_running?
278
+ sh cmd.join(' '), verbose: debug
307
279
  end
308
280
 
309
281
  def container_kill!
310
282
  puts "Killing container #{container_name}".blue
311
283
  cmd = [container_runtime, 'kill', container_name]
312
- cmd.concat [cmd_suffix] unless debug?
313
- sh cmd.join(' '), verbose: debug?
284
+ cmd.concat ['1>/dev/null', '2>/dev/null'] unless debug
285
+ sh cmd.join(' '), verbose: debug
314
286
  end
315
287
 
316
288
  def container_env
@@ -324,7 +296,7 @@ class OodPackaging::Package
324
296
  'SKIP_DOWNLOAD' => @config[:skip_download],
325
297
  'OOD_UID' => Process.uid,
326
298
  'OOD_GID' => Process.gid,
327
- 'DEBUG' => debug?
299
+ 'DEBUG' => debug
328
300
  }
329
301
  env['GPG_PUBKEY'] = '/gpg.pub' if @config[:gpg_pubkey]
330
302
  env
@@ -28,12 +28,6 @@ namespace :ood_packaging do
28
28
  @build_box.push!
29
29
  end
30
30
 
31
- desc 'Pull buildbox image'
32
- task :pull, [:dist] do |_task, args|
33
- @build_box = OodPackaging::BuildBox.new(args)
34
- @build_box.pull!
35
- end
36
-
37
31
  desc 'Save buildbox image'
38
32
  task :save, [:dist, :path] do |_task, args|
39
33
  @build_box = OodPackaging::BuildBox.new(args)
@@ -50,9 +44,8 @@ namespace :ood_packaging do
50
44
  OodPackaging::RakeTask.new(:internal, [:package, :dist]) do |t, args|
51
45
  name = args[:package].split(':').last
52
46
  t.package = File.join(proj_root, 'packages', name)
53
- dist = args[:dist] || ENV['OOD_PACKAGING_DIST']
54
- t.dist = dist
55
- t.version = OodPackaging.package_version(name, dist)
47
+ t.dist = args[:dist] || ENV['OOD_PACKAGING_DIST']
48
+ t.version = OodPackaging.package_version(name, args[:dist])
56
49
  t.work_dir = File.join(proj_root, 'tmp/work')
57
50
  t.output_dir = File.join(proj_root, 'tmp/output')
58
51
  end
@@ -55,7 +55,7 @@ module OodPackaging::Utils
55
55
  end
56
56
 
57
57
  def ondemand_repo_version
58
- '2.0'
58
+ '2.1'
59
59
  end
60
60
 
61
61
  def ruby_version
@@ -2,25 +2,25 @@
2
2
 
3
3
  # Version code for OodPackaging
4
4
  module OodPackaging
5
- VERSION = '0.0.4.r2.0'
5
+ VERSION = '0.1.0'
6
6
  PACKAGE_VERSION = {
7
7
  'ondemand-release' => {
8
- '(ubuntu|debian)' => '2.0.1',
9
- 'default' => '2.0'
8
+ '(ubuntu|debian)' => '2.1.0',
9
+ 'default' => '2.1'
10
10
  },
11
11
  'ondemand-release-latest' => {
12
12
  '(ubuntu|debian)' => '1',
13
- 'default' => '1-7'
13
+ 'default' => '1-6'
14
14
  },
15
- 'ondemand-runtime' => '2.0-3',
16
- 'passenger' => '6.0.14',
15
+ 'ondemand-runtime' => '2.1',
16
+ 'passenger' => '6.0.11',
17
17
  'cjose' => '0.6.1',
18
18
  'mod_auth_openidc' => '2.4.5',
19
19
  'sqlite' => '3.26.0-4',
20
20
  'ondemand_exporter' => '0.9.0',
21
21
  'ondemand-compute' => {
22
- '(ubuntu|debian)' => '2.0',
23
- 'default' => '2.0'
22
+ '(ubuntu|debian)' => '2.1.0',
23
+ 'default' => '2.1'
24
24
  },
25
25
  'python-websockify' => '0.8.0',
26
26
  'turbovnc' => '2.2.5'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ood_packaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.r2.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trey Dockendorf
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-10-03 00:00:00.000000000 Z
12
+ date: 2021-12-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -109,11 +109,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
109
  version: 2.2.0
110
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - ">"
112
+ - - ">="
113
113
  - !ruby/object:Gem::Version
114
- version: 1.3.1
114
+ version: '0'
115
115
  requirements: []
116
- rubygems_version: 3.2.33
116
+ rubygems_version: 3.1.2
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: Open OnDemand packaging library