packaging 0.104.0 → 0.106.1
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 +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 -193
- 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 +14 -52
- 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 +48 -48
- 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 +81 -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 +25 -23
- data/lib/packaging/util/repo.rb +17 -0
- data/lib/packaging/util/serialization.rb +1 -2
- data/lib/packaging/util/ship.rb +150 -3
- data/lib/packaging/util/sign.rb +47 -0
- data/lib/packaging/util/tool.rb +1 -4
- data/lib/packaging/util/version.rb +1 -5
- data/lib/packaging/util.rb +3 -1
- data/lib/packaging.rb +1 -2
- data/spec/lib/packaging/config_spec.rb +3 -3
- data/spec/lib/packaging/deb/repo_spec.rb +1 -1
- data/spec/lib/packaging/paths_spec.rb +2 -3
- data/spec/lib/packaging/platforms_spec.rb +6 -6
- data/spec/lib/packaging/sign_spec.rb +1 -13
- data/spec/lib/packaging/util/git_spec.rb +2 -2
- data/spec/lib/packaging/util/git_tag_spec.rb +5 -5
- data/spec/lib/packaging/util/ship_spec.rb +0 -2
- 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/deb_repos.rake +1 -0
- data/tasks/doc.rake +5 -3
- data/tasks/education.rake +2 -4
- data/tasks/fetch.rake +1 -0
- data/tasks/gem.rake +20 -12
- data/tasks/jenkins.rake +27 -15
- data/tasks/jenkins_dynamic.rake +10 -10
- data/tasks/load_extras.rake +1 -0
- 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/rpm_repos.rake +1 -0
- data/tasks/ship.rake +24 -12
- data/tasks/sign.rake +6 -6
- 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 +42 -40
@@ -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
|
@@ -51,7 +51,6 @@ describe '#Pkg::Util::Ship' do
|
|
51
51
|
pkg/sles/12/puppet6/ppc64le/puppet-agent-6.19.0-1.sles12.ppc64le.rpm
|
52
52
|
pkg/sles/12/puppet6/x86_64/puppet-agent-6.19.0-1.sles12.x86_64.rpm
|
53
53
|
pkg/sles/15/puppet6/x86_64/puppet-agent-6.19.0-1.sles15.x86_64.rpm
|
54
|
-
pkg/apple/10.14/puppet6/x86_64/puppet-agent-6.19.0-1.osx10.14.dmg
|
55
54
|
pkg/apple/10.15/puppet6/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg
|
56
55
|
pkg/fedora/32/puppet6/x86_64/puppet-agent-6.19.0-1.fc32.x86_64.rpm
|
57
56
|
pkg/windows/puppet-agent-6.19.0-x64.msi
|
@@ -71,7 +70,6 @@ describe '#Pkg::Util::Ship' do
|
|
71
70
|
pkg/puppet6/sles/12/ppc64le/puppet-agent-6.19.0-1.sles12.ppc64le.rpm
|
72
71
|
pkg/puppet6/sles/12/x86_64/puppet-agent-6.19.0-1.sles12.x86_64.rpm
|
73
72
|
pkg/puppet6/sles/15/x86_64/puppet-agent-6.19.0-1.sles15.x86_64.rpm
|
74
|
-
pkg/mac/puppet6/10.14/x86_64/puppet-agent-6.19.0-1.osx10.14.dmg
|
75
73
|
pkg/mac/puppet6/10.15/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg
|
76
74
|
pkg/puppet6/fedora/32/x86_64/puppet-agent-6.19.0-1.fc32.x86_64.rpm
|
77
75
|
pkg/windows/puppet6/puppet-agent-6.19.0-x64.msi
|
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/deb_repos.rake
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
#
|
11
11
|
namespace :pl do
|
12
12
|
namespace :jenkins do
|
13
|
+
# The equivalent to invoking this task is calling Pkg::Util::Repo.deb_repos
|
13
14
|
desc "Create apt repositories of build DEB packages for this SHA on the distributions erver"
|
14
15
|
task :deb_repos => "pl:fetch" do
|
15
16
|
Pkg::Deb::Repo.create_repos
|
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/fetch.rake
CHANGED
@@ -26,6 +26,7 @@ end
|
|
26
26
|
# It uses curl to download the files, and places them in a temporary
|
27
27
|
# directory, e.g. /tmp/somedirectory/{project,team}/Pkg::Config.builder_data_file
|
28
28
|
namespace :pl do
|
29
|
+
# The equivalent to invoking this task is calling Pkg::Util::File.fetch
|
29
30
|
desc "retrieve build-data configurations to override/extend local build_defaults"
|
30
31
|
task :fetch do
|
31
32
|
# Remove .packaging directory from old-style extras loading
|
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}",
|
data/tasks/load_extras.rake
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
# generic tasks with data not generally useful outside the
|
7
7
|
# PL Release team
|
8
8
|
namespace :pl do
|
9
|
+
# The equivalent to invoking this task is calling Pkg::Util::File.load_extras(temp_directory)
|
9
10
|
task :load_extras, :tempdir do |t, args|
|
10
11
|
unless ENV['PARAMS_FILE'] && ENV['PARAMS_FILE'] != ''
|
11
12
|
tempdir = args.tempdir
|
data/tasks/mock.rake
CHANGED
@@ -37,17 +37,16 @@ def mock_artifact(mock_config, cmd_args, mockfile)
|
|
37
37
|
|
38
38
|
# Return a FileList of the build artifacts
|
39
39
|
return FileList[File.join(result_dir, '*.rpm')]
|
40
|
-
|
41
40
|
rescue RuntimeError => error
|
42
41
|
build_log = File.join(result_dir, 'build.log')
|
43
42
|
root_log = File.join(result_dir, 'root.log')
|
44
43
|
content = File.read(build_log) if File.readable?(build_log)
|
45
44
|
|
46
45
|
if File.readable?(root_log)
|
47
|
-
|
46
|
+
warn File.read(root_log)
|
48
47
|
end
|
49
48
|
if content and content.lines.count > 2
|
50
|
-
|
49
|
+
warn content
|
51
50
|
end
|
52
51
|
|
53
52
|
# Any useful info has now been gleaned from the logs in the case of a
|
@@ -99,7 +98,7 @@ def mock_el_family(mock_config)
|
|
99
98
|
family = mock_config.match(/^pupent-(\d\.\d-)?([a-z]+)([0-9]+)-(.*)$/)[2]
|
100
99
|
else
|
101
100
|
first, second = mock_config.split('-')
|
102
|
-
if
|
101
|
+
if ['el', 'fedora'].include?(first)
|
103
102
|
family = first
|
104
103
|
elsif first == 'pl'
|
105
104
|
if second.match(/^\d+$/)
|
@@ -122,7 +121,7 @@ def mock_el_ver(mock_config)
|
|
122
121
|
version = mock_config.match(/^pupent-(\d\.\d-)?([a-z]+)([0-9]+)-(.*)$/)[3]
|
123
122
|
else
|
124
123
|
first, second, third = mock_config.split('-')
|
125
|
-
if
|
124
|
+
if ['el', 'fedora'].include?(first) || (first == 'pl' && second.match(/^\d+$/))
|
126
125
|
version = second
|
127
126
|
else
|
128
127
|
version = third
|
@@ -138,11 +137,11 @@ end
|
|
138
137
|
def rpm_family_and_version
|
139
138
|
if Pkg::Config.vanagon_project
|
140
139
|
Pkg::Config.rpm_targets.split(' ').map do |target|
|
141
|
-
rpm_el_family, rpm_el_version,
|
140
|
+
rpm_el_family, rpm_el_version, = target.split('-')
|
142
141
|
"#{rpm_el_family}-#{rpm_el_version}"
|
143
142
|
end
|
144
143
|
else
|
145
|
-
Pkg::Config.final_mocks.split.map { |mock| "#{mock_el_family(mock)}-#{mock_el_ver(mock)
|
144
|
+
Pkg::Config.final_mocks.split.map { |mock| "#{mock_el_family(mock)}-#{mock_el_ver(mock)}" }
|
146
145
|
end
|
147
146
|
end
|
148
147
|
|
@@ -174,7 +173,7 @@ def mock_defines(mock_config)
|
|
174
173
|
version = mock_el_ver(mock_config)
|
175
174
|
defines = ""
|
176
175
|
if version =~ /^(4|5)$/ or family == "sles"
|
177
|
-
defines = %
|
176
|
+
defines = %(--define "dist .#{family}#{version}" \
|
178
177
|
--define "_source_filedigest_algorithm 1" \
|
179
178
|
--define "_binary_filedigest_algorithm 1" \
|
180
179
|
--define "_binary_payload w9.gzdio" \
|
@@ -318,7 +317,7 @@ end
|
|
318
317
|
def randomize_mock_config_dir(mock_config, mockfile)
|
319
318
|
# basedir will be the location of our temporary mock root
|
320
319
|
basedir = Pkg::Util::File.mktemp
|
321
|
-
chown(
|
320
|
+
chown((ENV['USER']).to_s, "mock", basedir)
|
322
321
|
# Mock requires the sticky bit be set on the basedir
|
323
322
|
chmod(02775, basedir)
|
324
323
|
mockfile ||= File.join('/', 'etc', 'mock', "#{mock_config}.cfg")
|