ood_packaging 0.0.4.r2.0 → 0.1.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: 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