ood_packaging 0.0.1.rc.5 → 0.1.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: 238830f795de725da1420192e4100403ca9b7ab54d579db94be2044b539832a5
4
- data.tar.gz: 67a5fa07e2a32d23ca92e4c56bd246823b0c24c6cb8299412b33021b4d5817c8
3
+ metadata.gz: 80fe80e20ad800efba449504ba04074ede51db0f0bb8c22b77995e28ecc9c350
4
+ data.tar.gz: f5199c57d54acd2c01ad3d50f28315141bbcb199271deec5af9049d790f362a9
5
5
  SHA512:
6
- metadata.gz: ff7fc7dbb44fff8f70fcee969247cbd3df192da97daa9304a86a79b8d72e18bfb46eea13b86313fe234860c7f2a492478f1daa7e64a9ecf8d761085cfa2077cc
7
- data.tar.gz: aaf0c73578f457acdaf05215a6e4e8448529ae5bfa5842b0243ece71f081e17c735e90299e600752ae12bd4d349f9c748e85fade5ea9ec27093e677b8ce95fb7
6
+ metadata.gz: b9d32724c91dbe5d77b886eaaf318b109df6c38bdbb450da79de53fcfc80eb7cccefa7e9ef780b52d0369caa151014a2e21bd694f60345f9d27d24a0d4057cb2
7
+ data.tar.gz: 4a1e28f5c482a9714d4c9dfa272089833b67c87132fc3edd9786cd0494617221704553823f72e89e5d229bda6b483115a0f776c481a602442a2e1b9e3c045fe9
@@ -39,11 +39,11 @@ class OodPackaging::Build
39
39
  end
40
40
 
41
41
  def version
42
- ENV['VERSION'].gsub(/^v/, '')
42
+ ENV['VERSION']
43
43
  end
44
44
 
45
45
  def rpm_version
46
- version.split('-', 2)[0]
46
+ version.gsub(/^v/, '').split('-', 2)[0]
47
47
  end
48
48
 
49
49
  def rpm_release
@@ -53,8 +53,12 @@ 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
+
56
60
  def rpm_defines
57
- defines = ["--define 'git_tag #{ENV['VERSION']}'"]
61
+ defines = ["--define 'git_tag #{version}'"]
58
62
  defines.concat ["--define 'package_version #{rpm_version}'"]
59
63
  defines.concat ["--define 'package_release #{rpm_release}'"]
60
64
  defines.concat ["--define 'scl #{config[:scl]}'"] if config[:scl]
@@ -72,6 +76,8 @@ class OodPackaging::Build
72
76
  '/package/rpm'
73
77
  elsif Dir.exist?('/package/packaging/rpm')
74
78
  '/package/packaging/rpm'
79
+ elsif Dir.exist?('/package/packaging')
80
+ '/package/packaging'
75
81
  else
76
82
  '/package'
77
83
  end
@@ -122,7 +128,7 @@ class OodPackaging::Build
122
128
  end
123
129
 
124
130
  def deb_name
125
- "#{package}-#{version}"
131
+ "#{package}-#{deb_version}"
126
132
  end
127
133
 
128
134
  def rpms
@@ -130,6 +136,7 @@ class OodPackaging::Build
130
136
  end
131
137
 
132
138
  def run!
139
+ fix_env!
133
140
  env_dump! if debug?
134
141
  bootstrap_rpm! if build_box.rpm?
135
142
  bootstrap_deb! if build_box.deb?
@@ -141,6 +148,10 @@ class OodPackaging::Build
141
148
  sanity!
142
149
  end
143
150
 
151
+ def fix_env!
152
+ ENV.delete('GEM_PATH')
153
+ end
154
+
144
155
  def env_dump!
145
156
  ENV.sort.to_h.each_pair do |k, v|
146
157
  puts "#{k}=#{v}"
@@ -181,10 +192,17 @@ class OodPackaging::Build
181
192
  def bootstrap_get_source!
182
193
  if ENV['SKIP_DOWNLOAD'] == 'true'
183
194
  puts "\tSKIP_DOWNLOAD detected, skipping download sources".blue
184
- else
185
- puts "\tDownloading sources defined in #{spec_file}".blue
186
- sh "spectool #{rpm_defines.join(' ')} -g -R -S #{spec_file}#{cmd_suffix}"
195
+ return
196
+ end
197
+ output = `spectool #{rpm_defines.join(' ')} -l -R -S #{spec_file} 2>&1 | grep 'Source0:'`.strip
198
+ exit_code = $CHILD_STATUS.exitstatus
199
+ if exit_code.zero?
200
+ source = File.join(work_dir, 'SOURCES', File.basename(output))
201
+ tar = File.join(work_dir, 'SOURCES', ENV['TAR_NAME'])
202
+ sh "mv #{tar} #{source}" if !File.exist?(source) && File.exist?(tar)
187
203
  end
