packaging 0.88.77
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +17 -0
- data/README-Solaris.md +117 -0
- data/README.md +977 -0
- data/lib/packaging.rb +32 -0
- data/lib/packaging/archive.rb +126 -0
- data/lib/packaging/artifactory.rb +651 -0
- data/lib/packaging/artifactory/extensions.rb +94 -0
- data/lib/packaging/config.rb +492 -0
- data/lib/packaging/config/params.rb +387 -0
- data/lib/packaging/config/validations.rb +13 -0
- data/lib/packaging/deb.rb +28 -0
- data/lib/packaging/deb/repo.rb +264 -0
- data/lib/packaging/gem.rb +70 -0
- data/lib/packaging/metrics.rb +15 -0
- data/lib/packaging/nuget.rb +39 -0
- data/lib/packaging/paths.rb +376 -0
- data/lib/packaging/platforms.rb +507 -0
- data/lib/packaging/repo.rb +155 -0
- data/lib/packaging/retrieve.rb +75 -0
- data/lib/packaging/rpm.rb +5 -0
- data/lib/packaging/rpm/repo.rb +254 -0
- data/lib/packaging/sign.rb +8 -0
- data/lib/packaging/sign/deb.rb +9 -0
- data/lib/packaging/sign/dmg.rb +41 -0
- data/lib/packaging/sign/ips.rb +57 -0
- data/lib/packaging/sign/msi.rb +124 -0
- data/lib/packaging/sign/rpm.rb +115 -0
- data/lib/packaging/tar.rb +163 -0
- data/lib/packaging/util.rb +146 -0
- data/lib/packaging/util/date.rb +20 -0
- data/lib/packaging/util/execution.rb +85 -0
- data/lib/packaging/util/file.rb +125 -0
- data/lib/packaging/util/git.rb +174 -0
- data/lib/packaging/util/git_tags.rb +73 -0
- data/lib/packaging/util/gpg.rb +66 -0
- data/lib/packaging/util/jenkins.rb +95 -0
- data/lib/packaging/util/misc.rb +69 -0
- data/lib/packaging/util/net.rb +410 -0
- data/lib/packaging/util/os.rb +17 -0
- data/lib/packaging/util/platform.rb +40 -0
- data/lib/packaging/util/rake_utils.rb +112 -0
- data/lib/packaging/util/serialization.rb +19 -0
- data/lib/packaging/util/ship.rb +300 -0
- data/lib/packaging/util/tool.rb +41 -0
- data/lib/packaging/util/version.rb +334 -0
- data/spec/fixtures/config/ext/build_defaults.yaml +2 -0
- data/spec/fixtures/config/ext/project_data.yaml +2 -0
- data/spec/fixtures/configs/components/test_file.json +1 -0
- data/spec/fixtures/configs/components/test_file_2.json +0 -0
- data/spec/fixtures/configs/components/test_file_not_tagged.json +1 -0
- data/spec/fixtures/configs/components/test_file_wrong_ext.txt +0 -0
- data/spec/fixtures/configs/components/test_file_wrong_ext.wrong +0 -0
- data/spec/fixtures/util/pre_tasks.yaml +4 -0
- data/spec/lib/packaging/artifactory_spec.rb +221 -0
- data/spec/lib/packaging/config_spec.rb +576 -0
- data/spec/lib/packaging/deb/repo_spec.rb +157 -0
- data/spec/lib/packaging/deb_spec.rb +52 -0
- data/spec/lib/packaging/gem_spec.rb +86 -0
- data/spec/lib/packaging/paths_spec.rb +418 -0
- data/spec/lib/packaging/platforms_spec.rb +178 -0
- data/spec/lib/packaging/repo_spec.rb +135 -0
- data/spec/lib/packaging/retrieve_spec.rb +100 -0
- data/spec/lib/packaging/rpm/repo_spec.rb +133 -0
- data/spec/lib/packaging/sign_spec.rb +133 -0
- data/spec/lib/packaging/tar_spec.rb +116 -0
- data/spec/lib/packaging/util/execution_spec.rb +56 -0
- data/spec/lib/packaging/util/file_spec.rb +139 -0
- data/spec/lib/packaging/util/git_spec.rb +160 -0
- data/spec/lib/packaging/util/git_tag_spec.rb +36 -0
- data/spec/lib/packaging/util/gpg_spec.rb +64 -0
- data/spec/lib/packaging/util/jenkins_spec.rb +112 -0
- data/spec/lib/packaging/util/misc_spec.rb +31 -0
- data/spec/lib/packaging/util/net_spec.rb +259 -0
- data/spec/lib/packaging/util/os_spec.rb +31 -0
- data/spec/lib/packaging/util/rake_utils_spec.rb +70 -0
- data/spec/lib/packaging/util/ship_spec.rb +199 -0
- data/spec/lib/packaging/util/version_spec.rb +123 -0
- data/spec/lib/packaging_spec.rb +19 -0
- data/spec/spec_helper.rb +22 -0
- data/static_artifacts/PackageInfo.plist +3 -0
- data/tasks/00_utils.rake +214 -0
- data/tasks/30_metrics.rake +33 -0
- data/tasks/apple.rake +268 -0
- data/tasks/archive.rake +69 -0
- data/tasks/build.rake +12 -0
- data/tasks/clean.rake +5 -0
- data/tasks/config.rake +35 -0
- data/tasks/deb.rake +129 -0
- data/tasks/deb_repos.rake +28 -0
- data/tasks/deprecated.rake +130 -0
- data/tasks/doc.rake +20 -0
- data/tasks/education.rake +57 -0
- data/tasks/fetch.rake +60 -0
- data/tasks/gem.rake +159 -0
- data/tasks/jenkins.rake +538 -0
- data/tasks/jenkins_dynamic.rake +202 -0
- data/tasks/load_extras.rake +21 -0
- data/tasks/mock.rake +348 -0
- data/tasks/nightly_repos.rake +286 -0
- data/tasks/pe_deb.rake +12 -0
- data/tasks/pe_rpm.rake +13 -0
- data/tasks/pe_ship.rake +226 -0
- data/tasks/pe_sign.rake +13 -0
- data/tasks/pe_tar.rake +5 -0
- data/tasks/retrieve.rake +52 -0
- data/tasks/rpm.rake +66 -0
- data/tasks/rpm_repos.rake +29 -0
- data/tasks/ship.rake +692 -0
- data/tasks/sign.rake +154 -0
- data/tasks/tag.rake +8 -0
- data/tasks/tar.rake +28 -0
- data/tasks/update.rake +16 -0
- data/tasks/vanagon.rake +35 -0
- data/tasks/vendor_gems.rake +117 -0
- data/tasks/version.rake +33 -0
- data/tasks/z_data_dump.rake +65 -0
- data/templates/README +1 -0
- data/templates/downstream.xml.erb +47 -0
- data/templates/msi.xml.erb +197 -0
- data/templates/packaging.xml.erb +346 -0
- data/templates/repo.xml.erb +117 -0
- metadata +287 -0
data/tasks/archive.rake
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
namespace :pl do
|
2
|
+
namespace :remote do
|
3
|
+
|
4
|
+
desc "Move packages from repo paths to archive staging paths"
|
5
|
+
task :stage_archives, [:yum_directories, :apt_directories, :downloads_directories] => 'pl:fetch' do |_t, args|
|
6
|
+
yum_directories = args.yum_directories ? args.yum_directories.split(' ') : []
|
7
|
+
apt_directories = args.apt_directories ? args.apt_directories.split(' ') : []
|
8
|
+
downloads_directories = args.downloads_directories ? args.downloads_directories.split(' ') : []
|
9
|
+
|
10
|
+
yum_directories.each do |directory|
|
11
|
+
Pkg::Archive.stage_yum_archives(directory)
|
12
|
+
end
|
13
|
+
apt_directories.each do |directory|
|
14
|
+
Pkg::Archive.stage_apt_archives(directory)
|
15
|
+
end
|
16
|
+
downloads_directories.each do |directory|
|
17
|
+
Pkg::Archive.stage_downloads_archives(directory)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "Create archive yum repo"
|
22
|
+
task :update_archive_yum_repo => 'pl:fetch' do
|
23
|
+
Pkg::Repo.update_repo(Pkg::Config.staging_server, Pkg::Config.yum_repo_command, { :repo_name => '', :repo_path => Pkg::Config.yum_archive_path, :repo_host => Pkg::Config.staging_server })
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Create archive apt repo"
|
27
|
+
task :update_archive_apt_repo => 'pl:fetch' do
|
28
|
+
Pkg::Repo.update_repo(Pkg::Config.staging_server, Pkg::Config.apt_archive_repo_command)
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "Sync archived packages to s3"
|
32
|
+
task :deploy_staged_archives_to_s3 => 'pl:fetch' do
|
33
|
+
Pkg::Util::RakeUtils.invoke_task('pl:remote:deploy_staged_apt_archives_to_s3')
|
34
|
+
Pkg::Util::RakeUtils.invoke_task('pl:remote:deploy_staged_yum_archives_to_s3')
|
35
|
+
Pkg::Util::RakeUtils.invoke_task('pl:remote:deploy_staged_downloads_archives_to_s3')
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "Sync staged apt archive repos to s3"
|
39
|
+
task :deploy_staged_apt_archives_to_s3 => 'pl:fetch' do
|
40
|
+
command = 'sudo /usr/local/bin/s3_repo_sync.sh release-archives.puppet.com/apt'
|
41
|
+
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
42
|
+
Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "Sync staged yum archive repos to s3"
|
47
|
+
task :deploy_staged_yum_archives_to_s3 => 'pl:fetch' do
|
48
|
+
command = 'sudo /usr/local/bin/s3_repo_sync.sh release-archives.puppet.com/yum'
|
49
|
+
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
50
|
+
Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "Sync staged downloads archives to s3"
|
55
|
+
task :deploy_staged_downloads_archives_to_s3 => 'pl:fetch' do
|
56
|
+
command = 'sudo /usr/local/bin/s3_repo_sync.sh release-archives.puppet.com/downloads'
|
57
|
+
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
58
|
+
Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, command)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
desc "Delete packages in archive staging directory"
|
63
|
+
task :archive_cleanup => 'pl:fetch' do
|
64
|
+
Pkg::Archive.remove_empty_directories
|
65
|
+
Pkg::Archive.remove_dead_symlinks
|
66
|
+
Pkg::Archive.delete_staged_archives
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/tasks/build.rake
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Perform a build exclusively from a build params file. Requires that the build
|
2
|
+
# params file include a setting for task, which is an array of the arguments
|
3
|
+
# given to rake originally, including, first, the task name. The params file is
|
4
|
+
# always loaded when passed, so these variables are accessible immediately.
|
5
|
+
namespace :pl do
|
6
|
+
desc "Build from a build params file"
|
7
|
+
task :build_from_params do
|
8
|
+
Pkg::Util.check_var('PARAMS_FILE', ENV['PARAMS_FILE'])
|
9
|
+
Pkg::Util::Git.checkout(Pkg::Config.ref)
|
10
|
+
Rake::Task[Pkg::Config.task[:task]].invoke(Pkg::Config.task[:args])
|
11
|
+
end
|
12
|
+
end
|
data/tasks/clean.rake
ADDED
data/tasks/config.rake
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
namespace :config do
|
2
|
+
desc "print Pkg::Config values for this repo"
|
3
|
+
task :print => 'pl:fetch' do
|
4
|
+
Pkg::Util.filter_configs.each do |key, value|
|
5
|
+
puts "#{key}: #{value}"
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "validate Pkg::Config values for this repo"
|
10
|
+
task :validate do
|
11
|
+
Pkg::Config.perform_validations
|
12
|
+
end
|
13
|
+
|
14
|
+
task :print_hosts => 'pl:fetch' do
|
15
|
+
Pkg::Util.filter_configs('host').each do |key, value|
|
16
|
+
puts "#{key}: #{value}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "print environment variables that can override build-data and build_defaults"
|
21
|
+
task :environment_variables do
|
22
|
+
Pkg::Params::ENV_VARS.each do |values|
|
23
|
+
type = case values[:type]
|
24
|
+
when :array
|
25
|
+
"expects one or more space, comma, or semicolon delimited value; treated as an array"
|
26
|
+
when :bool
|
27
|
+
"expects a boolean value"
|
28
|
+
end
|
29
|
+
|
30
|
+
msg = "#{values[:var]}: #{values[:envvar]}"
|
31
|
+
msg += " (#{type})" if type
|
32
|
+
puts msg
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/tasks/deb.rake
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
def pdebuild(args)
|
4
|
+
results_dir = args[:work_dir]
|
5
|
+
cow = args[:cow]
|
6
|
+
Pkg::Deb.set_cow_envs(cow)
|
7
|
+
update_cow(cow)
|
8
|
+
sh "pdebuild --configfile #{Pkg::Config.pbuild_conf} \
|
9
|
+
--buildresult #{results_dir} \
|
10
|
+
--pbuilder cowbuilder -- \
|
11
|
+
--basepath /var/cache/pbuilder/#{cow}/"
|
12
|
+
$?.success? or fail "Failed to build deb with #{cow}!"
|
13
|
+
end
|
14
|
+
|
15
|
+
def update_cow(cow)
|
16
|
+
ENV['PATH'] = "/usr/sbin:#{ENV['PATH']}"
|
17
|
+
Pkg::Deb.set_cow_envs(cow)
|
18
|
+
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
19
|
+
sh "sudo -E /usr/sbin/cowbuilder --update --override-config --configfile #{Pkg::Config.pbuild_conf} --basepath /var/cache/pbuilder/#{cow} --distribution #{ENV['DIST']} --architecture #{ENV['ARCH']}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def debuild(args)
|
24
|
+
results_dir = args[:work_dir]
|
25
|
+
begin
|
26
|
+
sh "debuild --no-lintian -uc -us"
|
27
|
+
rescue => e
|
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
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
task :prep_deb_tars, :work_dir do |t, args|
|
33
|
+
work_dir = args.work_dir
|
34
|
+
FileUtils.cp "pkg/#{Pkg::Config.project}-#{Pkg::Config.version}.tar.gz", work_dir, { :preserve => true }
|
35
|
+
cd work_dir do
|
36
|
+
sh "tar zxf #{Pkg::Config.project}-#{Pkg::Config.version}.tar.gz"
|
37
|
+
mv "#{Pkg::Config.project}-#{Pkg::Config.version}", "#{Pkg::Config.project}-#{Pkg::Config.debversion}"
|
38
|
+
mv "#{Pkg::Config.project}-#{Pkg::Config.version}.tar.gz", "#{Pkg::Config.project}_#{Pkg::Config.origversion}.orig.tar.gz"
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
# This assumes that work_dir is absolute, which I hope is a safe assumption.
|
43
|
+
#
|
44
|
+
# Also, it turns out that invoking 'find' on a directory that doesn't exist
|
45
|
+
# will fail in nasty ways, so we only do this if the target exists...
|
46
|
+
if Pathname('ext/debian').directory?
|
47
|
+
pkg_dir = "#{work_dir}/#{Pkg::Config.project}-#{Pkg::Config.debversion}"
|
48
|
+
cd 'ext' do
|
49
|
+
Pathname('debian').find do |file|
|
50
|
+
case
|
51
|
+
when file.to_s =~ /~$/, file.to_s =~ /^#/
|
52
|
+
next
|
53
|
+
when file.directory?
|
54
|
+
mkdir_p "#{pkg_dir}/#{file}"
|
55
|
+
when file.extname == '.erb'
|
56
|
+
Pkg::Util::File.erb_file(file, "#{pkg_dir}/#{file.sub(/\.[^\.]*$/, '')}", false, :binding => Pkg::Config.get_binding)
|
57
|
+
else
|
58
|
+
cp file, "#{pkg_dir}/#{file}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
task :build_deb, :deb_command, :cow do |t, args|
|
66
|
+
subrepo = Pkg::Config.apt_repo_name
|
67
|
+
bench = Benchmark.realtime do
|
68
|
+
deb_build = args.deb_command
|
69
|
+
cow = args.cow
|
70
|
+
work_dir = Pkg::Util::File.mktemp
|
71
|
+
subdir = 'pe/' if Pkg::Config.build_pe
|
72
|
+
codename = /base-(.*)-(.*)\.cow/.match(cow)[1] unless cow.nil?
|
73
|
+
dest_dir = File.join(Pkg::Config.project_root, "pkg", "#{subdir}deb", codename.to_s, subrepo.to_s)
|
74
|
+
Pkg::Util::Tool.check_tool(deb_build)
|
75
|
+
mkdir_p dest_dir
|
76
|
+
deb_args = { :work_dir => work_dir, :cow => cow }
|
77
|
+
Rake::Task[:prep_deb_tars].reenable
|
78
|
+
Rake::Task[:prep_deb_tars].invoke(work_dir)
|
79
|
+
cd "#{work_dir}/#{Pkg::Config.project}-#{Pkg::Config.debversion}" do
|
80
|
+
if !File.directory?('debian') and File.directory?('ext/debian')
|
81
|
+
mv 'ext/debian', 'debian'
|
82
|
+
end
|
83
|
+
|
84
|
+
# So this is terrible. It is a hacky hacky bandaid for until this can be
|
85
|
+
# totally refactored into a library with templates drawn entirely from
|
86
|
+
# the tarball. The following two lines are needed because the deb.rake
|
87
|
+
# logic currently re-templates all of the templates in ext/debian for use
|
88
|
+
# in packaging. Then, before the package is built, if the debian
|
89
|
+
# directory doesn't exist (this is really only the case for puppetdb),
|
90
|
+
# the ext/debian directory from the tarball is moved into place. This
|
91
|
+
# breaks ezbake because ezbake maps templates to differently named files
|
92
|
+
# in the tarball templating, but those newly generated templates are
|
93
|
+
# completely ignored without the following two lines that unconditionally
|
94
|
+
# copy anything in ext/debian into the debian directory.
|
95
|
+
mkdir_p 'debian'
|
96
|
+
FileUtils.cp_r(Dir.glob("ext/debian/*"), 'debian', { :preserve => true })
|
97
|
+
send(deb_build, deb_args)
|
98
|
+
cp FileList["#{work_dir}/*.deb", "#{work_dir}/*.dsc", "#{work_dir}/*.changes", "#{work_dir}/*.debian.tar.gz", "#{work_dir}/*.orig.tar.gz", "${work_dir}/*.diff.gz"], dest_dir
|
99
|
+
rm_rf "#{work_dir}/#{Pkg::Config.project}-#{Pkg::Config.debversion}"
|
100
|
+
rm_rf work_dir
|
101
|
+
end
|
102
|
+
end
|
103
|
+
puts "Finished building in: #{bench}"
|
104
|
+
end
|
105
|
+
|
106
|
+
namespace :package do
|
107
|
+
desc "Create a deb from this repo, using debuild (all builddeps must be installed)"
|
108
|
+
task :deb => :tar do
|
109
|
+
Rake::Task[:build_deb].invoke('debuild')
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
namespace :pl do
|
114
|
+
desc "Create a deb from this repo using the default cow #{Pkg::Config.default_cow}."
|
115
|
+
task :deb => "package:tar" do
|
116
|
+
Pkg::Util.check_var('PE_VER', Pkg::Config.pe_version) if Pkg::Config.build_pe
|
117
|
+
Rake::Task[:build_deb].invoke('pdebuild', Pkg::Config.default_cow)
|
118
|
+
end
|
119
|
+
|
120
|
+
desc "Create debs from this git repository using all cows specified in build_defaults yaml"
|
121
|
+
task :deb_all do
|
122
|
+
Pkg::Util.check_var('PE_VER', Pkg::Config.pe_version) if Pkg::Config.build_pe
|
123
|
+
Pkg::Config.cows.split(' ').each do |cow|
|
124
|
+
Rake::Task["package:tar"].invoke
|
125
|
+
Rake::Task[:build_deb].reenable
|
126
|
+
Rake::Task[:build_deb].invoke('pdebuild', cow)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
##
|
2
|
+
# Create a debian repository under the standard pkg/ directory layout that the
|
3
|
+
# packaging repo creates. The standard layout is pkg/deb/$distribution/files.
|
4
|
+
# The repository is created in the 'repos' directory under the jenkins build
|
5
|
+
# directories on the distribution server, e.g.
|
6
|
+
# /opt/jenkins-builds/$project/$sha/repos. Because we're creating deb
|
7
|
+
# repositories on the fly, we have to generate the configuration files as well.
|
8
|
+
# We assume every directory under the `deb` directory is named for a
|
9
|
+
# distribution, and we use this in creating our configurations.
|
10
|
+
#
|
11
|
+
namespace :pl do
|
12
|
+
namespace :jenkins do
|
13
|
+
desc "Create apt repositories of build DEB packages for this SHA on the distributions erver"
|
14
|
+
task :deb_repos => "pl:fetch" do
|
15
|
+
Pkg::Deb::Repo.create_repos
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Create apt repository configs for package repos for this sha/tag on the distribution server"
|
19
|
+
task :generate_deb_repo_configs => "pl:fetch" do
|
20
|
+
Pkg::Deb::Repo.generate_repo_configs
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Retrieve debian apt repository configs for this sha"
|
24
|
+
task :deb_repo_configs => "pl:fetch" do
|
25
|
+
Pkg::Deb::Repo::retrieve_repo_configs
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
# Emit useful messages for tasks that have been moved or removed.
|
2
|
+
|
3
|
+
|
4
|
+
deprecation_message_winston = "The ticket generation tasks have moved. These now live in Winston: https://github.com/puppetlabs/winston"
|
5
|
+
|
6
|
+
namespace :pl do
|
7
|
+
desc "The ticket generation tasks have moved. These now live in Winston: https://github.com/puppetlabs/winston"
|
8
|
+
task :new_server_platform_tickets do
|
9
|
+
warn deprecation_message_winston
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "The ticket generation tasks have moved. These now live in Winston: https://github.com/puppetlabs/winston"
|
13
|
+
task :platform_addition do
|
14
|
+
warn deprecation_message_winston
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "The ticket generation tasks have moved. These now live in Winston: https://github.com/puppetlabs/winston"
|
18
|
+
task :agent_tickets do
|
19
|
+
warn deprecation_message_winston
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "The ticket generation tasks have moved. These now live in Winston: https://github.com/puppetlabs/winston"
|
23
|
+
task :platform_removal do
|
24
|
+
warn deprecation_message_winston
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "The ticket generation tasks have moved. These now live in Winston: https://github.com/puppetlabs/winston"
|
28
|
+
task :puppet_agent_release_tickets do
|
29
|
+
warn deprecation_message_winston
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "The ticket generation tasks have moved. These now live in Winston: https://github.com/puppetlabs/winston"
|
33
|
+
task :tickets do
|
34
|
+
warn deprecation_message_winston
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if Pkg::Config.build_ips
|
39
|
+
ips_dep_warning = "The IPS build tasks have been removed from puppetlabs/packaging. Please port all Solaris projects to vanagon (https://github.com/puppetlabs/vanagon)"
|
40
|
+
namespace :package do
|
41
|
+
namespace :ips do
|
42
|
+
desc ips_dep_warning
|
43
|
+
task :clean do
|
44
|
+
warn ips_dep_warning
|
45
|
+
end
|
46
|
+
|
47
|
+
desc ips_dep_warning
|
48
|
+
task :clean_pkgs do
|
49
|
+
warn ips_dep_warning
|
50
|
+
end
|
51
|
+
|
52
|
+
desc ips_dep_warning
|
53
|
+
task :prepare do
|
54
|
+
warn ips_dep_warning
|
55
|
+
end
|
56
|
+
|
57
|
+
desc ips_dep_warning
|
58
|
+
task :prototmpl do
|
59
|
+
warn ips_dep_warning
|
60
|
+
end
|
61
|
+
|
62
|
+
desc ips_dep_warning
|
63
|
+
task :protogen do
|
64
|
+
warn ips_dep_warning
|
65
|
+
end
|
66
|
+
|
67
|
+
desc ips_dep_warning
|
68
|
+
task :protodeps do
|
69
|
+
warn ips_dep_warning
|
70
|
+
end
|
71
|
+
|
72
|
+
desc ips_dep_warning
|
73
|
+
task :protomogrify do
|
74
|
+
warn ips_dep_warning
|
75
|
+
end
|
76
|
+
|
77
|
+
desc ips_dep_warning
|
78
|
+
task :protomogrify do
|
79
|
+
warn ips_dep_warning
|
80
|
+
end
|
81
|
+
|
82
|
+
desc ips_dep_warning
|
83
|
+
task :lint do
|
84
|
+
warn ips_dep_warning
|
85
|
+
end
|
86
|
+
|
87
|
+
desc ips_dep_warning
|
88
|
+
task :package do
|
89
|
+
warn ips_dep_warning
|
90
|
+
end
|
91
|
+
|
92
|
+
desc ips_dep_warning
|
93
|
+
task :createrepo do
|
94
|
+
warn ips_dep_warning
|
95
|
+
end
|
96
|
+
|
97
|
+
desc ips_dep_warning
|
98
|
+
task :send do
|
99
|
+
warn ips_dep_warning
|
100
|
+
end
|
101
|
+
|
102
|
+
desc ips_dep_warning
|
103
|
+
task :receive do
|
104
|
+
warn ips_dep_warning
|
105
|
+
end
|
106
|
+
|
107
|
+
desc ips_dep_warning
|
108
|
+
task :dry_install do
|
109
|
+
warn ips_dep_warning
|
110
|
+
end
|
111
|
+
|
112
|
+
desc ips_dep_warning
|
113
|
+
task :p5p do
|
114
|
+
warn ips_dep_warning
|
115
|
+
end
|
116
|
+
|
117
|
+
desc ips_dep_warning
|
118
|
+
task :ips do
|
119
|
+
warn ips_dep_warning
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
namespace :pl do
|
125
|
+
desc ips_dep_warning
|
126
|
+
task :ips do
|
127
|
+
warn ips_dep_warning
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
data/tasks/doc.rake
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Most projects set rdoc options in the context of gem building. However, mcollective
|
2
|
+
# generates its own rdoc package. We can reuse the Pkg::Config.gem_rdoc_options here
|
3
|
+
|
4
|
+
if Pkg::Config.build_doc
|
5
|
+
begin
|
6
|
+
require 'rdoc/task'
|
7
|
+
rescue LoadError
|
8
|
+
require 'rake/rdoctask'
|
9
|
+
end
|
10
|
+
|
11
|
+
namespace :package do
|
12
|
+
RDoc::Task.new(:doc) do |rdoc|
|
13
|
+
rdoc.rdoc_dir = 'doc'
|
14
|
+
rdoc.title = "#{Pkg::Config.project} version #{Pkg::Config.version}"
|
15
|
+
Pkg::Config.gem_rdoc_options.each do |option|
|
16
|
+
rdoc.options << option
|
17
|
+
end unless Pkg::Config.gem_rdoc_options.nil?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
namespace :pl do
|
2
|
+
namespace :jenkins do
|
3
|
+
task :deploy_learning_vm, [:vm, :md5, :target_bucket, :target_directory] => "pl:fetch" do |t, args|
|
4
|
+
|
5
|
+
vm = args.vm or fail ":vm is a required argument for #{t}"
|
6
|
+
md5 = args.md5 or fail ":md5 is a required argument for #{t}"
|
7
|
+
target_bucket = args.target_bucket or fail ":target_bucket is a required argument for #{t}"
|
8
|
+
target_directory = args.target_directory or fail ":target_directory is a required argument for #{t}"
|
9
|
+
|
10
|
+
Pkg::Util::Net.s3sync_to(vm, target_bucket, target_directory, ["--acl-public"])
|
11
|
+
Pkg::Util::Net.s3sync_to(md5, target_bucket, target_directory, ["--acl-public"])
|
12
|
+
|
13
|
+
puts "'#{vm}' and '#{md5}' have been shipped via s3 to '#{target_bucket}/#{target_directory}'"
|
14
|
+
end
|
15
|
+
|
16
|
+
task :deploy_training_vm, [:vm, :md5, :target_host, :target_directory] => "pl:fetch" do |t, args|
|
17
|
+
|
18
|
+
vm = args.vm or fail ":vm is a required argument for #{t}"
|
19
|
+
md5 = args.md5 or fail ":md5 is a required argument for #{t}"
|
20
|
+
target_host = args.target_host or fail ":target_host is a required argument for #{t}"
|
21
|
+
target_directory = args.target_directory or fail ":target_directory is a required argument for #{t}"
|
22
|
+
|
23
|
+
# Determine VM we are trying to ship and set our link_target accordingly
|
24
|
+
case vm
|
25
|
+
when /training/
|
26
|
+
link_target = ["puppet-training.ova", "puppet-student.ova", "puppet-training.box", "puppet-student.box"]
|
27
|
+
# We want the -*- in this regex so we don't pick up the links
|
28
|
+
archive_cmd = "mv #{target_directory}/puppet-*-training* #{target_directory}/archive"
|
29
|
+
when /master/
|
30
|
+
link_target = ["puppet-master.ova", "puppet-master.box"]
|
31
|
+
# We want the -*- in this regex so we don't pick up the links
|
32
|
+
archive_cmd = "mv #{target_directory}/puppet-*-master* #{target_directory}/archive"
|
33
|
+
else
|
34
|
+
fail "We do not know the type of VM you are trying to ship. Cannot update symlinks"
|
35
|
+
end
|
36
|
+
|
37
|
+
# If the archive directory exists, move old VMs to it
|
38
|
+
Pkg::Util::Net.remote_execute(target_host, "if [ -d #{target_directory}/archive ]; then #{archive_cmd}; fi")
|
39
|
+
|
40
|
+
# Ship VM and md5 to host
|
41
|
+
Pkg::Util::Net.rsync_to(vm, target_host, target_directory)
|
42
|
+
Pkg::Util::Net.rsync_to(md5, target_host, target_directory)
|
43
|
+
|
44
|
+
# Update symlink to point to the VM we just shipped
|
45
|
+
link_target.each do |link|
|
46
|
+
link_path = File.join(target_directory, link)
|
47
|
+
link_md5_path = "#{link_path}.md5"
|
48
|
+
Pkg::Util::Net.remote_execute(target_host, "if [[ -L '#{link_path}' ]] && [[ ! -e '#{link_path}' ]] ; then echo '#{link_path} is a broken link, deleting' ; unlink '#{link_path}' ; fi")
|
49
|
+
Pkg::Util::Net.remote_execute(target_host, "if [[ -L '#{link_md5_path}' ]] && [[ ! -e '#{link_md5_path}' ]] ; then echo '#{link_md5_path} is a broken link, deleting' ; unlink '#{link_md5_path}' ; fi")
|
50
|
+
Pkg::Util::Net.remote_execute(target_host, "cd #{target_directory} ; ln -sf #{File.basename(vm)} #{link}")
|
51
|
+
Pkg::Util::Net.remote_execute(target_host, "cd #{target_directory} ; ln -sf #{File.basename(md5)} #{link}.md5")
|
52
|
+
end
|
53
|
+
|
54
|
+
puts "'#{vm}' and '#{md5}' have been shipped via rsync to '#{target_host}/#{target_directory}'"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|