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 +4 -4
- data/bin/ood_packaging +4 -0
- data/lib/ood_packaging/build.rb +3 -3
- data/lib/ood_packaging/build_box/docker-image/Dockerfile.erb +2 -1
- data/lib/ood_packaging/build_box/docker-image/install.sh.erb +1 -1
- data/lib/ood_packaging/build_box.rb +49 -3
- data/lib/ood_packaging/options.rb +1 -1
- data/lib/ood_packaging/package.rb +4 -1
- data/lib/ood_packaging/tasks.rb +31 -29
- data/lib/ood_packaging/version.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d66aca5d9123c4952b9a2842fdc3c63aed8e566bf7f5e9569ce197bccbd3eaf
|
4
|
+
data.tar.gz: bb3382c9d597c60585aa35eb6305005e447e02c558b5a30ccc78bee625291c4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/ood_packaging/build.rb
CHANGED
@@ -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
|
-
|
123
|
+
build_box.work_dir
|
124
124
|
end
|
125
125
|
|
126
126
|
def packaging_config
|
@@ -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
|
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
|
134
|
-
cmd.concat
|
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',
|
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",
|
data/lib/ood_packaging/tasks.rb
CHANGED
@@ -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.
|
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.
|
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.
|
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.
|
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-
|
12
|
+
date: 2023-06-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|