ood_packaging 0.0.1.r2.0 → 0.0.1.rc.3
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 +7 -3
- data/lib/ood_packaging/build.rb +9 -34
- data/lib/ood_packaging/build_box/docker-image/Dockerfile.erb +9 -13
- data/lib/ood_packaging/build_box/docker-image/install.sh.erb +3 -3
- data/lib/ood_packaging/build_box.rb +5 -9
- data/lib/ood_packaging/package.rb +34 -70
- data/lib/ood_packaging/rake_task.rb +3 -1
- data/lib/ood_packaging/tasks.rb +2 -17
- data/lib/ood_packaging/utils.rb +2 -13
- data/lib/ood_packaging/version.rb +8 -8
- data/lib/tasks/package_utils.rb +197 -0
- data/lib/tasks/packaging.rb +111 -0
- data/lib/tasks/templates/Dockerfile.el.erb +21 -0
- data/lib/tasks/templates/Dockerfile.ubuntu.erb +15 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d76f705e0592bc694ee1e658e75da269f269489712392b3a412bc7db7ab566e7
|
4
|
+
data.tar.gz: c8eb63270d72d241ae87b1b82d9daeb1bb78382d529d636637fb2c8db1c5d9cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6abb5c9b384d917d91570578518be7f53a3b28568f4fa6bf50568d7903b7eae916b62be9b32e37607302f7227b1af3c1b811679b2ce17d05243c2b52503b224b
|
7
|
+
data.tar.gz: fb24936ba8e69d351b00032b5afe02fc3520629ea694d91a068bad906185275d0d2ce1a5c65a206ded893e70b1992c7dcae92378d0aa8959aed270486696f6a1
|
data/bin/ood_packaging
CHANGED
@@ -2,9 +2,13 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require 'optparse'
|
5
|
-
|
6
|
-
|
7
|
-
|
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|
|
data/lib/ood_packaging/build.rb
CHANGED
@@ -39,11 +39,11 @@ class OodPackaging::Build
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def version
|
42
|
-
ENV['VERSION']
|
42
|
+
ENV['VERSION'].gsub(/^v/, '')
|
43
43
|
end
|
44
44
|
|
45
45
|
def rpm_version
|
46
|
-
version.
|
46
|
+
version.split('-', 2)[0]
|
47
47
|
end
|
48
48
|
|
49
49
|
def rpm_release
|
@@ -53,12 +53,8 @@ class OodPackaging::Build
|
|
53
53
|
v[1].gsub('-', '.')
|
54
54
|
end
|
55
55
|
|
56
|
-
def deb_version
|
57
|
-
version.gsub(/^v/, '').gsub('-', '.')
|
58
|
-
end
|
59
|
-
|
60
56
|
def rpm_defines
|
61
|
-
defines = ["--define 'git_tag #{
|
57
|
+
defines = ["--define 'git_tag #{ENV['VERSION']}'"]
|
62
58
|
defines.concat ["--define 'package_version #{rpm_version}'"]
|
63
59
|
defines.concat ["--define 'package_release #{rpm_release}'"]
|
64
60
|
defines.concat ["--define 'scl #{config[:scl]}'"] if config[:scl]
|
@@ -76,8 +72,6 @@ class OodPackaging::Build
|
|
76
72
|
'/package/rpm'
|
77
73
|
elsif Dir.exist?('/package/packaging/rpm')
|
78
74
|
'/package/packaging/rpm'
|
79
|
-
elsif Dir.exist?('/package/packaging')
|
80
|
-
'/package/packaging'
|
81
75
|
else
|
82
76
|
'/package'
|
83
77
|
end
|
@@ -94,8 +88,6 @@ class OodPackaging::Build
|
|
94
88
|
def debian_dir
|
95
89
|
@debian_dir ||= if Dir.exist?('/package/deb/debian')
|
96
90
|
'/package/deb/debian'
|
97
|
-
elsif Dir.exist?('/package/packaging/deb')
|
98
|
-
'/package/packaging/deb'
|
99
91
|
else
|
100
92
|
'/package/debian'
|
101
93
|
end
|
@@ -130,7 +122,7 @@ class OodPackaging::Build
|
|
130
122
|
end
|
131
123
|
|
132
124
|
def deb_name
|
133
|
-
"#{package}-#{
|
125
|
+
"#{package}-#{version}"
|
134
126
|
end
|
135
127
|
|
136
128
|
def rpms
|
@@ -138,7 +130,6 @@ class OodPackaging::Build
|
|
138
130
|
end
|
139
131
|
|
140
132
|
def run!
|
141
|
-
fix_env!
|
142
133
|
env_dump! if debug?
|
143
134
|
bootstrap_rpm! if build_box.rpm?
|
144
135
|
bootstrap_deb! if build_box.deb?
|
@@ -150,10 +141,6 @@ class OodPackaging::Build
|
|
150
141
|
sanity!
|
151
142
|
end
|
152
143
|
|
153
|
-
def fix_env!
|
154
|
-
ENV.delete('GEM_PATH')
|
155
|
-
end
|
156
|
-
|
157
144
|
def env_dump!
|
158
145
|
ENV.sort.to_h.each_pair do |k, v|
|
159
146
|
puts "#{k}=#{v}"
|
@@ -194,17 +181,10 @@ class OodPackaging::Build
|
|
194
181
|
def bootstrap_get_source!
|
195
182
|
if ENV['SKIP_DOWNLOAD'] == 'true'
|
196
183
|
puts "\tSKIP_DOWNLOAD detected, skipping download sources".blue
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
exit_code = $CHILD_STATUS.exitstatus
|
201
|
-
if exit_code.zero?
|
202
|
-
source = File.join(work_dir, 'SOURCES', File.basename(output))
|
203
|
-
tar = File.join(work_dir, 'SOURCES', ENV['TAR_NAME'])
|
204
|
-
sh "mv #{tar} #{source}" if !File.exist?(source) && File.exist?(tar)
|
184
|
+
else
|
185
|
+
puts "\tDownloading sources defined in #{spec_file}".blue
|
186
|
+
sh "spectool #{rpm_defines.join(' ')} -g -R -S #{spec_file}#{cmd_suffix}"
|
205
187
|
end
|
206
|
-
puts "\tDownloading sources defined in #{spec_file}".blue
|
207
|
-
sh "spectool #{rpm_defines.join(' ')} -g -R -S #{spec_file}#{cmd_suffix}"
|
208
188
|
end
|
209
189
|
|
210
190
|
def bootstrap_deb!
|
@@ -221,7 +201,7 @@ class OodPackaging::Build
|
|
221
201
|
puts "\tBootstrap debian build files".blue
|
222
202
|
Dir.chdir(deb_work_dir) do
|
223
203
|
sh "dh_make -s -y --createorig -f ../#{deb_name}.tar.gz#{cmd_suffix} || true"
|
224
|
-
sh "dch -b -v #{
|
204
|
+
sh "dch -b -v #{version} 'Release #{version}'#{cmd_suffix}"
|
225
205
|
end
|
226
206
|
end
|
227
207
|
|
@@ -247,14 +227,9 @@ class OodPackaging::Build
|
|
247
227
|
|
248
228
|
def install_deb_dependencies!
|
249
229
|
sh "sudo apt update -y#{cmd_suffix}"
|
250
|
-
tool = [
|
251
|
-
'DEBIAN_FRONTEND=noninteractive apt-cudf-get --solver aspcud',
|
252
|
-
'-o APT::Get::Assume-Yes=1 -o APT::Get::Allow-Downgrades=1',
|
253
|
-
'-o Debug::pkgProblemResolver=0 -o APT::Install-Recommends=0'
|
254
|
-
]
|
255
230
|
cmd = [
|
256
231
|
'mk-build-deps --install --remove --root-cmd sudo',
|
257
|
-
"--tool='
|
232
|
+
"--tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes'"
|
258
233
|
]
|
259
234
|
Dir.chdir(deb_work_dir) do
|
260
235
|
sh "#{cmd.join(' ')}#{cmd_suffix}"
|
@@ -2,35 +2,31 @@ 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
|
-
|
6
|
-
ENV GEM_PATH=<%= ctr_gems_dir %>:
|
7
|
-
<% if scl? -%>
|
5
|
+
<% if dist == 'el7' -%>
|
8
6
|
RUN yum update -y && yum clean all && rm -rf /var/cache/yum/*
|
9
7
|
RUN yum install -y yum-utils epel-release centos-release-scl && yum clean all && rm -rf /var/cache/yum/*
|
10
8
|
RUN yum install -y <%= scl_ruby %>-ruby sudo which wget @buildsys-build \
|
11
9
|
rpm-build rpmdevtools rpm-sign scl-utils-build && \
|
12
10
|
yum clean all && rm -rf /var/cache/yum/*
|
13
|
-
|
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? -%>
|
11
|
+
<% elsif dist =~ /^el/ -%>
|
18
12
|
RUN dnf update -y && dnf clean all && rm -rf /var/cache/dnf/*
|
19
13
|
RUN dnf install -y dnf-utils epel-release langpacks-en glibc-all-langpacks && dnf clean all && rm -rf /var/cache/dnf/*
|
20
14
|
RUN dnf config-manager --set-enabled powertools && dnf clean all && rm -rf /var/cache/dnf/*
|
21
|
-
RUN dnf module enable -y ruby:<%= ruby_version %>
|
22
|
-
RUN dnf
|
15
|
+
RUN dnf module enable -y ruby:<%= ruby_version %> && dnf clean all && rm -rf /var/cache/dnf/*
|
16
|
+
RUN dnf module enable -y nodejs:<%= nodejs_version %> && dnf clean all && rm -rf /var/cache/dnf/*
|
17
|
+
RUN dnf install -y ruby sudo which wget \
|
23
18
|
gcc-c++ gcc make patch \
|
24
19
|
rpm-build rpmdevtools rpm-sign scl-utils-build && \
|
25
20
|
dnf clean all && rm -rf /var/cache/dnf/*
|
26
|
-
<% elsif
|
21
|
+
<% elsif dist =~ /^ubuntu|debian/ -%>
|
27
22
|
ENV DEBIAN_FRONTEND=noninteractive
|
28
23
|
RUN apt update -y && apt upgrade -y && apt clean all -y
|
29
24
|
RUN apt update -y && apt install -y locales && locale-gen $LANG && \
|
30
25
|
apt clean all -y
|
31
26
|
RUN apt update -y && apt install -y apt-transport-https ca-certificates \
|
32
|
-
init debhelper devscripts dh-make build-essential
|
33
|
-
sudo rake wget curl ruby
|
27
|
+
init debhelper devscripts dh-make build-essential lintian equivs \
|
28
|
+
sudo rake wget curl ruby && \
|
29
|
+
ln -snf /bin/bundle2.7 /bin/bundle && \
|
34
30
|
apt clean all -y
|
35
31
|
RUN echo "deb https://deb.nodesource.com/node_<%= nodejs_version %>.x <%= codename %> main" > /etc/apt/sources.list.d/nodesource.list
|
36
32
|
RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor > /etc/apt/trusted.gpg.d/nodesource.gpg
|
@@ -72,10 +72,10 @@ echo "allow-loopback-pinentry" >> <%= ctr_gpg_dir %>/gpg-agent.conf
|
|
72
72
|
<%- end -%>
|
73
73
|
|
74
74
|
header "Install ood_packaging gem"
|
75
|
-
<%- if
|
76
|
-
run scl enable <%= scl_ruby %> -- gem install --no-doc
|
75
|
+
<%- if rpm? && !dnf? -%>
|
76
|
+
run scl enable <%= scl_ruby %> -- gem install --no-doc /build/*.gem
|
77
77
|
<%- else -%>
|
78
|
-
run gem install --no-doc
|
78
|
+
run gem install --no-doc /build/*.gem
|
79
79
|
<%- end -%>
|
80
80
|
|
81
81
|
header "Copy in launch scripts"
|
@@ -21,17 +21,17 @@ class OodPackaging::BuildBox
|
|
21
21
|
|
22
22
|
def initialize(config = {})
|
23
23
|
@config = config
|
24
|
-
raise ArgumentError, 'Must provide dist' if dist.nil?
|
24
|
+
raise ArgumentError, 'Must provide dist' if @config[:dist].nil?
|
25
25
|
|
26
26
|
# rubocop:disable Style/GuardClause
|
27
|
-
unless valid_dist?(dist)
|
28
|
-
raise ArgumentError, "Invalid dist selected: #{dist}. Valid choices are #{valid_dists.join(' ')}"
|
27
|
+
unless valid_dist?(@config[:dist])
|
28
|
+
raise ArgumentError, "Invalid dist selected: #{@config[:dist]}. Valid choices are #{valid_dists.join(' ')}"
|
29
29
|
end
|
30
30
|
# rubocop:enable Style/GuardClause
|
31
31
|
end
|
32
32
|
|
33
33
|
def dist
|
34
|
-
@dist ||=
|
34
|
+
@dist ||= @config[:dist]
|
35
35
|
end
|
36
36
|
|
37
37
|
def rpm?
|
@@ -95,7 +95,7 @@ class OodPackaging::BuildBox
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def image_version
|
98
|
-
|
98
|
+
ENV['OOD_PACKAGING_BUILD_BOX_VERSION'] || OodPackaging::VERSION
|
99
99
|
end
|
100
100
|
|
101
101
|
def image_tag
|
@@ -133,10 +133,6 @@ 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
|
-
|
140
136
|
def save!(path)
|
141
137
|
sh [container_runtime, 'save', image_tag, '| gzip >', path].join(' ')
|
142
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
|
@@ -91,21 +75,20 @@ class OodPackaging::Package
|
|
91
75
|
|
92
76
|
def package_name
|
93
77
|
name = File.basename(package)
|
94
|
-
|
95
|
-
when /deb|rpm/
|
78
|
+
if name =~ /deb|rpm/
|
96
79
|
name = if File.basename(File.dirname(package)) == 'packages'
|
97
80
|
File.basename(File.dirname(File.dirname(package)))
|
98
81
|
else
|
99
82
|
File.basename(File.dirname(package))
|
100
83
|
end
|
101
|
-
when 'packaging'
|
102
|
-
name = File.basename(File.dirname(package))
|
103
84
|
end
|
104
85
|
name
|
105
86
|
end
|
106
87
|
|
107
88
|
def gpg_files
|
108
89
|
[
|
90
|
+
OpenStruct.new(private_key: File.join(proj_root, 'ondemand.sec'), passphrase: File.join(proj_root, '.gpgpass')),
|
91
|
+
OpenStruct.new(private_key: File.join(package, 'ondemand.sec'), passphrase: File.join(package, '.gpgpass')),
|
109
92
|
OpenStruct.new(private_key: @config[:gpg_private_key], passphrase: @config[:gpg_passphrase]),
|
110
93
|
OpenStruct.new(private_key: ENV['OOD_PACKAGING_GPG_PRIVATE_KEY'],
|
111
94
|
passphrase: ENV['OOD_PACKAGING_GPG_PASSPHRASE'])
|
@@ -123,12 +106,8 @@ class OodPackaging::Package
|
|
123
106
|
!gpg_files.nil?
|
124
107
|
end
|
125
108
|
|
126
|
-
def default_gpg_name
|
127
|
-
'OnDemand Release Signing Key'
|
128
|
-
end
|
129
|
-
|
130
109
|
def gpg_name
|
131
|
-
@config[:gpg_name].nil? ?
|
110
|
+
@config[:gpg_name].nil? ? 'OnDemand Release Signing Key' : @config[:gpg_name]
|
132
111
|
end
|
133
112
|
|
134
113
|
def container_init
|
@@ -144,23 +123,10 @@ class OodPackaging::Package
|
|
144
123
|
package
|
145
124
|
end
|
146
125
|
|
147
|
-
def tar_name
|
148
|
-
version = if build_box.rpm?
|
149
|
-
rpm_version
|
150
|
-
else
|
151
|
-
deb_version
|
152
|
-
end
|
153
|
-
"#{package_name}-#{version}"
|
154
|
-
end
|
155
|
-
|
156
126
|
def rpm_tar_dest_dir
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
File.join(package, 'packaging')
|
161
|
-
].each do |dir|
|
162
|
-
return dir if Dir.exist?(dir)
|
163
|
-
end
|
127
|
+
dir = File.join(package, 'rpm')
|
128
|
+
return dir if Dir.exist?(dir)
|
129
|
+
|
164
130
|
File.join(package, 'packaging/rpm')
|
165
131
|
end
|
166
132
|
|
@@ -191,8 +157,8 @@ class OodPackaging::Package
|
|
191
157
|
cmd = []
|
192
158
|
cmd.concat exec_launchers if docker_runtime?
|
193
159
|
cmd.concat ['scl', 'enable', scl_ruby, '--'] if podman_runtime? && build_box.scl?
|
194
|
-
cmd.concat [
|
195
|
-
cmd.concat ['-q'] unless debug
|
160
|
+
cmd.concat ['rake']
|
161
|
+
cmd.concat ['-q'] unless debug
|
196
162
|
cmd.concat ['-f', File.join(ctr_scripts_dir, 'Rakefile'), 'ood_packaging:package:build']
|
197
163
|
cmd
|
198
164
|
end
|
@@ -218,31 +184,33 @@ class OodPackaging::Package
|
|
218
184
|
end
|
219
185
|
|
220
186
|
def clean!
|
221
|
-
sh "rm -rf #{work_dir}", verbose: debug
|
222
|
-
sh "rm -rf #{output_dir}", verbose: debug
|
187
|
+
sh "rm -rf #{work_dir}", verbose: debug if @clean_work_dir
|
188
|
+
sh "rm -rf #{output_dir}", verbose: debug if @clean_output_dir
|
223
189
|
end
|
224
190
|
|
225
191
|
def bootstrap!
|
226
|
-
sh "mkdir -p #{work_dir}", verbose: debug
|
227
|
-
sh "mkdir -p #{output_dir}", verbose: debug
|
192
|
+
sh "mkdir -p #{work_dir}", verbose: debug
|
193
|
+
sh "mkdir -p #{output_dir}", verbose: debug
|
228
194
|
end
|
229
195
|
|
230
196
|
def tar!
|
231
197
|
cmd = ['git', 'ls-files', '.', '|', tar, '-c']
|
232
198
|
if build_box.rpm?
|
233
199
|
dir = rpm_tar_dest_dir
|
200
|
+
version = rpm_version
|
234
201
|
else
|
235
202
|
dir = deb_tar_dest_dir.tap { |p| sh "mkdir -p #{p}" }
|
203
|
+
version = deb_version
|
236
204
|
cmd.concat ["--transform 'flags=r;s,packaging/deb,debian,'"]
|
237
205
|
end
|
238
|
-
tar_file = "#{dir}/#{
|
239
|
-
cmd.concat ["--transform 's,^,#{
|
206
|
+
tar_file = "#{dir}/#{package_name}-#{version}.tar.gz"
|
207
|
+
cmd.concat ["--transform 's,^,#{package_name}-#{version}/,'"]
|
240
208
|
cmd.concat ['-T', '-', '|', "gzip > #{tar_file}"]
|
241
209
|
|
242
210
|
sh "rm #{tar_file}" if File.exist?(tar_file)
|
243
211
|
puts "Create tar archive #{tar_file}".blue
|
244
212
|
Dir.chdir(tar_path) do
|
245
|
-
sh cmd.join(' '), verbose: debug
|
213
|
+
sh cmd.join(' '), verbose: debug
|
246
214
|
end
|
247
215
|
end
|
248
216
|
|
@@ -256,19 +224,19 @@ class OodPackaging::Package
|
|
256
224
|
tar! if tar?
|
257
225
|
container_start!
|
258
226
|
container_exec!(exec_rake)
|
259
|
-
puts "Build SUCCESS: package=#{package} dist=#{build_box.dist}".green
|
260
227
|
rescue RuntimeError
|
228
|
+
# ret = 1
|
261
229
|
puts "Build FAILED package=#{package} dist=#{build_box.dist}".red
|
262
230
|
raise
|
231
|
+
else
|
232
|
+
puts "Build SUCCESS: package=#{package} dist=#{build_box.dist}".green
|
263
233
|
ensure
|
264
234
|
container_exec!(exec_attach, ['-i', '-t']) if attach?
|
265
|
-
container_kill! if container_running?
|
235
|
+
container_kill! if container_running?
|
266
236
|
end
|
267
237
|
|
268
238
|
def container_running?
|
269
|
-
|
270
|
-
puts cmd if debug?
|
271
|
-
`#{cmd}`
|
239
|
+
`#{container_runtime} inspect #{container_name} 2>/dev/null 1>/dev/null`
|
272
240
|
$CHILD_STATUS.success?
|
273
241
|
end
|
274
242
|
|
@@ -279,9 +247,9 @@ class OodPackaging::Package
|
|
279
247
|
cmd.concat container_mounts
|
280
248
|
cmd.concat [build_box.image_tag]
|
281
249
|
cmd.concat [container_init]
|
282
|
-
cmd.concat ['1>/dev/null'] unless debug
|
250
|
+
cmd.concat ['1>/dev/null'] unless debug
|
283
251
|
puts "Starting container #{container_name} using image #{build_box.image_tag}".blue
|
284
|
-
sh cmd.join(' '), verbose: debug
|
252
|
+
sh cmd.join(' '), verbose: debug
|
285
253
|
end
|
286
254
|
|
287
255
|
def container_exec!(exec_cmd, extra_args = [])
|
@@ -293,33 +261,29 @@ class OodPackaging::Package
|
|
293
261
|
cmd.concat [container_name]
|
294
262
|
cmd.concat exec_cmd
|
295
263
|
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
|
264
|
+
sh cmd.join(' '), verbose: debug
|
301
265
|
end
|
302
266
|
|
303
267
|
def container_kill!
|
304
268
|
puts "Killing container #{container_name}".blue
|
305
269
|
cmd = [container_runtime, 'kill', container_name]
|
306
|
-
cmd.concat [
|
307
|
-
sh cmd.join(' '), verbose: debug
|
270
|
+
cmd.concat ['1>/dev/null', '2>/dev/null'] unless debug
|
271
|
+
sh cmd.join(' '), verbose: debug
|
308
272
|
end
|
309
273
|
|
310
274
|
def container_env
|
311
275
|
env = {
|
312
276
|
'DIST' => build_box.dist,
|
313
277
|
'PACKAGE' => package_name,
|
314
|
-
'VERSION' => version,
|
315
|
-
'TAR_NAME' => "#{tar_name}.tar.gz",
|
316
278
|
'GPG_SIGN' => gpg_sign,
|
317
279
|
'GPG_NAME' => gpg_name,
|
318
280
|
'SKIP_DOWNLOAD' => @config[:skip_download],
|
319
281
|
'OOD_UID' => Process.uid,
|
320
282
|
'OOD_GID' => Process.gid,
|
321
|
-
'DEBUG' => debug
|
283
|
+
'DEBUG' => debug
|
322
284
|
}
|
285
|
+
env['VERSION'] = rpm_version if build_box.rpm?
|
286
|
+
env['VERSION'] = deb_version if build_box.deb?
|
323
287
|
env['GPG_PUBKEY'] = '/gpg.pub' if @config[:gpg_pubkey]
|
324
288
|
env
|
325
289
|
end
|
data/lib/ood_packaging/tasks.rb
CHANGED
@@ -7,14 +7,6 @@ require 'ood_packaging/utils'
|
|
7
7
|
namespace :ood_packaging do
|
8
8
|
include OodPackaging::Utils
|
9
9
|
|
10
|
-
desc 'Set version'
|
11
|
-
task :version, [:version] do |_task, args|
|
12
|
-
version_file = File.join(proj_root, 'lib/ood_packaging/version.rb')
|
13
|
-
version = args[:version].gsub(/^v/, '')
|
14
|
-
sh "#{sed} -i -r \"s| VERSION =.*| VERSION = '#{version}'|g\" #{version_file}"
|
15
|
-
sh 'bundle install'
|
16
|
-
end
|
17
|
-
|
18
10
|
namespace :buildbox do
|
19
11
|
desc 'Build buildbox image'
|
20
12
|
task :build, [:dist] do |_task, args|
|
@@ -28,12 +20,6 @@ namespace :ood_packaging do
|
|
28
20
|
@build_box.push!
|
29
21
|
end
|
30
22
|
|
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
23
|
desc 'Save buildbox image'
|
38
24
|
task :save, [:dist, :path] do |_task, args|
|
39
25
|
@build_box = OodPackaging::BuildBox.new(args)
|
@@ -50,9 +36,8 @@ namespace :ood_packaging do
|
|
50
36
|
OodPackaging::RakeTask.new(:internal, [:package, :dist]) do |t, args|
|
51
37
|
name = args[:package].split(':').last
|
52
38
|
t.package = File.join(proj_root, 'packages', name)
|
53
|
-
dist = args[:dist]
|
54
|
-
t.
|
55
|
-
t.version = OodPackaging.package_version(name, dist)
|
39
|
+
t.dist = args[:dist]
|
40
|
+
t.version = OodPackaging.package_version(name, args[:dist])
|
56
41
|
t.work_dir = File.join(proj_root, 'tmp/work')
|
57
42
|
t.output_dir = File.join(proj_root, 'tmp/output')
|
58
43
|
end
|
data/lib/ood_packaging/utils.rb
CHANGED
@@ -15,13 +15,6 @@ module OodPackaging::Utils
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def sed
|
19
|
-
@sed ||= begin
|
20
|
-
`which gsed 1>/dev/null 2>&1`
|
21
|
-
$CHILD_STATUS.success? ? 'gsed' : 'sed'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
18
|
def podman_runtime?
|
26
19
|
@podman_runtime ||= ENV['CONTAINER_RT'] == 'podman' || ENV['container'] == 'podman'
|
27
20
|
end
|
@@ -55,7 +48,7 @@ module OodPackaging::Utils
|
|
55
48
|
end
|
56
49
|
|
57
50
|
def ondemand_repo_version
|
58
|
-
'2.
|
51
|
+
'2.1'
|
59
52
|
end
|
60
53
|
|
61
54
|
def ruby_version
|
@@ -67,17 +60,13 @@ module OodPackaging::Utils
|
|
67
60
|
end
|
68
61
|
|
69
62
|
def nodejs_version
|
70
|
-
'
|
63
|
+
'14'
|
71
64
|
end
|
72
65
|
|
73
66
|
def ctr_scripts_dir
|
74
67
|
'/ondemand-packaging'
|
75
68
|
end
|
76
69
|
|
77
|
-
def ctr_gems_dir
|
78
|
-
File.join(ctr_scripts_dir, 'gems')
|
79
|
-
end
|
80
|
-
|
81
70
|
def gpg_private_key
|
82
71
|
File.join(ctr_scripts_dir, 'ondemand.sec')
|
83
72
|
end
|
@@ -2,25 +2,25 @@
|
|
2
2
|
|
3
3
|
# Version code for OodPackaging
|
4
4
|
module OodPackaging
|
5
|
-
VERSION = '0.0.1.
|
5
|
+
VERSION = '0.0.1.rc.3'
|
6
6
|
PACKAGE_VERSION = {
|
7
7
|
'ondemand-release' => {
|
8
|
-
'(ubuntu|debian)' => '2.
|
9
|
-
'default' => '2.
|
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-
|
13
|
+
'default' => '1-6'
|
14
14
|
},
|
15
|
-
'ondemand-runtime' => '2.
|
16
|
-
'passenger' => '6.0.
|
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.
|
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'
|
@@ -0,0 +1,197 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'English'
|
4
|
+
require 'erb'
|
5
|
+
require 'tempfile'
|
6
|
+
|
7
|
+
# Package utilities
|
8
|
+
module PackageUtils
|
9
|
+
def version
|
10
|
+
@version ||= if ENV['VERSION']
|
11
|
+
ENV['VERSION'].to_s
|
12
|
+
else
|
13
|
+
tag? ? git_tag : "#{git_tag}-#{git_hash}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_timestamp
|
18
|
+
@build_timestamp ||= Time.now.strftime('%s')
|
19
|
+
end
|
20
|
+
|
21
|
+
def git_hash
|
22
|
+
@git_hash ||= `git rev-parse HEAD`.strip[0..6]
|
23
|
+
end
|
24
|
+
|
25
|
+
def git_tag
|
26
|
+
@git_tag ||= `git describe --tags --abbrev=0`.chomp
|
27
|
+
end
|
28
|
+
|
29
|
+
def numeric_tag
|
30
|
+
@numeric_tag ||= git_tag.delete_prefix('v')
|
31
|
+
end
|
32
|
+
|
33
|
+
def tag?
|
34
|
+
@tag ||= `git describe --exact-match --tags HEAD 2>/dev/null`.to_s != ''
|
35
|
+
end
|
36
|
+
|
37
|
+
def podman_runtime?
|
38
|
+
@podman_runtime ||= ENV['CONTAINER_RT'] == 'podman'
|
39
|
+
end
|
40
|
+
|
41
|
+
def docker_runtime?
|
42
|
+
!podman_runtime?
|
43
|
+
end
|
44
|
+
|
45
|
+
def container_runtime
|
46
|
+
podman_runtime? ? 'podman' : 'docker'
|
47
|
+
end
|
48
|
+
|
49
|
+
def tar
|
50
|
+
@tar ||= begin
|
51
|
+
`which gtar 1>/dev/null 2>&1`
|
52
|
+
$CHILD_STATUS.success? ? 'gtar' : 'tar'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def src_dir
|
57
|
+
ENV['OOD_SRC_DIR'] || '.'
|
58
|
+
end
|
59
|
+
|
60
|
+
def user
|
61
|
+
@user ||= Etc.getpwnam(Etc.getlogin)
|
62
|
+
end
|
63
|
+
|
64
|
+
def build_dir(args)
|
65
|
+
@build_dir ||= "#{src_dir}/build/#{build_box_image(args).gsub(':', '-')}".tap { |d| sh "mkdir -p #{d}" }
|
66
|
+
end
|
67
|
+
|
68
|
+
# TODO: continue vendor/ convention? Seems as good as any other name.
|
69
|
+
def vendor_src_dir
|
70
|
+
'vendor/ood/src'.tap { |p| sh "mkdir -p #{p}" }
|
71
|
+
end
|
72
|
+
|
73
|
+
def vendor_build_dir
|
74
|
+
'vendor/ood/build'.tap { |p| sh "mkdir -p #{p}" }
|
75
|
+
end
|
76
|
+
|
77
|
+
def dist_dir(args)
|
78
|
+
dist = args[:dist].to_s
|
79
|
+
version = args[:version].to_s
|
80
|
+
"dist/#{dist}#{version}"
|
81
|
+
end
|
82
|
+
|
83
|
+
def known_images
|
84
|
+
{
|
85
|
+
'ubuntu-20.04': '1'
|
86
|
+
}.freeze
|
87
|
+
end
|
88
|
+
|
89
|
+
def build_box_image(args)
|
90
|
+
base_name = "#{args[:dist]}-#{args[:version]}"
|
91
|
+
@version_lookup ||= Hash.new('1').merge(known_images)
|
92
|
+
|
93
|
+
"#{build_box_name}:#{base_name}-#{@version_lookup[base_name.to_sym]}"
|
94
|
+
end
|
95
|
+
|
96
|
+
def build_box_name
|
97
|
+
ENV['OOD_BUILD_BOX'] || 'ood-buildbox'
|
98
|
+
end
|
99
|
+
|
100
|
+
def image_exists?(image_name)
|
101
|
+
`#{container_runtime} inspect --type image --format exists #{image_name} || true`.chomp.eql?('exists')
|
102
|
+
end
|
103
|
+
|
104
|
+
def build_cmd(file, image)
|
105
|
+
args = [container_runtime, 'build', '-t', image, '-f', file]
|
106
|
+
args.concat '.' if docker_runtime?
|
107
|
+
args.join(' ')
|
108
|
+
end
|
109
|
+
|
110
|
+
def template_file(filename)
|
111
|
+
cwd = File.expand_path(__dir__).to_s
|
112
|
+
content = File.read("#{cwd}/templates/#{filename}")
|
113
|
+
content = ERB.new(content, trim_mode: '-').result(binding)
|
114
|
+
|
115
|
+
begin
|
116
|
+
t = Tempfile.new('ood-docker')
|
117
|
+
t.write(content)
|
118
|
+
t.path
|
119
|
+
ensure
|
120
|
+
t.close
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def ctr_home
|
125
|
+
"/home/#{ctr_user}"
|
126
|
+
end
|
127
|
+
|
128
|
+
def ctr_user
|
129
|
+
'ood'
|
130
|
+
end
|
131
|
+
|
132
|
+
def ctr_run_args
|
133
|
+
[
|
134
|
+
'--rm', '--user', "#{ctr_user}:#{ctr_user}",
|
135
|
+
'-e', 'LC_CTYPE=en_US.UTF-8'
|
136
|
+
].concat(rt_specific_flags)
|
137
|
+
end
|
138
|
+
|
139
|
+
def rt_specific_flags
|
140
|
+
if podman_runtime?
|
141
|
+
# SELinux doesn't like it if you're mounting from $HOME
|
142
|
+
['--security-opt', 'label=disable', '--userns=keep-id']
|
143
|
+
else
|
144
|
+
[]
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def arch
|
149
|
+
'x86_64'
|
150
|
+
end
|
151
|
+
|
152
|
+
def spec_location
|
153
|
+
sf = Dir.glob('packaging/rpm/*.spec').first
|
154
|
+
raise StandardError, 'Cannot find spec file in packaging/rpm' if sf.nil?
|
155
|
+
|
156
|
+
sf
|
157
|
+
end
|
158
|
+
|
159
|
+
def spec_file
|
160
|
+
File.basename(spec_location)
|
161
|
+
end
|
162
|
+
|
163
|
+
def rpm_build_args
|
164
|
+
[git_tag_define, version_define, '-ba', '--nodeps', '-vv', spec_file]
|
165
|
+
|
166
|
+
# if git_prerelease_tag.size >= 2
|
167
|
+
# git_prerelease_verison = git_prerelease_tag[0]
|
168
|
+
# git_prerelease_verison = git_prerelease_verison[1..-1] if git_prerelease_verison.start_with?('v')
|
169
|
+
# version_define = "--define 'package_version #{git_prerelease_verison}'"
|
170
|
+
# if git_tag.size >= 2
|
171
|
+
# prerelease = git_prerelease_tag[1].gsub('-', '.')
|
172
|
+
# release_define = "--define 'package_release 0.#{prerelease}'"
|
173
|
+
# else
|
174
|
+
# release_define = "--define 'package_release 0.#{git_prerelease_tag[1]}.1'"
|
175
|
+
# end
|
176
|
+
# else
|
177
|
+
# version_define = "--define 'package_version #{git_tag_version}'"
|
178
|
+
# release_define = if git_tag.size >= 2
|
179
|
+
# "--define 'package_release #{git_tag[1]}'"
|
180
|
+
# else
|
181
|
+
# ''
|
182
|
+
# end
|
183
|
+
# end
|
184
|
+
end
|
185
|
+
|
186
|
+
def version_define
|
187
|
+
git_tag = version.split('-')
|
188
|
+
git_tag_version = git_tag[0]
|
189
|
+
git_tag_version = git_tag_version[1..] if git_tag_version.start_with?('v')
|
190
|
+
|
191
|
+
"--define 'package_version #{git_tag_version}'"
|
192
|
+
end
|
193
|
+
|
194
|
+
def git_tag_define
|
195
|
+
"--define 'git_tag #{version}'"
|
196
|
+
end
|
197
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
desc 'Package OnDemand'
|
4
|
+
namespace :package do
|
5
|
+
require_relative 'package_utils'
|
6
|
+
include PackageUtils
|
7
|
+
|
8
|
+
desc 'Tar and zip OnDemand into packaging dir with version name v#<version>'
|
9
|
+
task :tar, [:output_dir] do |_task, args|
|
10
|
+
version = ENV['VERSION'] || ENV['CI_COMMIT_TAG']
|
11
|
+
version = version.gsub(/^v/, '') unless version.nil?
|
12
|
+
|
13
|
+
chdir src_dir do
|
14
|
+
unless version
|
15
|
+
latest_commit = `git rev-list --tags --max-count=1`.strip[0..6]
|
16
|
+
latest_tag = `git describe --tags #{latest_commit}`.strip[1..]
|
17
|
+
datetime = Time.now.strftime('%Y%m%d-%H%M')
|
18
|
+
version = "#{latest_tag}-#{datetime}-#{latest_commit}"
|
19
|
+
end
|
20
|
+
|
21
|
+
dir = (args[:output_dir] || 'packaging/rpm').to_s.tap { |p| sh "mkdir -p #{p}" }
|
22
|
+
sh "git ls-files | #{tar} -c --transform 's,^,ondemand-#{version}/,' -T - | gzip > #{dir}/v#{version}.tar.gz"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# TODO: refactor these 2 tar tasks. Debian and RHEL expect slightly different names and
|
27
|
+
# what's worse is the whole v prefixing mess
|
28
|
+
task :debian_tar, [:output_dir] do |_task, args|
|
29
|
+
dir = (args[:output_dir] || 'packaging').to_s.tap { |p| sh "mkdir -p #{p}" }
|
30
|
+
tar_file = "#{dir}/#{ood_package_tar}"
|
31
|
+
|
32
|
+
sh "rm #{tar_file}" if File.exist?(tar_file)
|
33
|
+
sh "git ls-files | #{tar} -c --transform 's,^,#{versioned_ood_package}/,' -T - | gzip > #{tar_file}"
|
34
|
+
end
|
35
|
+
|
36
|
+
task :version do
|
37
|
+
puts package_version
|
38
|
+
end
|
39
|
+
|
40
|
+
task :deb, [:dist, :version] => [:build_box] do |_task, args|
|
41
|
+
dir = build_dir(args)
|
42
|
+
Rake::Task['package:debian_tar'].invoke(dir)
|
43
|
+
sh "#{tar} -xzf #{dir}/#{ood_package_tar} -C #{dir}"
|
44
|
+
|
45
|
+
work_dir = "/build/#{versioned_ood_package}"
|
46
|
+
|
47
|
+
base_args = ctr_run_args
|
48
|
+
base_args.concat ['-v', "#{dir}:/build", '-w', work_dir.to_s]
|
49
|
+
base_args.concat ['-e', "DEBUILD_DPKG_BUILDPACKAGE_OPTS='-us -uc -I -i'"]
|
50
|
+
base_args.concat ['-e', 'HOME=/home/ood', '-e', 'USER=ood']
|
51
|
+
base_args.concat ['-e', "VERSION=#{ENV['VERSION']}"] unless ENV['VERSION'].nil?
|
52
|
+
base_args.concat [build_box_image(args)]
|
53
|
+
sh "#{container_runtime} run #{base_args.join(' ')} debmake -b':ruby'"
|
54
|
+
|
55
|
+
debuild_args = ['debuild', '--no-lintian']
|
56
|
+
sh "#{container_runtime} run #{base_args.join(' ')} #{debuild_args.join(' ')}"
|
57
|
+
end
|
58
|
+
|
59
|
+
task :bootstrap_rpm, [:dist, :version] => [:verify_args] do |_task, args|
|
60
|
+
chdir src_dir do
|
61
|
+
build_dir(args).tap do |d|
|
62
|
+
src_dir = "#{d}/rpmbuild/SOURCES".tap { |s| sh "mkdir -p #{s}" }
|
63
|
+
dist_dir(args).tap { |dd| sh "mkdir -p #{dd}" }
|
64
|
+
Rake::Task['package:tar'].invoke(src_dir)
|
65
|
+
|
66
|
+
FileUtils.cp Dir.glob('packaging/rpm/*.{fc,te,ico,png,tar.gz}'), src_dir
|
67
|
+
FileUtils.cp spec_location, d
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
desc 'Build an RPM'
|
73
|
+
task :rpm, [:dist, :version] => [:build_box, :bootstrap_rpm] do |_task, args|
|
74
|
+
dir = build_dir(args)
|
75
|
+
image = build_box_image(args)
|
76
|
+
|
77
|
+
base_args = ctr_run_args
|
78
|
+
base_args.concat ['-v', "#{dir}:#{ctr_home}", '-w', "'#{ctr_home}'"]
|
79
|
+
base_args.concat ['-e', "HOME=#{ctr_home}"]
|
80
|
+
|
81
|
+
chdir src_dir do
|
82
|
+
sh "#{container_runtime} run #{base_args.join(' ')} #{image} rpmbuild #{rpm_build_args.join(' ')}"
|
83
|
+
FileUtils.cp Dir.glob("#{dir}/rpmbuild/RPMS/#{arch}/*.rpm"), dist_dir(args)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
namespace :rpm do
|
88
|
+
desc 'Build nightly RPM'
|
89
|
+
task :nightly, [:dist, :extra_args] do |_task, args|
|
90
|
+
version_major, version_minor = git_tag.gsub(/^v/, '').split('.', 3)
|
91
|
+
date = Time.now.strftime('%Y%m%d')
|
92
|
+
id = ENV['CI_PIPELINE_ID'] || Time.now.strftime('%H%M%S')
|
93
|
+
ENV['VERSION'] = "#{version_major}.#{version_minor}.#{date}-#{id}.#{git_hash}.nightly"
|
94
|
+
Rake::Task['package:rpm'].invoke(args[:dist], args[:extra_args])
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
task :verify_args, [:dist, :version] do |_task, args|
|
99
|
+
raise 'Need to specify :dist and :version' if args[:dist].nil? || args[:version].nil?
|
100
|
+
end
|
101
|
+
|
102
|
+
desc 'Create buildbox for Open OnDemand'
|
103
|
+
task :build_box, [:dist, :version] => [:verify_args] do |_task, args|
|
104
|
+
cmd = build_cmd(
|
105
|
+
template_file("Dockerfile.#{args[:dist]}.erb"),
|
106
|
+
build_box_image(args)
|
107
|
+
)
|
108
|
+
|
109
|
+
sh cmd unless image_exists?(build_box_image(args))
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
FROM centos:8
|
2
|
+
|
3
|
+
# install all the dependencies
|
4
|
+
RUN dnf -y update
|
5
|
+
RUN dnf install -y dnf-utils
|
6
|
+
RUN dnf config-manager --set-enabled powertools
|
7
|
+
RUN dnf -y module enable nodejs:12 ruby:2.7
|
8
|
+
RUN dnf install -y \
|
9
|
+
make gcc gcc-c++ git rsync rpm-build redhat-rpm-config
|
10
|
+
RUN dnf install -y libselinux libselinux-devel
|
11
|
+
RUN dnf install -y selinux-policy selinux-policy-devel
|
12
|
+
RUN dnf install -y scl-utils
|
13
|
+
|
14
|
+
RUN dnf install -y https://yum.osc.edu/ondemand/latest/ondemand-release-web-latest-1-6.noarch.rpm
|
15
|
+
RUN dnf install -y \
|
16
|
+
ondemand-runtime ondemand-scldevel ondemand-build ondemand-ruby ondemand-python ondemand-nodejs
|
17
|
+
|
18
|
+
RUN dnf clean all && rm -rf /var/cache/dnf/*
|
19
|
+
|
20
|
+
RUN groupadd <%= ctr_user %> && \
|
21
|
+
useradd --create-home --gid <%= ctr_user %> <%= ctr_user %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from ubuntu:20.04
|
2
|
+
|
3
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
4
|
+
|
5
|
+
RUN apt update && \
|
6
|
+
apt install -y \
|
7
|
+
ruby=1:2.7+1 ruby-dev=1:2.7+1 \
|
8
|
+
nodejs npm \
|
9
|
+
make g++ gcc sqlite3 libsqlite3-dev \
|
10
|
+
debmake debhelper
|
11
|
+
|
12
|
+
RUN groupadd <%= ctr_user %> && \
|
13
|
+
useradd --create-home --gid <%= ctr_user %> <%= ctr_user %>
|
14
|
+
|
15
|
+
RUN ln -s /bin/bundle2.7 /bin/bundle
|
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.
|
4
|
+
version: 0.0.1.rc.3
|
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:
|
12
|
+
date: 2021-12-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -94,6 +94,10 @@ files:
|
|
94
94
|
- lib/ood_packaging/tasks.rb
|
95
95
|
- lib/ood_packaging/utils.rb
|
96
96
|
- lib/ood_packaging/version.rb
|
97
|
+
- lib/tasks/package_utils.rb
|
98
|
+
- lib/tasks/packaging.rb
|
99
|
+
- lib/tasks/templates/Dockerfile.el.erb
|
100
|
+
- lib/tasks/templates/Dockerfile.ubuntu.erb
|
97
101
|
homepage: https://github.com/OSC/ondemand-packaging
|
98
102
|
licenses:
|
99
103
|
- MIT
|
@@ -113,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
117
|
- !ruby/object:Gem::Version
|
114
118
|
version: 1.3.1
|
115
119
|
requirements: []
|
116
|
-
rubygems_version: 3.2
|
120
|
+
rubygems_version: 3.1.2
|
117
121
|
signing_key:
|
118
122
|
specification_version: 4
|
119
123
|
summary: Open OnDemand packaging library
|