packaging 0.88.77

Sign up to get free protection for your applications and to get access to all the features.
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