ood_packaging 0.0.1.rc.5 → 0.0.1.rc.6

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: 774e160312368cf79021df01d8aaf851b6f4efd7ef23890a2f02b4edb5cb6202
4
+ data.tar.gz: 4f169c7948828b5f870e2a0d7a05dc04f95c73b62b0fd40fe7260238c9a7417f
5
5
  SHA512:
6
- metadata.gz: ff7fc7dbb44fff8f70fcee969247cbd3df192da97daa9304a86a79b8d72e18bfb46eea13b86313fe234860c7f2a492478f1daa7e64a9ecf8d761085cfa2077cc
7
- data.tar.gz: aaf0c73578f457acdaf05215a6e4e8448529ae5bfa5842b0243ece71f081e17c735e90299e600752ae12bd4d349f9c748e85fade5ea9ec27093e677b8ce95fb7
6
+ metadata.gz: fe2cc99020a235d8cfa3caffb25e26f1ef23f8454d5278093780406e37d669e9f76af2f3c2a70cab350f9c75821f5f70fddc675563569fb0b8bc618d9e4d2758
7
+ data.tar.gz: 45ec1cc23b9cfdc63a2c47cb077ac153bae08facb4e5d7a5486d359c5f844dd5ac1b190d6fb33ba17f17cc3ab076fed9fc5e3b00246fb9c2f17c2ce003fb29dc
@@ -130,6 +130,7 @@ class OodPackaging::Build
130
130
  end
131
131
 
132
132
  def run!
133
+ fix_env!
133
134
  env_dump! if debug?
134
135
  bootstrap_rpm! if build_box.rpm?
135
136
  bootstrap_deb! if build_box.deb?
@@ -141,6 +142,10 @@ class OodPackaging::Build
141
142
  sanity!
142
143
  end
143
144
 
145
+ def fix_env!
146
+ ENV.delete('GEM_PATH')
147
+ end
148
+
144
149
  def env_dump!
145
150
  ENV.sort.to_h.each_pair do |k, v|
146
151
  puts "#{k}=#{v}"
@@ -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"
@@ -157,7 +157,7 @@ class OodPackaging::Package
157
157
  cmd = []
158
158
  cmd.concat exec_launchers if docker_runtime?
159
159
  cmd.concat ['scl', 'enable', scl_ruby, '--'] if podman_runtime? && build_box.scl?
160
- cmd.concat ['rake']
160
+ cmd.concat [File.join(ctr_scripts_dir, 'rake')]
161
161
  cmd.concat ['-q'] unless debug
162
162
  cmd.concat ['-f', File.join(ctr_scripts_dir, 'Rakefile'), 'ood_packaging:package:build']
163
163
  cmd
@@ -67,6 +67,10 @@ module OodPackaging::Utils
67
67
  '/ondemand-packaging'
68
68
  end
69
69
 
70
+ def ctr_gems_dir
71
+ File.join(ctr_scripts_dir, 'gems')
72
+ end
73
+
70
74
  def gpg_private_key
71
75
  File.join(ctr_scripts_dir, 'ondemand.sec')
72
76
  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.0.1.rc.6'
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.0.1.rc.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trey Dockendorf
@@ -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