packaging 0.105.0 → 0.106.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/lib/packaging/archive.rb +2 -2
- data/lib/packaging/artifactory/extensions.rb +1 -0
- data/lib/packaging/artifactory.rb +27 -23
- data/lib/packaging/config/params.rb +191 -199
- data/lib/packaging/config/validations.rb +0 -2
- data/lib/packaging/config.rb +8 -8
- data/lib/packaging/deb/repo.rb +11 -14
- data/lib/packaging/gem.rb +2 -2
- data/lib/packaging/metrics.rb +7 -7
- data/lib/packaging/nuget.rb +0 -1
- data/lib/packaging/paths.rb +11 -13
- data/lib/packaging/platforms.rb +10 -6
- data/lib/packaging/repo.rb +11 -12
- data/lib/packaging/retrieve.rb +1 -1
- data/lib/packaging/rpm/repo.rb +8 -8
- data/lib/packaging/sign/dmg.rb +8 -7
- data/lib/packaging/sign/ips.rb +64 -32
- data/lib/packaging/sign/msi.rb +84 -112
- data/lib/packaging/sign/rpm.rb +1 -1
- data/lib/packaging/sign.rb +0 -1
- data/lib/packaging/tar.rb +2 -4
- data/lib/packaging/util/date.rb +0 -1
- data/lib/packaging/util/distribution_server.rb +2 -2
- data/lib/packaging/util/execution.rb +2 -4
- data/lib/packaging/util/file.rb +2 -3
- data/lib/packaging/util/git.rb +1 -3
- data/lib/packaging/util/git_tags.rb +3 -3
- data/lib/packaging/util/gpg.rb +3 -4
- data/lib/packaging/util/jenkins.rb +0 -3
- data/lib/packaging/util/misc.rb +1 -1
- data/lib/packaging/util/net.rb +26 -22
- data/lib/packaging/util/repo.rb +0 -1
- data/lib/packaging/util/serialization.rb +1 -2
- data/lib/packaging/util/ship.rb +3 -3
- data/lib/packaging/util/sign.rb +8 -8
- data/lib/packaging/util/tool.rb +1 -4
- data/lib/packaging/util/version.rb +1 -5
- data/lib/packaging/util.rb +1 -1
- data/lib/packaging.rb +1 -2
- data/spec/lib/packaging/platforms_spec.rb +1 -1
- data/spec/lib/packaging/sign_spec.rb +1 -1
- data/spec/lib/packaging/util/git_spec.rb +2 -2
- data/spec/lib/packaging/util/git_tag_spec.rb +5 -5
- data/tasks/30_metrics.rake +2 -2
- data/tasks/apple.rake +8 -14
- data/tasks/archive.rake +1 -2
- data/tasks/deb.rake +7 -8
- data/tasks/doc.rake +5 -3
- data/tasks/education.rake +2 -4
- data/tasks/gem.rake +20 -12
- data/tasks/jenkins.rake +27 -15
- data/tasks/jenkins_dynamic.rake +10 -10
- data/tasks/mock.rake +8 -9
- data/tasks/nightly_repos.rake +14 -14
- data/tasks/pe_ship.rake +10 -17
- data/tasks/retrieve.rake +2 -2
- data/tasks/rpm.rake +1 -1
- data/tasks/ship.rake +23 -13
- data/tasks/sign.rake +5 -5
- data/tasks/tar.rake +2 -3
- data/tasks/update.rake +2 -2
- data/tasks/vendor_gems.rake +5 -7
- data/tasks/version.rake +2 -2
- metadata +62 -34
data/lib/packaging/util/sign.rb
CHANGED
@@ -20,7 +20,7 @@ module Pkg::Util::Sign
|
|
20
20
|
# containing a git bundle to be used as the environment for the packaging
|
21
21
|
# repo in a signing operation.
|
22
22
|
signing_bundle = ENV['SIGNING_BUNDLE']
|
23
|
-
sign_tasks
|
23
|
+
sign_tasks = ["pl:sign_rpms"]
|
24
24
|
sign_tasks << "pl:sign_deb_changes" unless Dir["#{root_directory}/**/*.changes"].empty?
|
25
25
|
sign_tasks << "pl:sign_tar" if Pkg::Config.build_tar
|
26
26
|
sign_tasks << "pl:sign_gem" if Pkg::Config.build_gem
|
@@ -29,14 +29,14 @@ module Pkg::Util::Sign
|
|
29
29
|
sign_tasks << "pl:sign_svr4" if Pkg::Config.vanagon_project
|
30
30
|
sign_tasks << "pl:sign_ips" if Pkg::Config.vanagon_project
|
31
31
|
sign_tasks << "pl:sign_msi" if Pkg::Config.build_msi || Pkg::Config.vanagon_project
|
32
|
-
remote_repo
|
33
|
-
build_params
|
32
|
+
remote_repo = Pkg::Util::Net.remote_unpack_git_bundle(Pkg::Config.signing_server, 'HEAD', nil, signing_bundle)
|
33
|
+
build_params = Pkg::Util::Net.remote_buildparams(Pkg::Config.signing_server, Pkg::Config)
|
34
34
|
Pkg::Util::Net.rsync_to(root_directory, Pkg::Config.signing_server, remote_repo)
|
35
|
-
rake_command =
|
36
|
-
cd #{remote_repo} ;
|
37
|
-
#{Pkg::Util::Net.remote_bundle_install_command}
|
38
|
-
bundle exec rake #{sign_tasks.map { |task| task + "[#{root_directory}]" }.join(
|
39
|
-
DOC
|
35
|
+
rake_command = <<~DOC
|
36
|
+
cd #{remote_repo} ;
|
37
|
+
#{Pkg::Util::Net.remote_bundle_install_command}
|
38
|
+
bundle exec rake #{sign_tasks.map { |task| task + "[#{root_directory}]" }.join(' ')} PARAMS_FILE=#{build_params}
|
39
|
+
DOC
|
40
40
|
Pkg::Util::Net.remote_execute(Pkg::Config.signing_server, rake_command)
|
41
41
|
Pkg::Util::Net.rsync_from("#{remote_repo}/#{root_directory}/", Pkg::Config.signing_server, "#{root_directory}/")
|
42
42
|
Pkg::Util::Net.remote_execute(Pkg::Config.signing_server, "rm -rf #{remote_repo}")
|
data/lib/packaging/util/tool.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Utility methods for handling system binaries
|
2
2
|
|
3
3
|
module Pkg::Util::Tool
|
4
|
-
|
5
4
|
# Set up utility methods for handling system binaries
|
6
5
|
#
|
7
6
|
class << self
|
@@ -15,7 +14,7 @@ module Pkg::Util::Tool
|
|
15
14
|
|
16
15
|
if Pkg::Util::OS.windows? && File.extname(location).empty?
|
17
16
|
exts = ENV['PATHEXT']
|
18
|
-
exts = exts ? exts.split(File::PATH_SEPARATOR) : %w
|
17
|
+
exts = exts ? exts.split(File::PATH_SEPARATOR) : %w[.EXE .BAT .CMD .COM]
|
19
18
|
exts.each do |ext|
|
20
19
|
locationext = File.expand_path(location + ext)
|
21
20
|
|
@@ -30,12 +29,10 @@ module Pkg::Util::Tool
|
|
30
29
|
end
|
31
30
|
|
32
31
|
alias :has_tool :find_tool
|
33
|
-
|
34
32
|
end
|
35
33
|
|
36
34
|
# Set up paths to system tools we use in the packaging repo
|
37
35
|
# no matter what distribution we're packaging for.
|
38
36
|
|
39
37
|
GIT = Pkg::Util::Tool.check_tool('git')
|
40
|
-
|
41
38
|
end
|
@@ -80,7 +80,6 @@ module Pkg::Util::Version
|
|
80
80
|
# 5.3.0.rc4-1
|
81
81
|
# 3.0.5.rc6.24.g431768c-1
|
82
82
|
#
|
83
|
-
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
84
83
|
def base_pkg_version(version = Pkg::Config.version)
|
85
84
|
return "#{dot_version(version)}-#{Pkg::Config.release}".split('-') if final?(version) || Pkg::Config.vanagon_project
|
86
85
|
|
@@ -142,9 +141,6 @@ module Pkg::Util::Version
|
|
142
141
|
# If you invoke this the version will only be modified in the temporary copy,
|
143
142
|
# with the intent that it never change the official source tree.
|
144
143
|
#
|
145
|
-
# rubocop:disable Metrics/AbcSize
|
146
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
147
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
148
144
|
def versionbump(workdir = nil)
|
149
145
|
version = ENV['VERSION'] || Pkg::Config.version.to_s.strip
|
150
146
|
new_version = '"' + version + '"'
|
@@ -182,7 +178,7 @@ module Pkg::Util::Version
|
|
182
178
|
# input json file and output if it "looks tagged" or not
|
183
179
|
#
|
184
180
|
# @param json_data [hash] json data hash containing the ref to check
|
185
|
-
def report_json_tags(json_data)
|
181
|
+
def report_json_tags(json_data)
|
186
182
|
puts 'component: ' + File.basename(json_data['url'])
|
187
183
|
puts 'ref: ' + json_data['ref'].to_s
|
188
184
|
if Pkg::Util::Git.remote_tagged?(json_data['url'], json_data['ref'].to_s)
|
data/lib/packaging/util.rb
CHANGED
@@ -29,7 +29,7 @@ module Pkg::Util
|
|
29
29
|
require 'packaging/util/repo'
|
30
30
|
|
31
31
|
def self.boolean_value(var)
|
32
|
-
return true if var == true || (
|
32
|
+
return true if var == true || (var.is_a?(String) && (var.downcase == 'true' || var.downcase =~ /^y$|^yes$/))
|
33
33
|
return false
|
34
34
|
end
|
35
35
|
|
data/lib/packaging.rb
CHANGED
@@ -97,7 +97,7 @@ describe 'Pkg::Platforms' do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
describe '#platform_lookup' do
|
100
|
-
['osx-10.15-x86_64', 'osx-11-x86_64'].each do |platform|
|
100
|
+
['osx-10.15-x86_64', 'osx-11-x86_64', 'osx-12-x86_64'].each do |platform|
|
101
101
|
it 'should return a hash of platform info' do
|
102
102
|
expect(Pkg::Platforms.platform_lookup(platform)).to be_instance_of(Hash)
|
103
103
|
end
|
@@ -150,11 +150,11 @@ describe 'Pkg::Util::Git' do
|
|
150
150
|
|
151
151
|
context '#remote_tagged?' do
|
152
152
|
it 'reports Yes on tagged component' do
|
153
|
-
expect(Pkg::Util::Git.remote_tagged?('
|
153
|
+
expect(Pkg::Util::Git.remote_tagged?('https://github.com/puppetlabs/leatherman.git', 'refs/tags/0.6.2')).to be(true)
|
154
154
|
end
|
155
155
|
|
156
156
|
it 'reports No on non-tagged component' do
|
157
|
-
expect(Pkg::Util::Git.remote_tagged?('
|
157
|
+
expect(Pkg::Util::Git.remote_tagged?('https://github.com/puppetlabs/leatherman.git', '4eef05389ebf418b62af17406c7f9f13fa51f975')).to be(false)
|
158
158
|
end
|
159
159
|
end
|
160
160
|
end
|
@@ -4,32 +4,32 @@ require 'spec_helper'
|
|
4
4
|
describe "Pkg::Util::Git_tag" do
|
5
5
|
context "parse_ref!" do
|
6
6
|
it "fails for a ref that doesn't exist'" do
|
7
|
-
expect { Pkg::Util::Git_tag.new("
|
7
|
+
expect { Pkg::Util::Git_tag.new("https://github.com/puppetlabs/leatherman.git", "garbagegarbage") }.to raise_error(RuntimeError, /ERROR : Not a ref or sha!/)
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
11
|
context "sha?" do
|
12
12
|
it "sets ref type as a sha when passed a sha" do
|
13
|
-
git_tag = Pkg::Util::Git_tag.new("
|
13
|
+
git_tag = Pkg::Util::Git_tag.new("https://github.com/puppetlabs/leatherman.git", "4eef05389ebf418b62af17406c7f9f13fa51f975")
|
14
14
|
expect(git_tag.sha?).to eq(true)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
context "branch?" do
|
19
19
|
it "sets ref type as a branch when passed a branch" do
|
20
|
-
git_tag = Pkg::Util::Git_tag.new("
|
20
|
+
git_tag = Pkg::Util::Git_tag.new("https://github.com/puppetlabs/leatherman.git", "main")
|
21
21
|
expect(git_tag.branch?).to eq(true)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
context "tag?" do
|
26
26
|
it "sets ref type as a tag when passed a tag" do
|
27
|
-
git_tag = Pkg::Util::Git_tag.new("
|
27
|
+
git_tag = Pkg::Util::Git_tag.new("https://github.com/puppetlabs/leatherman.git", "tags/0.6.2")
|
28
28
|
expect(git_tag.tag?).to eq(true)
|
29
29
|
end
|
30
30
|
|
31
31
|
it "sets ref type as a tag when passed a fully qualified tag" do
|
32
|
-
git_tag = Pkg::Util::Git_tag.new("
|
32
|
+
git_tag = Pkg::Util::Git_tag.new("https://github.com/puppetlabs/leatherman.git", "refs/tags/0.6.2")
|
33
33
|
expect(git_tag.tag?).to eq(true)
|
34
34
|
end
|
35
35
|
end
|
data/tasks/30_metrics.rake
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
@metrics
|
1
|
+
@metrics = []
|
2
2
|
def add_shipped_metrics(args)
|
3
3
|
@metrics << {
|
4
4
|
:type => 'shipped',
|
@@ -19,7 +19,7 @@ def post_shipped_metrics
|
|
19
19
|
is_rc = metric[:is_rc]
|
20
20
|
|
21
21
|
uri = URI(Pkg::Config.metrics_url)
|
22
|
-
|
22
|
+
Net::HTTP.post_form(
|
23
23
|
uri,
|
24
24
|
{
|
25
25
|
'type' => type,
|
data/tasks/apple.rake
CHANGED
@@ -18,8 +18,8 @@ PKGBUILD = '/usr/bin/pkgbuild'
|
|
18
18
|
task :setup do
|
19
19
|
# Read the Apple file-mappings
|
20
20
|
begin
|
21
|
-
@source_files
|
22
|
-
rescue => e
|
21
|
+
@source_files = Pkg::Util::Serialization.load_yaml('ext/osx/file_mapping.yaml')
|
22
|
+
rescue StandardError => e
|
23
23
|
fail "Could not load Apple file mappings from 'ext/osx/file_mapping.yaml'\n#{e}"
|
24
24
|
end
|
25
25
|
@package_name = Pkg::Config.project
|
@@ -58,11 +58,11 @@ def make_directory_tree
|
|
58
58
|
end
|
59
59
|
|
60
60
|
if File.exists?('ext/osx/postflight.erb')
|
61
|
-
Pkg::Util::File.erb_file 'ext/osx/postflight.erb', "#{@working_tree[
|
61
|
+
Pkg::Util::File.erb_file 'ext/osx/postflight.erb', "#{@working_tree['scripts']}/postinstall", false, :binding => binding
|
62
62
|
end
|
63
63
|
|
64
64
|
if File.exists?('ext/osx/preflight.erb')
|
65
|
-
Pkg::Util::File.erb_file 'ext/osx/preflight.erb', "#{@working_tree[
|
65
|
+
Pkg::Util::File.erb_file 'ext/osx/preflight.erb', "#{@working_tree['scripts']}/preinstall", false, :binding => binding
|
66
66
|
end
|
67
67
|
|
68
68
|
if File.exists?('ext/osx/prototype.plist.erb')
|
@@ -72,7 +72,6 @@ def make_directory_tree
|
|
72
72
|
if File.exists?('ext/packaging/static_artifacts/PackageInfo.plist')
|
73
73
|
cp 'ext/packaging/static_artifacts/PackageInfo.plist', "#{@scratch}/PackageInfo.plist"
|
74
74
|
end
|
75
|
-
|
76
75
|
end
|
77
76
|
|
78
77
|
# method: build_dmg
|
@@ -113,14 +112,9 @@ def build_dmg
|
|
113
112
|
-format #{dmg_format} \
|
114
113
|
#{dmg_file}")
|
115
114
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
else
|
120
|
-
mkdir_p("#{pwd}/pkg/apple")
|
121
|
-
sh "sudo mv #{pwd}/#{dmg_file} #{pwd}/pkg/apple/#{dmg_file}"
|
122
|
-
puts "moved: #{dmg_file} has been moved to #{pwd}/pkg/apple/#{dmg_file}"
|
123
|
-
end
|
115
|
+
mkdir_p("#{pwd}/pkg/apple") unless File.directory?("#{pwd}/pkg/apple")
|
116
|
+
sh "sudo mv #{pwd}/#{dmg_file} #{pwd}/pkg/apple/#{dmg_file}"
|
117
|
+
puts "moved: #{dmg_file} has been moved to #{pwd}/pkg/apple/#{dmg_file}"
|
124
118
|
end
|
125
119
|
|
126
120
|
# method: pack_source
|
@@ -131,7 +125,7 @@ end
|
|
131
125
|
# installed as the package's payload.
|
132
126
|
#
|
133
127
|
def pack_source
|
134
|
-
work
|
128
|
+
work = (@working_tree['working']).to_s
|
135
129
|
source = pwd
|
136
130
|
|
137
131
|
# Make all necessary directories
|
data/tasks/archive.rake
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
namespace :pl do
|
2
2
|
namespace :remote do
|
3
|
-
|
4
3
|
desc "Move packages from repo paths to archive staging paths"
|
5
|
-
task :stage_archives, [
|
4
|
+
task :stage_archives, %i[yum_directories apt_directories downloads_directories] => 'pl:fetch' do |_t, args|
|
6
5
|
yum_directories = args.yum_directories ? args.yum_directories.split(' ') : []
|
7
6
|
apt_directories = args.apt_directories ? args.apt_directories.split(' ') : []
|
8
7
|
downloads_directories = args.downloads_directories ? args.downloads_directories.split(' ') : []
|
data/tasks/deb.rake
CHANGED
@@ -24,7 +24,7 @@ def debuild(args)
|
|
24
24
|
results_dir = args[:work_dir]
|
25
25
|
begin
|
26
26
|
sh "debuild --no-lintian -uc -us"
|
27
|
-
rescue => e
|
27
|
+
rescue StandardError => e
|
28
28
|
fail "Something went wrong. Hopefully the backscroll or #{results_dir}/#{Pkg::Config.project}_#{Pkg::Config.debversion}.build file has a clue.\n#{e}"
|
29
29
|
end
|
30
30
|
end
|
@@ -47,12 +47,11 @@ task :prep_deb_tars, :work_dir do |t, args|
|
|
47
47
|
pkg_dir = "#{work_dir}/#{Pkg::Config.project}-#{Pkg::Config.debversion}"
|
48
48
|
cd 'ext' do
|
49
49
|
Pathname('debian').find do |file|
|
50
|
-
|
51
|
-
when file.to_s =~ /~$/, file.to_s =~ /^#/
|
50
|
+
if file.to_s =~ /~$/ || file.to_s =~ /^#/
|
52
51
|
next
|
53
|
-
|
52
|
+
elsif file.directory?
|
54
53
|
mkdir_p "#{pkg_dir}/#{file}"
|
55
|
-
|
54
|
+
elsif file.extname == '.erb'
|
56
55
|
Pkg::Util::File.erb_file(file, "#{pkg_dir}/#{file.sub(/\.[^\.]*$/, '')}", false, :binding => Pkg::Config.get_binding)
|
57
56
|
else
|
58
57
|
cp file, "#{pkg_dir}/#{file}"
|
@@ -70,10 +69,10 @@ task :build_deb, :deb_command, :cow do |t, args|
|
|
70
69
|
work_dir = Pkg::Util::File.mktemp
|
71
70
|
subdir = 'pe/' if Pkg::Config.build_pe
|
72
71
|
codename = /base-(.*)-(.*)\.cow/.match(cow)[1] unless cow.nil?
|
73
|
-
dest_dir
|
72
|
+
dest_dir = File.join(Pkg::Config.project_root, "pkg", "#{subdir}deb", codename.to_s, subrepo.to_s)
|
74
73
|
Pkg::Util::Tool.check_tool(deb_build)
|
75
74
|
mkdir_p dest_dir
|
76
|
-
deb_args
|
75
|
+
deb_args = { :work_dir => work_dir, :cow => cow }
|
77
76
|
Rake::Task[:prep_deb_tars].reenable
|
78
77
|
Rake::Task[:prep_deb_tars].invoke(work_dir)
|
79
78
|
cd "#{work_dir}/#{Pkg::Config.project}-#{Pkg::Config.debversion}" do
|
@@ -112,7 +111,7 @@ end
|
|
112
111
|
|
113
112
|
namespace :pl do
|
114
113
|
desc "Create a deb from this repo using the default cow #{Pkg::Config.default_cow}."
|
115
|
-
task :deb => "package:tar"
|
114
|
+
task :deb => "package:tar" do
|
116
115
|
Pkg::Util.check_var('PE_VER', Pkg::Config.pe_version) if Pkg::Config.build_pe
|
117
116
|
Rake::Task[:build_deb].invoke('pdebuild', Pkg::Config.default_cow)
|
118
117
|
end
|
data/tasks/doc.rake
CHANGED
@@ -12,9 +12,11 @@ if Pkg::Config.build_doc
|
|
12
12
|
RDoc::Task.new(:doc) do |rdoc|
|
13
13
|
rdoc.rdoc_dir = 'doc'
|
14
14
|
rdoc.title = "#{Pkg::Config.project} version #{Pkg::Config.version}"
|
15
|
-
Pkg::Config.gem_rdoc_options.
|
16
|
-
|
17
|
-
|
15
|
+
unless Pkg::Config.gem_rdoc_options.nil?
|
16
|
+
Pkg::Config.gem_rdoc_options.each do |option|
|
17
|
+
rdoc.options << option
|
18
|
+
end
|
19
|
+
end
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
data/tasks/education.rake
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
namespace :pl do
|
2
2
|
namespace :jenkins do
|
3
|
-
task :deploy_learning_vm, [
|
4
|
-
|
3
|
+
task :deploy_learning_vm, %i[vm md5 target_bucket target_directory] => "pl:fetch" do |t, args|
|
5
4
|
vm = args.vm or fail ":vm is a required argument for #{t}"
|
6
5
|
md5 = args.md5 or fail ":md5 is a required argument for #{t}"
|
7
6
|
target_bucket = args.target_bucket or fail ":target_bucket is a required argument for #{t}"
|
@@ -13,8 +12,7 @@ namespace :pl do
|
|
13
12
|
puts "'#{vm}' and '#{md5}' have been shipped via s3 to '#{target_bucket}/#{target_directory}'"
|
14
13
|
end
|
15
14
|
|
16
|
-
task :deploy_training_vm, [
|
17
|
-
|
15
|
+
task :deploy_training_vm, %i[vm md5 target_host target_directory] => "pl:fetch" do |t, args|
|
18
16
|
vm = args.vm or fail ":vm is a required argument for #{t}"
|
19
17
|
md5 = args.md5 or fail ":md5 is a required argument for #{t}"
|
20
18
|
target_host = args.target_host or fail ":target_host is a required argument for #{t}"
|
data/tasks/gem.rake
CHANGED
@@ -57,18 +57,24 @@ def create_default_gem_spec
|
|
57
57
|
s.test_files = FileList[Pkg::Config.gem_test_files.split(' ')] unless Pkg::Config.gem_test_files.nil?
|
58
58
|
s.license = Pkg::Config.gem_license unless Pkg::Config.gem_license.nil?
|
59
59
|
s.rubyforge_project = Pkg::Config.gem_forge_project unless Pkg::Config.gem_forge_project.nil?
|
60
|
-
Pkg::Config.gem_rdoc_options.
|
61
|
-
|
62
|
-
|
60
|
+
unless Pkg::Config.gem_rdoc_options.nil?
|
61
|
+
Pkg::Config.gem_rdoc_options.each do |option|
|
62
|
+
s.rdoc_options << option
|
63
|
+
end
|
64
|
+
end
|
63
65
|
end
|
64
66
|
|
65
|
-
Pkg::Config.gem_runtime_dependencies.
|
66
|
-
|
67
|
-
|
67
|
+
unless Pkg::Config.gem_runtime_dependencies.nil?
|
68
|
+
Pkg::Config.gem_runtime_dependencies.each do |gem, version|
|
69
|
+
spec = add_gem_dependency(:spec => spec, :gem => gem, :version => version, :type => :runtime)
|
70
|
+
end
|
71
|
+
end
|
68
72
|
|
69
|
-
Pkg::Config.gem_development_dependencies.
|
70
|
-
|
71
|
-
|
73
|
+
unless Pkg::Config.gem_development_dependencies.nil?
|
74
|
+
Pkg::Config.gem_development_dependencies.each do |gem, version|
|
75
|
+
spec = add_gem_dependency(:spec => spec, :gem => gem, :version => version, :type => :development)
|
76
|
+
end
|
77
|
+
end
|
72
78
|
spec
|
73
79
|
end
|
74
80
|
|
@@ -107,9 +113,11 @@ def create_platform_specific_gems
|
|
107
113
|
Pkg::Config.gem_platform_dependencies.each do |platform, dependency_hash|
|
108
114
|
spec = create_default_gem_spec
|
109
115
|
pf = Gem::Platform.new(platform)
|
110
|
-
|
111
|
-
|
112
|
-
|
116
|
+
if unknown_gems_platform?(pf)
|
117
|
+
fail "
|
118
|
+
Platform: '#{platform}' is not recognized by rubygems.
|
119
|
+
This is probably an erroneous 'gem_platform_dependencies' entry!"
|
120
|
+
end
|
113
121
|
spec.platform = pf
|
114
122
|
dependency_hash.each do |type, gems|
|
115
123
|
t = case type
|
data/tasks/jenkins.rake
CHANGED
@@ -103,7 +103,7 @@ namespace :pl do
|
|
103
103
|
# a PE build, so we always this along as an environment variable task
|
104
104
|
# argument if its the case.
|
105
105
|
#
|
106
|
-
Pkg::Config.task = { :task =>
|
106
|
+
Pkg::Config.task = { :task => build_task.to_s, :args => nil }
|
107
107
|
Pkg::Config.task[:args] = ["PE_BUILD=true"] if @build_pe
|
108
108
|
#
|
109
109
|
# Determine the type of build we're doing to inform jenkins
|
@@ -150,9 +150,9 @@ namespace :pl do
|
|
150
150
|
# Construct the parameters, which is an array of hashes we turn into JSON
|
151
151
|
parameters = [{ "name" => "BUILD_PROPERTIES", "file" => "file0" },
|
152
152
|
{ "name" => "PROJECT_BUNDLE", "file" => "file1" },
|
153
|
-
{ "name" => "PROJECT", "value" =>
|
154
|
-
{ "name" => "BUILD_TYPE", "label" =>
|
155
|
-
{ "name" => "METRICS", "value" =>
|
153
|
+
{ "name" => "PROJECT", "value" => Pkg::Config.project.to_s },
|
154
|
+
{ "name" => "BUILD_TYPE", "label" => build_type.to_s },
|
155
|
+
{ "name" => "METRICS", "value" => metrics.to_s }]
|
156
156
|
|
157
157
|
# Initialize the args array that will hold all of the arguments we pass
|
158
158
|
# to the curl utility method.
|
@@ -172,7 +172,7 @@ namespace :pl do
|
|
172
172
|
# Construct the remaining form arguments. For visual clarity, params that are tied
|
173
173
|
# together are on the same line.
|
174
174
|
#
|
175
|
-
args <<
|
175
|
+
args << [
|
176
176
|
"-Fname=BUILD_PROPERTIES", "-Ffile0=@#{properties}",
|
177
177
|
"-Fname=PROJECT_BUNDLE", "-Ffile1=@#{bundle}",
|
178
178
|
"-Fname=PROJECT", "-Fvalue=#{Pkg::Config.project}",
|
@@ -250,7 +250,7 @@ namespace :pl do
|
|
250
250
|
end
|
251
251
|
|
252
252
|
task :uber_ship_lite => "pl:fetch" do
|
253
|
-
tasks = %w
|
253
|
+
tasks = %w[
|
254
254
|
jenkins:retrieve
|
255
255
|
jenkins:sign_all
|
256
256
|
ship_rpms
|
@@ -260,9 +260,9 @@ namespace :pl do
|
|
260
260
|
ship_tar
|
261
261
|
ship_msi
|
262
262
|
ship_gem
|
263
|
-
|
263
|
+
]
|
264
264
|
tasks.map { |t| "pl:#{t}" }.each do |t|
|
265
|
-
puts "Running #{t}
|
265
|
+
puts "Running \"#{t}\""
|
266
266
|
Rake::Task[t].invoke
|
267
267
|
end
|
268
268
|
# mark the build as successfully shipped
|
@@ -270,13 +270,16 @@ namespace :pl do
|
|
270
270
|
# add the release to release-metrics
|
271
271
|
begin
|
272
272
|
Rake::Task["pl:update_release_metrics"].invoke
|
273
|
-
rescue => e
|
273
|
+
rescue StandardError => e
|
274
274
|
fail "Error updating release-metrics:\n#{e}\nYou will need to add this release manually."
|
275
275
|
end
|
276
276
|
end
|
277
277
|
|
278
278
|
task :stage_nightlies => "pl:fetch" do
|
279
|
-
|
279
|
+
# debian weirdness: ship_nightly_debs uses the old methodology that posts to
|
280
|
+
# apt.puppet.com; stage_nightly_debs uses the updated methodology that posts to
|
281
|
+
# apt.repos.puppet.com
|
282
|
+
tasks = %w[
|
280
283
|
jenkins:retrieve
|
281
284
|
jenkins:sign_all
|
282
285
|
ship_nightly_rpms
|
@@ -284,17 +287,26 @@ namespace :pl do
|
|
284
287
|
ship_nightly_dmg
|
285
288
|
ship_nightly_swix
|
286
289
|
ship_nightly_msi
|
287
|
-
|
290
|
+
]
|
288
291
|
tasks.map { |t| "pl:#{t}" }.each do |t|
|
289
|
-
puts "Running #{t}
|
292
|
+
puts "Running \"#{t}\""
|
290
293
|
Rake::Task[t].invoke
|
291
294
|
end
|
292
295
|
end
|
293
296
|
|
294
297
|
task :ship_nightlies => "pl:fetch" do
|
298
|
+
## nightlies.puppet.com
|
295
299
|
Rake::Task['pl:jenkins:stage_nightlies'].invoke
|
296
300
|
Rake::Task['pl:remote:update_nightly_repos'].invoke
|
297
301
|
Rake::Task['pl:remote:deploy_nightlies_to_s3'].invoke
|
302
|
+
|
303
|
+
# This serves as a cheap feature toggle to avoid things not ready to
|
304
|
+
# use it. It should be removed in future versions.
|
305
|
+
if ENV['NIGHTLY_SHIP_TO_GCP']
|
306
|
+
## apt.repos.puppet.com
|
307
|
+
Rake::Task['pl:stage_nightly_debs'].invoke
|
308
|
+
Rake::Task['pl:remote:sync_apt_repo_to_gcp'].invoke
|
309
|
+
end
|
298
310
|
end
|
299
311
|
|
300
312
|
task :ship_final => "pl:fetch" do
|
@@ -324,7 +336,7 @@ namespace :pl do
|
|
324
336
|
|
325
337
|
desc "Retrieve packages built by jenkins, sign, and ship all!"
|
326
338
|
task :uber_ship => "pl:fetch" do
|
327
|
-
uber_tasks = %w
|
339
|
+
uber_tasks = %w[
|
328
340
|
jenkins:retrieve
|
329
341
|
jenkins:sign_all
|
330
342
|
uber_ship
|
@@ -342,7 +354,7 @@ namespace :pl do
|
|
342
354
|
remote:deploy_yum_repo_to_s3
|
343
355
|
remote:deploy_downloads_to_s3
|
344
356
|
remote:deploy_to_rsync_server
|
345
|
-
|
357
|
+
]
|
346
358
|
|
347
359
|
if Pkg::Util.boolean_value(Pkg::Config.answer_override) && !Pkg::Config.foss_only
|
348
360
|
fail "Using ANSWER_OVERRIDE without FOSS_ONLY=true is dangerous!"
|
@@ -518,7 +530,7 @@ namespace :pl do
|
|
518
530
|
end
|
519
531
|
|
520
532
|
# Assemble the JSON string for the JSON parameter
|
521
|
-
json = JSON.generate("parameter" => [{ "name" => "SHA", "value"
|
533
|
+
json = JSON.generate("parameter" => [{ "name" => "SHA", "value" => Pkg::Config.ref.to_s }])
|
522
534
|
|
523
535
|
# Assemble our arguments to the post
|
524
536
|
args = [
|
data/tasks/jenkins_dynamic.rake
CHANGED
@@ -36,27 +36,27 @@ namespace :pl do
|
|
36
36
|
|
37
37
|
# Generate an XML file for every job configuration erb and attempt to
|
38
38
|
# create a jenkins job from that XML config
|
39
|
-
templates.each do |
|
40
|
-
erb_template
|
41
|
-
xml_file = File.join(work_dir,
|
39
|
+
templates.each do |template|
|
40
|
+
erb_template = File.join(template_dir, template)
|
41
|
+
xml_file = File.join(work_dir, template.gsub('.erb', ''))
|
42
42
|
Pkg::Util::File.erb_file(erb_template, xml_file, nil, :binding => Pkg::Config.get_binding)
|
43
43
|
# If we're creating a job meant to run on a windows box, we need to limit the path length
|
44
44
|
# Max path length allowed is 260 chars, which we manage to exceed with this job name. Luckily,
|
45
45
|
# simply using the short sha rather than the long sha gets us just under the length limit. Gross fix,
|
46
46
|
# I know, but hey, it works for now.
|
47
|
-
if
|
47
|
+
if template == "msi.xml.erb"
|
48
48
|
ref = Pkg::Config.short_ref
|
49
49
|
else
|
50
50
|
ref = Pkg::Config.ref
|
51
51
|
end
|
52
|
-
job_name
|
52
|
+
job_name = "#{Pkg::Config.project}-#{template.gsub('.xml.erb', '')}-#{Pkg::Config.build_date}-#{ref}"
|
53
53
|
puts "Checking for existence of #{job_name}..."
|
54
54
|
if Pkg::Util::Jenkins.jenkins_job_exists?(job_name)
|
55
55
|
raise "Job #{job_name} already exists on #{Pkg::Config.jenkins_build_host}"
|
56
56
|
else
|
57
57
|
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
58
58
|
url = Pkg::Util::Jenkins.create_jenkins_job(job_name, xml_file)
|
59
|
-
if
|
59
|
+
if template == "packaging.xml.erb"
|
60
60
|
ENV["PACKAGE_BUILD_URL"] = url
|
61
61
|
end
|
62
62
|
puts "Verifying job created successfully..."
|
@@ -71,7 +71,7 @@ namespace :pl do
|
|
71
71
|
packaging_name = "#{Pkg::Config.project}-packaging-#{Pkg::Config.build_date}-#{Pkg::Config.ref}"
|
72
72
|
Pkg::Util::RakeUtils.invoke_task("pl:jenkins:trigger_dynamic_job", packaging_name)
|
73
73
|
|
74
|
-
if poll_interval
|
74
|
+
if poll_interval.positive?
|
75
75
|
##
|
76
76
|
# Wait for the '*packaging*' job to finish.
|
77
77
|
#
|
@@ -155,15 +155,15 @@ namespace :pl do
|
|
155
155
|
# Construct the parameters, which is an array of hashes we turn into JSON
|
156
156
|
parameters = [{ "name" => "BUILD_PROPERTIES", "file" => "file0" },
|
157
157
|
{ "name" => "PROJECT_BUNDLE", "file" => "file1" },
|
158
|
-
{ "name" => "PROJECT", "value" =>
|
159
|
-
{ "name" => "METRICS", "value" =>
|
158
|
+
{ "name" => "PROJECT", "value" => Pkg::Config.project.to_s },
|
159
|
+
{ "name" => "METRICS", "value" => metrics.to_s }]
|
160
160
|
|
161
161
|
# Contruct the json string
|
162
162
|
json = JSON.generate("parameter" => parameters)
|
163
163
|
|
164
164
|
# The args array that holds all of the arguments we pass
|
165
165
|
# to the curl utility method.
|
166
|
-
curl_args =
|
166
|
+
curl_args = [
|
167
167
|
"-Fname=BUILD_PROPERTIES", "-Ffile0=@#{properties}",
|
168
168
|
"-Fname=PROJECT_BUNDLE", "-Ffile1=@#{bundle}",
|
169
169
|
"-Fname=PROJECT", "-Fvalue=#{Pkg::Config.project}",
|