ood_packaging 0.8.0 → 0.9.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: d301aee2821f7e83dbf3caf625871a3d8d938e5280ce8cdf092257dbd764d5f7
4
- data.tar.gz: fe564b821d0cc7c8a5a094f4b110aee8c5e0a4ebf5d073cb8bd93cdc88ded585
3
+ metadata.gz: 8d66aca5d9123c4952b9a2842fdc3c63aed8e566bf7f5e9569ce197bccbd3eaf
4
+ data.tar.gz: bb3382c9d597c60585aa35eb6305005e447e02c558b5a30ccc78bee625291c4a
5
5
  SHA512:
6
- metadata.gz: 3b91c002309b28ccf7266b44502689fc888d225ae8682e5c8a3374f2ff77bff6ffd28cf64dacd526253cc69fecef1fc7a59d3c24c73cdcbbacd3eb5374018097
7
- data.tar.gz: 0d2c3272f19de52cd1f30f4b956193c497e8ef2186b0a0bf36cac0d670f9368fc80f988bf4d389774e46198c80b78529bd00fc4a4ffa344c6efcaaf8d74185dc
6
+ metadata.gz: 897f586443e3a39a868d2565dc12320bcd416f45d3fe8f26580024179c7b11ef357a8078e681e738ecfcd19b505cbecdea3dee1bb4c8d593b749bc6e03f578d1
7
+ data.tar.gz: 3531b9092f90394d950baeeeaa4cf4980eaf6163575953846f75688876c0a00109e4095bf2cc737e4236f3590fd1de2204cd59593e8ac82976512abbb527fb67
data/bin/ood_packaging CHANGED
@@ -22,6 +22,10 @@ OptionParser.new do |opts|
22
22
  options[:dist] = v
23
23
  end
24
24
 
25
+ opts.on('-a', '--arch=ARCH', String, 'Architecture to build') do |v|
26
+ options[:arch] = v
27
+ end
28
+
25
29
  opts.on('-V', '--version=VERSION', String, 'Version of package to build') do |v|
26
30
  options[:version] = v
27
31
  end
@@ -15,7 +15,7 @@ class OodPackaging::Build
15
15
  attr_accessor :build_box
16
16
 
17
17
  def initialize
18
- @build_box = OodPackaging::BuildBox.new(dist: ENV['DIST'])
18
+ @build_box = OodPackaging::BuildBox.new(dist: ENV['DIST'], arch: ENV['ARCH'])
19
19
  end
20
20
 
21
21
  def config
@@ -116,11 +116,11 @@ class OodPackaging::Build
116
116
  end
117
117
 
118
118
  def output_dir
119
- File.join('/output', build_box.dist)
119
+ File.join('/output', "#{build_box.dist}-#{build_box.arch}")
120
120
  end
121
121
 
122
122
  def work_dir
123
- File.join('/work', build_box.dist)
123
+ build_box.work_dir
124
124
  end
125
125
 
126
126
  def packaging_config
@@ -1,4 +1,5 @@
1
- FROM <%= base_image %>
1
+ FROM --platform=<%= platform %> <%= base_image %>
2
+ ENV ARCH=<%= arch %>
2
3
  MAINTAINER Trey Dockendorf <tdockendorf@osc.edu>
3
4
  ENV LANG=en_US.UTF-8
4
5
  ENV LC_CTYPE=en_US.UTF-8
@@ -45,7 +45,7 @@ run chmod 440 /etc/sudoers.d/ood
45
45
  <% if rpm? -%>
46
46
  header "Setup RPM env"
47
47
  sudo -u <%= ctr_user %> -H cat > <%= ctr_rpmmacros %> <<EOF
48
- %_topdir /work/<%= dist %>
48
+ %_topdir <%= work_dir %>
49
49
  <%- # Workaround to weird issue with debuginfo stripping -%>
50
50
  <% if dist == 'el7' -%>
51
51
  %_builddir %{_topdir}/rpmbuild/BUILD
@@ -23,6 +23,11 @@ class OodPackaging::BuildBox
23
23
  'ubuntu-22.04' => 'jammy'
24
24
  }.freeze
25
25
 