204
+ puts "\tDownloading sources defined in #{spec_file}".blue
205
+ sh "spectool #{rpm_defines.join(' ')} -g -R -S #{spec_file}#{cmd_suffix}"
188
206
  end
189
207
 
190
208
  def bootstrap_deb!
@@ -201,7 +219,7 @@ class OodPackaging::Build
201
219
  puts "\tBootstrap debian build files".blue
202
220
  Dir.chdir(deb_work_dir) do
203
221
  sh "dh_make -s -y --createorig -f ../#{deb_name}.tar.gz#{cmd_suffix} || true"
204
- sh "dch -b -v #{version} 'Release #{version}'#{cmd_suffix}"
222
+ sh "dch -b -v #{deb_version} 'Release #{deb_version}'#{cmd_suffix}"
205
223
  end
206
224
  end
207
225
 
@@ -2,6 +2,7 @@ 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 GEM_PATH=<%= ctr_gems_dir %>:
5
6
  <% if dist == 'el7' -%>
6
7
  RUN yum update -y && yum clean all && rm -rf /var/cache/yum/*
7
8
  RUN yum install -y yum-utils epel-release centos-release-scl && yum clean all && rm -rf /var/cache/yum/*
@@ -73,9 +73,9 @@ echo "allow-loopback-pinentry" >> <%= ctr_gpg_dir %>/gpg-agent.conf
73
73
 
74
74
  header "Install ood_packaging gem"
75
75
  <%- if rpm? && !dnf? -%>
76
- run scl enable <%= scl_ruby %> -- gem install --no-doc /build/*.gem
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
- run gem install --no-doc /build/*.gem
78
+ run gem install --no-doc --bindir <%= ctr_scripts_dir %> --install-dir <%= ctr_gems_dir %> /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 @config[:dist].nil?
24
+ raise ArgumentError, 'Must provide dist' if dist.nil?
25
25
 
26
26
  # rubocop:disable Style/GuardClause
27
- unless valid_dist?(@config[:dist])
28
- raise ArgumentError, "Invalid dist selected: #{@config[:dist]}. Valid choices are #{valid_dists.join(' ')}"
27
+ unless valid_dist?(dist)
28
+ raise ArgumentError, "Invalid dist selected: #{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 ||= @config[:dist]
34
+ @dist ||= ENV['OOD_PACKAGING_DIST'] || @config[:dist]
35
35
  end
36
36
 
37
37
  def rpm?
@@ -75,12 +75,15 @@ class OodPackaging::Package
75
75
 
76
76
  def package_name
77
77
  name = File.basename(package)
78
- if name =~ /deb|rpm/
78
+ case name
79
+ when /deb|rpm/
79
80
  name = if File.basename(File.dirname(package)) == 'packages'
80
81
  File.basename(File.dirname(File.dirname(package)))
81
82
  else
82
83
  File.basename(File.dirname(package))
83
84
  end
85
+ when 'packaging'
86
+ name = File.basename(File.dirname(package))
84
87
  end
85
88
  name
86
89
  end
@@ -123,10 +126,23 @@ class OodPackaging::Package
123
126
  package
124
127
  end
125
128
 
126
- def rpm_tar_dest_dir
127
- dir = File.join(package, 'rpm')
128
- return dir if Dir.exist?(dir)
129
+ def tar_name
130
+ version = if build_box.rpm?
131
+ rpm_version
132
+ else
133
+ deb_version
134
+ end
135
+ "#{package_name}-#{version}"
136
+ end
129
137
 
138
+ def rpm_tar_dest_dir
139
+ [
140
+ File.join(package, 'rpm'),
141
+ File.join(package, 'packaging/rpm'),
142
+ File.join(package, 'packaging')
143
+ ].each do |dir|
144
+ return dir if Dir.exist?(dir)
145
+ end
130
146
  File.join(package, 'packaging/rpm')
131
147
  end
132
148
 
@@ -157,7 +173,7 @@ class OodPackaging::Package
157
173
  cmd = []
158
174
  cmd.concat exec_launchers if docker_runtime?
159
175
  cmd.concat ['scl', 'enable', scl_ruby, '--'] if podman_runtime? && build_box.scl?
160
- cmd.concat ['rake']
176
+ cmd.concat [File.join(ctr_scripts_dir, 'rake')]
161
177
  cmd.concat ['-q'] unless debug
162
178
  cmd.concat ['-f', File.join(ctr_scripts_dir, 'Rakefile'), 'ood_packaging:package:build']
163
179
  cmd
@@ -197,14 +213,12 @@ class OodPackaging::Package
197
213
  cmd = ['git', 'ls-files', '.', '|', tar, '-c']
198
214
  if build_box.rpm?
199
215
  dir = rpm_tar_dest_dir
200
- version = rpm_version
201
216
  else
202
217
  dir = deb_tar_dest_dir.tap { |p| sh "mkdir -p #{p}" }
203
- version = deb_version
204
218
  cmd.concat ["--transform 'flags=r;s,packaging/deb,debian,'"]
205
219
  end
206
- tar_file = "#{dir}/#{package_name}-#{version}.tar.gz"
207
- cmd.concat ["--transform 's,^,#{package_name}-#{version}/,'"]
220
+ tar_file = "#{dir}/#{tar_name}.tar.gz"
221
+ cmd.concat ["--transform 's,^,#{tar_name}/,'"]
208
222
  cmd.concat ['-T', '-', '|', "gzip > #{tar_file}"]
209
223
 
210
224
  sh "rm #{tar_file}" if File.exist?(tar_file)
@@ -275,6 +289,8 @@ class OodPackaging::Package
275
289
  env = {
276
290
  'DIST' => build_box.dist,
277
291
  'PACKAGE' => package_name,
292
+ 'VERSION' => version,
293
+ 'TAR_NAME' => "#{tar_name}.tar.gz",
278
294
  'GPG_SIGN' => gpg_sign,
279
295
  'GPG_NAME' => gpg_name,
280
296
  'SKIP_DOWNLOAD' => @config[:skip_download],
@@ -282,8 +298,6 @@ class OodPackaging::Package
282
298
  'OOD_GID' => Process.gid,
283
299
  'DEBUG' => debug
284
300
  }
285
- env['VERSION'] = rpm_version if build_box.rpm?
286
- env['VERSION'] = deb_version if build_box.deb?
287
301
  env['GPG_PUBKEY'] = '/gpg.pub' if @config[:gpg_pubkey]
288
302
  env
289
303
  end
@@ -7,6 +7,14 @@ 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
+
10
18
  namespace :buildbox do
11
19
  desc 'Build buildbox image'
12
20
  task :build, [:dist] do |_task, args|
@@ -36,7 +44,7 @@ namespace :ood_packaging do
36
44
  OodPackaging::RakeTask.new(:internal, [:package, :dist]) do |t, args|
37
45
  name = args[:package].split(':').last
38
46
  t.package = File.join(proj_root, 'packages', name)
39
- t.dist = args[:dist]
47
+ t.dist = args[:dist] || ENV['OOD_PACKAGING_DIST']
40
48
  t.version = OodPackaging.package_version(name, args[:dist])
41
49
  t.work_dir = File.join(proj_root, 'tmp/work')
42
50
  t.output_dir = File.join(proj_root, 'tmp/output')
@@ -15,6 +15,13 @@ 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
+
18
25
  def podman_runtime?
19
26
  @podman_runtime ||= ENV['CONTAINER_RT'] == 'podman' || ENV['container'] == 'podman'
20
27
  end
@@ -67,6 +74,10 @@ module OodPackaging::Utils
67
74
  '/ondemand-packaging'
68
75
  end
69
76
 
77
+ def ctr_gems_dir
78
+ File.join(ctr_scripts_dir, 'gems')
79
+ end
80
+
70
81
  def gpg_private_key
71
82
  File.join(ctr_scripts_dir, 'ondemand.sec')
72
83
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Version code for OodPackaging
4
4
  module OodPackaging
5
- VERSION = '0.0.1.rc.5'
5
+ VERSION = '0.1.0'
6
6
  PACKAGE_VERSION = {
7
7
  'ondemand-release' => {
8
8
  '(ubuntu|debian)' => '2.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.0.1.rc.5
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: 2021-12-22 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
@@ -94,10 +94,6 @@ 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
101
97
  homepage: https://github.com/OSC/ondemand-packaging
102
98
  licenses:
103
99
  - MIT
@@ -113,9 +109,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
109
  version: 2.2.0
114
110
  required_rubygems_version: !ruby/object:Gem::Requirement
115
111
  requirements:
116
- - - ">"
112
+ - - ">="
117
113
  - !ruby/object:Gem::Version
118
- version: 1.3.1
114
+ version: '0'
119
115
  requirements: []
120
116
  rubygems_version: 3.1.2
121
117
  signing_key:
@@ -1,197 +0,0 @@
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
@@ -1,111 +0,0 @@
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
@@ -1,21 +0,0 @@
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 %>
@@ -1,15 +0,0 @@
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