ood_packaging 0.0.1.rc.8 → 0.0.2.r2.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: 35313ff05abd30a1fe0a89b1b3ea039b243b8dd79fff3abf2fd10b5e4303da34
4
- data.tar.gz: f53282cdb17c0f842b670d0880bec8fa835256e2b4a5d7360c9b4e735a8d28e5
3
+ metadata.gz: 9a6b3566973d14a67793306517648074a14a90e485adb9e16c150477f0622875
4
+ data.tar.gz: 1b24618f2a5ae46c8a39e759e2cae1ae9b06f439f774de56dbd084832331b1b8
5
5
  SHA512:
6
- metadata.gz: 610ae49708662da55f861cfc24ebc27859be6a633521fe12c6d5ab531f36346c06267af0a179be729c47cb0e6cc1047eb5cc80fe78dba9bf6935528d4ad976fe
7
- data.tar.gz: 6127553b6a531b8b9febc6a14c8eaacf1c6c720859b81a7df7361f278a369c395c26d6057ff05aa2bb1ef51519bf2a6aea55c47affd67740dcbffc4ac667d65b
6
+ metadata.gz: 1be5dc8f3a13ffc3eeeb496ed6b700ac92a78b8d84861225a01f3343b11ba6387b389794af9ceda44b7ea80b22dc364c21780d8578a1d770984165028ca4c25f
7
+ data.tar.gz: 47a5e5315cd46df79c3500b8c5f118217ad25303a5189c2b0b4be6de71691db00d7369766b20c95bbc12eaa35c09fb4c6d47c671252372098afa770fd5d345fa
data/bin/ood_packaging CHANGED
@@ -2,13 +2,9 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'optparse'
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
5
+ libdir = File.expand_path(File.join(__dir__, '../lib'))
6
+ $LOAD_PATH.unshift(libdir) if Dir.exist?(libdir)
7
+ require 'ood_packaging'
12
8
 
13
9
  options = {}
14
10
  OptionParser.new do |opts|
@@ -94,6 +94,8 @@ 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'
97
99
  else
98
100
  '/package/debian'
99
101
  end
@@ -144,6 +146,7 @@ class OodPackaging::Build
144
146
  rpmbuild! if build_box.rpm?
145
147
  debuild! if build_box.deb?
146
148
  copy_output!
149
+ show_output!
147
150
  gpg_sign! if build_box.rpm? && gpg_sign?
148
151
  sanity!
149
152
  end
@@ -219,7 +222,7 @@ class OodPackaging::Build
219
222
  puts "\tBootstrap debian build files".blue
220
223
  Dir.chdir(deb_work_dir) do
221
224
  sh "dh_make -s -y --createorig -f ../#{deb_name}.tar.gz#{cmd_suffix} || true"
222
- sh "dch -b -v #{deb_version} 'Release #{deb_version}'#{cmd_suffix}"
225
+ sh "dch -b -v #{deb_version} --controlmaint 'Release #{deb_version}'#{cmd_suffix}"
223
226
  end
224
227
  end
225
228
 
@@ -245,9 +248,14 @@ class OodPackaging::Build
245
248
 
246
249
  def install_deb_dependencies!
247
250
  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
+ ]
248
256
  cmd = [
249
257
  'mk-build-deps --install --remove --root-cmd sudo',
250
- "--tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes'"
258
+ "--tool='#{tool.join(' ')}'"
251
259
  ]
252
260
  Dir.chdir(deb_work_dir) do
253
261
  sh "#{cmd.join(' ')}#{cmd_suffix}"
@@ -286,6 +294,13 @@ class OodPackaging::Build
286
294
  end
287
295
  end
288
296
 
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
+
289
304
  def gpg_sign!
290
305
  puts '== GPG sign RPMs =='.blue
291
306
  rpms.each do |rpm|
@@ -2,32 +2,35 @@ 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 %>
5
6
  ENV GEM_PATH=<%= ctr_gems_dir %>:
