packaging 0.88.77

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.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +17 -0
  3. data/README-Solaris.md +117 -0
  4. data/README.md +977 -0
  5. data/lib/packaging.rb +32 -0
  6. data/lib/packaging/archive.rb +126 -0
  7. data/lib/packaging/artifactory.rb +651 -0
  8. data/lib/packaging/artifactory/extensions.rb +94 -0
  9. data/lib/packaging/config.rb +492 -0
  10. data/lib/packaging/config/params.rb +387 -0
  11. data/lib/packaging/config/validations.rb +13 -0
  12. data/lib/packaging/deb.rb +28 -0
  13. data/lib/packaging/deb/repo.rb +264 -0
  14. data/lib/packaging/gem.rb +70 -0
  15. data/lib/packaging/metrics.rb +15 -0
  16. data/lib/packaging/nuget.rb +39 -0
  17. data/lib/packaging/paths.rb +376 -0
  18. data/lib/packaging/platforms.rb +507 -0
  19. data/lib/packaging/repo.rb +155 -0
  20. data/lib/packaging/retrieve.rb +75 -0
  21. data/lib/packaging/rpm.rb +5 -0
  22. data/lib/packaging/rpm/repo.rb +254 -0
  23. data/lib/packaging/sign.rb +8 -0
  24. data/lib/packaging/sign/deb.rb +9 -0
  25. data/lib/packaging/sign/dmg.rb +41 -0
  26. data/lib/packaging/sign/ips.rb +57 -0
  27. data/lib/packaging/sign/msi.rb +124 -0
  28. data/lib/packaging/sign/rpm.rb +115 -0
  29. data/lib/packaging/tar.rb +163 -0
  30. data/lib/packaging/util.rb +146 -0
  31. data/lib/packaging/util/date.rb +20 -0
  32. data/lib/packaging/util/execution.rb +85 -0
  33. data/lib/packaging/util/file.rb +125 -0
  34. data/lib/packaging/util/git.rb +174 -0
  35. data/lib/packaging/util/git_tags.rb +73 -0
  36. data/lib/packaging/util/gpg.rb +66 -0
  37. data/lib/packaging/util/jenkins.rb +95 -0
  38. data/lib/packaging/util/misc.rb +69 -0
  39. data/lib/packaging/util/net.rb +410 -0
  40. data/lib/packaging/util/os.rb +17 -0
  41. data/lib/packaging/util/platform.rb +40 -0
  42. data/lib/packaging/util/rake_utils.rb +112 -0
  43. data/lib/packaging/util/serialization.rb +19 -0
  44. data/lib/packaging/util/ship.rb +300 -0
  45. data/lib/packaging/util/tool.rb +41 -0
  46. data/lib/packaging/util/version.rb +334 -0
  47. data/spec/fixtures/config/ext/build_defaults.yaml +2 -0
  48. data/spec/fixtures/config/ext/project_data.yaml +2 -0
  49. data/spec/fixtures/configs/components/test_file.json +1 -0
  50. data/spec/fixtures/configs/components/test_file_2.json +0 -0
  51. data/spec/fixtures/configs/components/test_file_not_tagged.json +1 -0
  52. data/spec/fixtures/configs/components/test_file_wrong_ext.txt +0 -0
  53. data/spec/fixtures/configs/components/test_file_wrong_ext.wrong +0 -0
  54. data/spec/fixtures/util/pre_tasks.yaml +4 -0
  55. data/spec/lib/packaging/artifactory_spec.rb +221 -0
  56. data/spec/lib/packaging/config_spec.rb +576 -0
  57. data/spec/lib/packaging/deb/repo_spec.rb +157 -0
  58. data/spec/lib/packaging/deb_spec.rb +52 -0
  59. data/spec/lib/packaging/gem_spec.rb +86 -0
  60. data/spec/lib/packaging/paths_spec.rb +418 -0
  61. data/spec/lib/packaging/platforms_spec.rb +178 -0
  62. data/spec/lib/packaging/repo_spec.rb +135 -0
  63. data/spec/lib/packaging/retrieve_spec.rb +100 -0
  64. data/spec/lib/packaging/rpm/repo_spec.rb +133 -0
  65. data/spec/lib/packaging/sign_spec.rb +133 -0
  66. data/spec/lib/packaging/tar_spec.rb +116 -0
  67. data/spec/lib/packaging/util/execution_spec.rb +56 -0
  68. data/spec/lib/packaging/util/file_spec.rb +139 -0
  69. data/spec/lib/packaging/util/git_spec.rb +160 -0
  70. data/spec/lib/packaging/util/git_tag_spec.rb +36 -0
  71. data/spec/lib/packaging/util/gpg_spec.rb +64 -0
  72. data/spec/lib/packaging/util/jenkins_spec.rb +112 -0
  73. data/spec/lib/packaging/util/misc_spec.rb +31 -0
  74. data/spec/lib/packaging/util/net_spec.rb +259 -0
  75. data/spec/lib/packaging/util/os_spec.rb +31 -0
  76. data/spec/lib/packaging/util/rake_utils_spec.rb +70 -0
  77. data/spec/lib/packaging/util/ship_spec.rb +199 -0
  78. data/spec/lib/packaging/util/version_spec.rb +123 -0
  79. data/spec/lib/packaging_spec.rb +19 -0
  80. data/spec/spec_helper.rb +22 -0
  81. data/static_artifacts/PackageInfo.plist +3 -0
  82. data/tasks/00_utils.rake +214 -0
  83. data/tasks/30_metrics.rake +33 -0
  84. data/tasks/apple.rake +268 -0
  85. data/tasks/archive.rake +69 -0
  86. data/tasks/build.rake +12 -0
  87. data/tasks/clean.rake +5 -0
  88. data/tasks/config.rake +35 -0
  89. data/tasks/deb.rake +129 -0
  90. data/tasks/deb_repos.rake +28 -0
  91. data/tasks/deprecated.rake +130 -0
  92. data/tasks/doc.rake +20 -0
  93. data/tasks/education.rake +57 -0
  94. data/tasks/fetch.rake +60 -0
  95. data/tasks/gem.rake +159 -0
  96. data/tasks/jenkins.rake +538 -0
  97. data/tasks/jenkins_dynamic.rake +202 -0
  98. data/tasks/load_extras.rake +21 -0
  99. data/tasks/mock.rake +348 -0
  100. data/tasks/nightly_repos.rake +286 -0
  101. data/tasks/pe_deb.rake +12 -0
  102. data/tasks/pe_rpm.rake +13 -0
  103. data/tasks/pe_ship.rake +226 -0
  104. data/tasks/pe_sign.rake +13 -0
  105. data/tasks/pe_tar.rake +5 -0
  106. data/tasks/retrieve.rake +52 -0
  107. data/tasks/rpm.rake +66 -0
  108. data/tasks/rpm_repos.rake +29 -0
  109. data/tasks/ship.rake +692 -0
  110. data/tasks/sign.rake +154 -0
  111. data/tasks/tag.rake +8 -0
  112. data/tasks/tar.rake +28 -0
  113. data/tasks/update.rake +16 -0
  114. data/tasks/vanagon.rake +35 -0
  115. data/tasks/vendor_gems.rake +117 -0
  116. data/tasks/version.rake +33 -0
  117. data/tasks/z_data_dump.rake +65 -0
  118. data/templates/README +1 -0
  119. data/templates/downstream.xml.erb +47 -0
  120. data/templates/msi.xml.erb +197 -0
  121. data/templates/packaging.xml.erb +346 -0
  122. data/templates/repo.xml.erb +117 -0
  123. metadata +287 -0
@@ -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
@@ -0,0 +1,5 @@
1
+ desc "Clean all built packages, eg rm -rf pkg"
2
+ task :clean do
3
+ rm_rf 'pkg'
4
+ end
5
+
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