26
+ ARCH_PLATFORMS = {
27
+ 'x86_64' => 'linux/amd64',
28
+ 'aarch64' => 'linux/arm64'
29
+ }.freeze
30
+
26
31
  def initialize(config = {})
27
32
  @config = config
28
33
  raise ArgumentError, 'Must provide dist' if dist.nil?
@@ -31,6 +36,9 @@ class OodPackaging::BuildBox
31
36
  unless valid_dist?(dist)
32
37
  raise ArgumentError, "Invalid dist selected: #{dist}. Valid choices are #{valid_dists.join(' ')}"
33
38
  end
39
+ unless valid_arch?(arch)
40
+ raise ArgumentError, "Invalid arch selected: #{arch}. Valid choices are #{valid_arches.join(' ')}"
41
+ end
34
42
  # rubocop:enable Style/GuardClause
35
43
  end
36
44
 
@@ -38,6 +46,10 @@ class OodPackaging::BuildBox
38
46
  @dist ||= ENV['OOD_PACKAGING_DIST'] || @config[:dist]
39
47
  end
40
48
 
49
+ def arch
50
+ @arch ||= ENV['OOD_PACKAGING_ARCH'] || @config[:arch] || 'x86_64'
51
+ end
52
+
41
53
  def rpm?
42
54
  dist.start_with?('el') || dist.start_with?('amzn')
43
55
  end
@@ -80,6 +92,14 @@ class OodPackaging::BuildBox
80
92
  BASE_IMAGES.keys
81
93
  end
82
94
 
95
+ def valid_arch?(value)
96
+ ARCH_PLATFORMS.key?(value)
97
+ end
98
+
99
+ def valid_arches
100
+ ARCH_PLATFORMS.keys
101
+ end
102
+
83
103
  def base_image
84
104
  @base_image ||= BASE_IMAGES[dist]
85
105
  end
@@ -88,10 +108,18 @@ class OodPackaging::BuildBox
88
108
  @codename ||= CODENAMES[dist]
89
109
  end
90
110
 
111
+ def platform
112
+ @platform ||= ARCH_PLATFORMS[arch]
113
+ end
114
+
91
115
  def build_dir
92
116
  File.join(File.dirname(__FILE__), 'build_box/docker-image')
93
117
  end
94
118
 
119
+ def work_dir
120
+ File.join('/work', "#{dist}-#{arch}")
121
+ end
122
+
95
123
  def image_registry
96
124
  @config[:build_box_registry] || ENV['OOD_PACKAGING_BUILD_BOX_REGISTRY'] || nil
97
125
  end
@@ -109,7 +137,7 @@ class OodPackaging::BuildBox
109
137
  end
110
138
 
111
139
  def image_tag
112
- [image_registry, image_org, "#{image_name}-#{dist}:#{image_version}"].compact.join('/')
140
+ [image_registry, image_org, "#{image_name}-#{dist}-#{arch}:#{image_version}"].compact.join('/')
113
141
  end
114
142
 
115
143
  def build_gem
@@ -128,11 +156,29 @@ class OodPackaging::BuildBox
128
156
  template_file('build_box/docker-image/install.sh.erb')
129
157
  end
130
158
 
159
+ def build_command
160
+ if container_runtime == 'docker'
161
+ ['buildx', 'build']
162
+ else
163
+ ['build']
164
+ end
165
+ end
166
+
167
+ def build_output
168
+ if container_runtime == 'docker'
169
+ ['--output', 'type=docker']
170
+ else
171
+ []
172
+ end
173
+ end
174
+
131
175
  def build!
132
176
  scripts
133
- cmd = [container_runtime, 'build']
134
- cmd.concat ['--platform', 'linux/amd64']
177
+ cmd = [container_runtime]
178
+ cmd.concat build_command
179
+ cmd.concat ['--platform', platform]
135
180
  cmd.concat ['--tag', image_tag]
181
+ cmd.concat build_output
136
182
  cmd.concat [ENV['OOD_PACKAGING_BUILD_BOX_ARGS']] if ENV['OOD_PACKAGING_BUILD_BOX_ARGS']
137
183
  cmd.concat ['-f', dockerfile]
138
184
  cmd.concat [build_dir]
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Handle options for OodPackaging
4
4
  module OodPackaging
