ood_packaging 0.0.1.rc.4 → 0.0.1.rc.8

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: 0c220605540d87684f17d4988d91d731300664aa85c535382f445093ecc6530f
4
- data.tar.gz: 839080e1db3fac2fe9a6f46d3401e7b97734c99f6019fddc7d4071dfe0625c89
3
+ metadata.gz: 35313ff05abd30a1fe0a89b1b3ea039b243b8dd79fff3abf2fd10b5e4303da34
4
+ data.tar.gz: f53282cdb17c0f842b670d0880bec8fa835256e2b4a5d7360c9b4e735a8d28e5
5
5
  SHA512:
6
- metadata.gz: bb0774a1caf3852107645554f1d7e236ebec7f1a75470fda6f0d78682cf99a27563b087673562f89bd34dc223796f981834111baebc62b7dbc6daac99c2eab27
7
- data.tar.gz: b07bbef9df03ad5ecd8cc0a88baf204e163610b228c203febace5a8e115bf3d2b0fe7b37b72419f16081bb4e43f0f79cddffbe55595bdc9ffc53be2b68bdbdd8
6
+ metadata.gz: 610ae49708662da55f861cfc24ebc27859be6a633521fe12c6d5ab531f36346c06267af0a179be729c47cb0e6cc1047eb5cc80fe78dba9bf6935528d4ad976fe
7
+ data.tar.gz: 6127553b6a531b8b9febc6a14c8eaacf1c6c720859b81a7df7361f278a369c395c26d6057ff05aa2bb1ef51519bf2a6aea55c47affd67740dcbffc4ac667d65b
@@ -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
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ood_packaging/options'
4
- require 'ood_packaging/package'
5
- require 'ood_packaging/utils'
3
+ require 'ood_packaging'
6
4
  require 'rake'
7
5
  require 'rake/tasklib'
8
6
 
@@ -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.4'
5
+ VERSION = '0.0.1.rc.8'
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.4
4
+ version: 0.0.1.rc.8
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-21 00:00:00.000000000 Z
12
+ date: 2021-12-23 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
@@ -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