packaging 0.104.0 → 0.106.1
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 -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")
|