5
- OPTIONS = [:package, :version, :dist, :work_dir, :clean_work_dir, :output_dir, :clean_output_dir, :tar,
5
+ OPTIONS = [:package, :version, :dist, :arch, :work_dir, :clean_work_dir, :output_dir, :clean_output_dir, :tar,
6
6
  :tar_only, :skip_download, :gpg_sign, :gpg_name, :gpg_pubkey, :gpg_private_key, :gpg_passphrase,
7
7
  :debug, :attach].freeze
8
8
  end
@@ -276,7 +276,7 @@ class OodPackaging::Package
276
276
 
277
277
  def container_start!
278
278
  cmd = [container_runtime, 'run', '--detach', '--rm']
279
- cmd.concat ['--platform', 'linux/amd64']
279
+ cmd.concat ['--platform', build_box.platform]
280
280
  cmd.concat ['--name', container_name]
281
281
  cmd.concat rt_specific_flags
282
282
  cmd.concat container_mounts
@@ -314,11 +314,14 @@ class OodPackaging::Package
314
314
  cmd = [container_runtime, 'kill', container_name]
315
315
  cmd.concat [cmd_suffix] unless debug?
316
316
  sh cmd.join(' '), verbose: debug?
317
+ rescue RuntimeError
318
+ puts 'Error killing container'.red
317
319
  end
318
320
 
319
321
  def container_env
320
322
  env = {
321
323
  'DIST' => build_box.dist,
324
+ 'ARCH' => build_box.arch,
322
325
  'PACKAGE' => package_name,
323
326
  'VERSION' => version,
324
327
  'TAR_NAME' => "#{tar_name}.tar.gz",
@@ -17,25 +17,25 @@ namespace :ood_packaging do
17
17
 
18
18
  namespace :buildbox do
19
19
  desc 'Build buildbox image'
20
- task :build, [:dist] do |_task, args|
20
+ task :build, [:dist, :arch] do |_task, args|
21
21
  @build_box = OodPackaging::BuildBox.new(args)
22
22
  @build_box.build!
23
23
  end
24
24
 
25
25
  desc 'Push buildbox image'
26
- task :push, [:dist] do |_task, args|
26
+ task :push, [:dist, :arch] do |_task, args|
27
27
  @build_box = OodPackaging::BuildBox.new(args)
28
28
  @build_box.push!
29
29
  end
30
30
 
31
31
  desc 'Pull buildbox image'
32
- task :pull, [:dist] do |_task, args|
32
+ task :pull, [:dist, :arch] do |_task, args|
33
33
  @build_box = OodPackaging::BuildBox.new(args)
34
34
  @build_box.pull!
35
35
  end
36
36
 
37
37
  desc 'Save buildbox image'
38
- task :save, [:dist, :path] do |_task, args|
38
+ task :save, [:dist, :arch, :path] do |_task, args|
39
39
  @build_box = OodPackaging::BuildBox.new(args)
40
40
  @build_box.save!(args[:path])
41
41
  end
@@ -47,76 +47,78 @@ namespace :ood_packaging do
47
47
  OodPackaging::Build.new.run!
48
48
  end
49
49
 
50
- OodPackaging::RakeTask.new(:internal, [:package, :dist]) do |t, args|
50
+ OodPackaging::RakeTask.new(:internal, [:package, :dist, :arch]) do |t, args|
51
51
  name = args[:package].split(':').last
52
52
  t.package = File.join(proj_root, 'packages', name)
53
53
  dist = args[:dist] || ENV['OOD_PACKAGING_DIST']
54
+ arch = args[:arch] || ENV['OOD_PACKAGING_ARCH'] || 'x86_64'
54
55
  t.dist = dist
56
+ t.arch = arch
55
57
  t.version = OodPackaging.package_version(name, dist)
56
58
  t.work_dir = File.join(proj_root, 'tmp/work')
57
59
  t.output_dir = File.join(proj_root, 'tmp/output')
58
60
  end
59
61
 
60
62
  desc 'Package ondemand-release'
61
- task :'ondemand-release', [:dist] do |t, args|
63
+ task :'ondemand-release', [:dist, :arch] do |t, args|
62
64
  ENV['OOD_PACKAGING_GPG_SIGN'] = 'false'
63
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
65
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
64
66
  end
65
67
 
66
68
  desc 'Package ondemand-release-latest'
67
- task :'ondemand-release-latest', [:dist] do |t, args|
69
+ task :'ondemand-release-latest', [:dist, :arch] do |t, args|
68
70
  ENV['OOD_PACKAGING_GPG_SIGN'] = 'false'
69
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
71
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
70
72
  end
71
73
 
72
74
  desc 'Package ondemand-runtime'
73
- task :'ondemand-runtime', [:dist] do |t, args|
74
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
75
+ task :'ondemand-runtime', [:dist, :arch] do |t, args|
76
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
75
77
  end
76
78
 
77
79
  desc 'Package scl-utils'
78
- task :'scl-utils', [:dist] do |t, args|
79
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
80
+ task :'scl-utils', [:dist, :arch] do |t, args|
81
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
80
82
  end
81
83
 
82
84
  desc 'Package passenger'
83
- task :passenger, [:dist] do |t, args|
84
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
85
+ task :passenger, [:dist, :arch] do |t, args|
86
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
85
87
  end
86
88
 
87
89
  desc 'Package cjose'
88
- task :cjose, [:dist] do |t, args|
89
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
90
+ task :cjose, [:dist, :arch] do |t, args|
91
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
90
92
  end
91
93
 
92
94
  desc 'Package mod_auth_openidc'
93
- task :mod_auth_openidc, [:dist] do |t, args|
94
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
95
+ task :mod_auth_openidc, [:dist, :arch] do |t, args|
96
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
95
97
  end
96
98
 
97
99
  desc 'Package sqlite'
98
- task :sqlite, [:dist] do |t, args|
99
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
100
+ task :sqlite, [:dist, :arch] do |t, args|
101
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
100
102
  end
101
103
 
102
104
  desc 'Package ondemand_exporter'
103
- task :ondemand_exporter, [:dist] do |t, args|
104
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
105
+ task :ondemand_exporter, [:dist, :arch] do |t, args|
106
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
105
107
  end
106
108
 
107
109
  desc 'Package ondemand-compute'
108
- task :'ondemand-compute', [:dist] do |t, args|
109
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
110
+ task :'ondemand-compute', [:dist, :arch] do |t, args|
111
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
110
112
  end
111
113
 
112
114
  desc 'Package python-websockify'
113
- task :'python-websockify', [:dist] do |t, args|
114
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
115
+ task :'python-websockify', [:dist, :arch] do |t, args|
116
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
115
117
  end
116
118
 
117
119
  desc 'Package turbovnc'
118
- task :turbovnc, [:dist] do |t, args|
119
- Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist])
120
+ task :turbovnc, [:dist, :arch] do |t, args|
121
+ Rake::Task['ood_packaging:package:internal'].invoke(t.name, args[:dist], args[:arch])
120
122
  end