6
- <% if dist == 'el7' -%>
7
+ <% if scl? -%>
7
8
  RUN yum update -y && yum clean all && rm -rf /var/cache/yum/*
8
9
  RUN yum install -y yum-utils epel-release centos-release-scl && yum clean all && rm -rf /var/cache/yum/*
9
10
  RUN yum install -y <%= scl_ruby %>-ruby sudo which wget @buildsys-build \
10
11
  rpm-build rpmdevtools rpm-sign scl-utils-build && \
11
12
  yum clean all && rm -rf /var/cache/yum/*
12
- <% elsif dist =~ /^el/ -%>
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? -%>
13
18
  RUN dnf update -y && dnf clean all && rm -rf /var/cache/dnf/*
14
19
  RUN dnf install -y dnf-utils epel-release langpacks-en glibc-all-langpacks && dnf clean all && rm -rf /var/cache/dnf/*
15
20
  RUN dnf config-manager --set-enabled powertools && dnf clean all && rm -rf /var/cache/dnf/*
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 \
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 \
19
23
  gcc-c++ gcc make patch \
20
24
  rpm-build rpmdevtools rpm-sign scl-utils-build && \
21
25
  dnf clean all && rm -rf /var/cache/dnf/*
22
- <% elsif dist =~ /^ubuntu|debian/ -%>
26
+ <% elsif deb? -%>
23
27
  ENV DEBIAN_FRONTEND=noninteractive
24
28
  RUN apt update -y && apt upgrade -y && apt clean all -y
25
29
  RUN apt update -y && apt install -y locales && locale-gen $LANG && \
26
30
  apt clean all -y
27
31
  RUN apt update -y && apt install -y apt-transport-https ca-certificates \
28
- init debhelper devscripts dh-make build-essential lintian equivs \
29
- sudo rake wget curl ruby && \
30
- ln -snf /bin/bundle2.7 /bin/bundle && \
32
+ init debhelper devscripts dh-make build-essential apt-cudf lintian equivs \
33
+ sudo rake wget curl ruby bundler && \
31
34
  apt clean all -y
32
35
  RUN echo "deb https://deb.nodesource.com/node_<%= nodejs_version %>.x <%= codename %> main" > /etc/apt/sources.list.d/nodesource.list
33
36
  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 rpm? && !dnf? -%>
75
+ <%- if scl? -%>
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
@@ -133,6 +133,10 @@ class OodPackaging::BuildBox
133
133
  sh [container_runtime, 'push', image_tag].join(' ')
134
134
  end
135
135
 
136
+ def pull!
137
+ sh [container_runtime, 'pull', image_tag].join(' ')
138
+ end
139
+
136
140
  def save!(path)
137
141
  sh [container_runtime, 'save', image_tag, '| gzip >', path].join(' ')
138
142
  end
@@ -21,8 +21,6 @@ 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]
26
24
  raise ArgumentError, 'Package is required' if package.nil?
27
25
  raise ArgumentError, 'Version is required' if version.nil?
28
26
  raise ArgumentError, "Package #{package} is not a directory" unless Dir.exist?(package)
@@ -33,12 +31,18 @@ class OodPackaging::Package
33
31
  @container_name ||= SecureRandom.uuid
34
32
  end
35
33
 
36
- def debug
34
+ def debug?
37
35
  return true if ENV['OOD_PACKAGING_DEBUG'] == 'true'
38
36
 
39
37
  @config[:debug].nil? ? false : @config[:debug]
40
38
  end
41
39
 
40
+ def cmd_suffix
41
+ return '' if debug?
42
+
43
+ ' 2>/dev/null 1>/dev/null'
44
+ end
45
+
42
46
  def attach?
43
47
  return true if ENV['OOD_PACKAGING_ATTACH'] == 'true'
44
48
 
@@ -49,10 +53,22 @@ class OodPackaging::Package
49
53
  @work_dir ||= File.expand_path(@config[:work_dir])
50
54
  end
51
55
 
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
+
52
62
  def output_dir
53
63
  @output_dir ||= File.expand_path(@config[:output_dir])
54
64
  end
55
65
 
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
+
56
72
  def package
57
73
  @config[:package]
58
74
  end
@@ -90,8 +106,6 @@ class OodPackaging::Package
90
106
 
91
107
  def gpg_files
92
108
  [
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')),
95
109
  OpenStruct.new(private_key: @config[:gpg_private_key], passphrase: @config[:gpg_passphrase]),
96
110
  OpenStruct.new(private_key: ENV['OOD_PACKAGING_GPG_PRIVATE_KEY'],
97
111
  passphrase: ENV['OOD_PACKAGING_GPG_PASSPHRASE'])
@@ -109,8 +123,12 @@ class OodPackaging::Package
109
123
  !gpg_files.nil?
110
124
  end
111
125
 
126
+ def default_gpg_name
127
+ 'OnDemand Release Signing Key'
128
+ end
129
+
112
130
  def gpg_name
113
- @config[:gpg_name].nil? ? 'OnDemand Release Signing Key' : @config[:gpg_name]
131
+ @config[:gpg_name].nil? ? default_gpg_name : @config[:gpg_name]
114
132
  end
115
133
 
116
134
  def container_init
@@ -174,7 +192,7 @@ class OodPackaging::Package
174
192
  cmd.concat exec_launchers if docker_runtime?
175
193
  cmd.concat ['scl', 'enable', scl_ruby, '--'] if podman_runtime? && build_box.scl?
176
194
  cmd.concat [File.join(ctr_scripts_dir, 'rake')]
177
- cmd.concat ['-q'] unless debug
195
+ cmd.concat ['-q'] unless debug?
178
196
  cmd.concat ['-f', File.join(ctr_scripts_dir, 'Rakefile'), 'ood_packaging:package:build']
179
197
  cmd
180
198
  end
@@ -200,13 +218,13 @@ class OodPackaging::Package
200
218
  end
201
219
 
202
220
  def clean!
203
- sh "rm -rf #{work_dir}", verbose: debug if @clean_work_dir
204
- sh "rm -rf #{output_dir}", verbose: debug if @clean_output_dir
221
+ sh "rm -rf #{work_dir}", verbose: debug? if clean_work_dir
222
+ sh "rm -rf #{output_dir}", verbose: debug? if clean_output_dir
205
223
  end
206
224
 
207
225
  def bootstrap!
208
- sh "mkdir -p #{work_dir}", verbose: debug
209
- sh "mkdir -p #{output_dir}", verbose: debug
226
+ sh "mkdir -p #{work_dir}", verbose: debug?
227
+ sh "mkdir -p #{output_dir}", verbose: debug?
210
228
  end
211
229
 
212
230
  def tar!
@@ -224,7 +242,7 @@ class OodPackaging::Package
224
242
  sh "rm #{tar_file}" if File.exist?(tar_file)
225
243
  puts "Create tar archive #{tar_file}".blue
226
244
  Dir.chdir(tar_path) do
227
- sh cmd.join(' '), verbose: debug
245
+ sh cmd.join(' '), verbose: debug?
228
246
  end
229
247
  end
230
248
 
@@ -238,19 +256,19 @@ class OodPackaging::Package
238
256
  tar! if tar?
239
257
  container_start!
240
258
  container_exec!(exec_rake)
259
+ puts "Build SUCCESS: package=#{package} dist=#{build_box.dist}".green
241
260
  rescue RuntimeError
242
- # ret = 1
243
261
  puts "Build FAILED package=#{package} dist=#{build_box.dist}".red
244
262
  raise
245
- else
246
- puts "Build SUCCESS: package=#{package} dist=#{build_box.dist}".green
247
263
  ensure
248
264
  container_exec!(exec_attach, ['-i', '-t']) if attach?
249
- container_kill! if container_running?
265
+ container_kill! if container_running? && !attach?
250
266
  end
251
267
 
252
268
  def container_running?
253
- `#{container_runtime} inspect #{container_name} 2>/dev/null 1>/dev/null`
269
+ cmd = "#{container_runtime} inspect #{container_name} 2>/dev/null 1>/dev/null"
270
+ puts cmd if debug?
271
+ `#{cmd}`
254
272
  $CHILD_STATUS.success?
255
273
  end
256
274
 
@@ -261,9 +279,9 @@ class OodPackaging::Package
261
279
  cmd.concat container_mounts
262
280
  cmd.concat [build_box.image_tag]
263
281
  cmd.concat [container_init]
264
- cmd.concat ['1>/dev/null'] unless debug
282
+ cmd.concat ['1>/dev/null'] unless debug?
265
283
  puts "Starting container #{container_name} using image #{build_box.image_tag}".blue
266
- sh cmd.join(' '), verbose: debug
284
+ sh cmd.join(' '), verbose: debug?
267
285
  end
268
286
 
269
287
  def container_exec!(exec_cmd, extra_args = [])
@@ -275,14 +293,18 @@ class OodPackaging::Package
275
293
  cmd.concat [container_name]
276
294
  cmd.concat exec_cmd
277
295
  puts "Build STARTED: package=#{package} dist=#{build_box.dist} exec=#{exec_cmd[-1]}".blue
278
- sh cmd.join(' '), verbose: debug
296
+ sh cmd.join(' '), verbose: debug?
297
+ true
298
+ rescue RuntimeError
299
+ container_kill! if container_running? && !attach?
300
+ raise
279
301
  end
280
302
 
281
303
  def container_kill!
282
304
  puts "Killing container #{container_name}".blue
283
305
  cmd = [container_runtime, 'kill', container_name]
284
- cmd.concat ['1>/dev/null', '2>/dev/null'] unless debug
285
- sh cmd.join(' '), verbose: debug
306
+ cmd.concat [cmd_suffix] unless debug?
307
+ sh cmd.join(' '), verbose: debug?
286
308
  end
287
309
 
288
310
  def container_env
@@ -296,7 +318,7 @@ class OodPackaging::Package
296
318
  'SKIP_DOWNLOAD' => @config[:skip_download],
297
319
  'OOD_UID' => Process.uid,
298
320
  'OOD_GID' => Process.gid,
299
- 'DEBUG' => debug
321
+ 'DEBUG' => debug?
300
322
  }
301
323
  env['GPG_PUBKEY'] = '/gpg.pub' if @config[:gpg_pubkey]
302
324
  env
@@ -28,6 +28,12 @@ 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
+
31
37
  desc 'Save buildbox image'
32
38
  task :save, [:dist, :path] do |_task, args|
33
39
  @build_box = OodPackaging::BuildBox.new(args)
@@ -44,8 +50,9 @@ namespace :ood_packaging do
44
50
  OodPackaging::RakeTask.new(:internal, [:package, :dist]) do |t, args|
45
51
  name = args[:package].split(':').last
46
52
  t.package = File.join(proj_root, 'packages', name)
47
- t.dist = args[:dist] || ENV['OOD_PACKAGING_DIST']
48
- t.version = OodPackaging.package_version(name, args[:dist])
53
+ dist = args[:dist] || ENV['OOD_PACKAGING_DIST']
54
+ t.dist = dist
55
+ t.version = OodPackaging.package_version(name, dist)
49
56
  t.work_dir = File.join(proj_root, 'tmp/work')
50
57
  t.output_dir = File.join(proj_root, 'tmp/output')
51
58
  end
@@ -55,7 +55,7 @@ module OodPackaging::Utils
55
55
  end
56
56
 
57
57
  def ondemand_repo_version
58
- '2.1'
58
+ '2.0'
59
59
  end
60
60
 
61
61
  def ruby_version
@@ -67,7 +67,7 @@ module OodPackaging::Utils
67
67
  end
68
68
 
69
69
  def nodejs_version
70
- '14'
70
+ '12'
71
71
  end
72
72
 
73
73
  def ctr_scripts_dir
@@ -2,25 +2,25 @@
2
2
 
3
3
  # Version code for OodPackaging
4
4
  module OodPackaging
5
- VERSION = '0.0.1.rc.8'
5
+ VERSION = '0.0.2.r2.0'
6
6
  PACKAGE_VERSION = {
7
7
  'ondemand-release' => {
8
- '(ubuntu|debian)' => '2.1.0',
9
- 'default' => '2.1'
8
+ '(ubuntu|debian)' => '2.0.0',
9
+ 'default' => '2.0'
10
10
  },
11
11
  'ondemand-release-latest' => {
12
12
  '(ubuntu|debian)' => '1',
13
- 'default' => '1-6'
13
+ 'default' => '1-7'
14
14
  },
15
- 'ondemand-runtime' => '2.1',
16
- 'passenger' => '6.0.11',
15
+ 'ondemand-runtime' => '2.0-2',
16
+ 'passenger' => '6.0.14',
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.1.0',
23
- 'default' => '2.1'
22
+ '(ubuntu|debian)' => '2.0',
23
+ 'default' => '2.0'
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.1.rc.8
4
+ version: 0.0.2.r2.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: 2021-12-23 00:00:00.000000000 Z
12
+ date: 2022-07-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  - !ruby/object:Gem::Version
114
114
  version: 1.3.1
115
115
  requirements: []
116
- rubygems_version: 3.1.2
116
+ rubygems_version: 3.2.33
117
117
  signing_key:
118
118
  specification_version: 4
119
119
  summary: Open OnDemand packaging library