121
123
  end
122
124
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Version code for OodPackaging
4
4
  module OodPackaging
5
- VERSION = '0.8.0'
5
+ VERSION = '0.9.0'
6
6
  PACKAGE_VERSION = {
7
7
  'ondemand-release' => {
8
8
  '(ubuntu|debian)' => '3.1.0',
@@ -12,13 +12,13 @@ module OodPackaging
12
12
  '(ubuntu|debian)' => '1',
13
13
  'default' => '1-8'
14
14
  },
15
- 'ondemand-runtime' => '3.1.1',
15
+ 'ondemand-runtime' => '3.1.2',
16
16
  'scl-utils' => '2.0.3',
17
17
  'passenger' => '6.0.17',
18
18
  'cjose' => '0.6.1',
19
19
  'mod_auth_openidc' => '2.4.14.1',
20
20
  'sqlite' => '3.26.0-4',
21
- 'ondemand_exporter' => '0.9.0',
21
+ 'ondemand_exporter' => '0.10.0',
22
22
  'ondemand-compute' => {
23
23
  '(ubuntu|debian)' => '3.1.0',
24
24
  'default' => '3.1.0'
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.8.0
4
+ version: 0.9.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: 2023-06-02 00:00:00.000000000 Z
12
+ date: 2023-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake