packaging 0.99.30 → 0.99.31
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/packaging.rb +1 -0
- data/lib/packaging/archive.rb +144 -0
- data/lib/packaging/config/params.rb +8 -0
- data/lib/packaging/util/rake_utils.rb +1 -0
- data/spec/fixtures/config/ext/build_defaults.yaml +1 -1
- data/spec/fixtures/config/ext/project_data.yaml +1 -1
- data/spec/lib/packaging/config_spec.rb +5 -1
- data/tasks/archive.rake +37 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46032268fefeac3b8976ae2cdd44b27bab028dd4154d6dae1b99c62832510e8c
|
4
|
+
data.tar.gz: 56f74df3abe80d40e39caeb2db1c2a4ba025e22ba2e90876191f29cb82a43f33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da7b1a51187cf880d42109e753c9166b5f5147f2f01faf59c880b334ad9abaaacf8ee663a92674b852d2e70133079e649955a925b188df88c256969f49aca972
|
7
|
+
data.tar.gz: 108cfe68681a7c93f1e1b53f6a2a1b620ee5ec5930598c1ab5a01d332ed5460fad9b79fdfb98b082686dbeea3b0442712835783bc6d82384398676084c041536
|
data/lib/packaging.rb
CHANGED
@@ -0,0 +1,144 @@
|
|
1
|
+
module Pkg::Archive
|
2
|
+
module_function
|
3
|
+
|
4
|
+
# Array of base paths for foss artifacts on weth
|
5
|
+
def base_paths
|
6
|
+
[Pkg::Config.yum_repo_path, Pkg::Config.apt_repo_staging_path, Pkg::Config.apt_repo_path, '/opt/downloads'].compact.freeze
|
7
|
+
end
|
8
|
+
|
9
|
+
# Array of paths for temporarily staging artifacts before syncing to release-archives on s3
|
10
|
+
def archive_paths
|
11
|
+
[Pkg::Config.yum_archive_path, Pkg::Config.apt_archive_path, Pkg::Config.freight_archive_path, Pkg::Config.downloads_archive_path].compact.freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
# Move yum directories from repo path to archive staging path
|
15
|
+
def stage_yum_archives(directory)
|
16
|
+
# /opt/repository/yum/#{directory}
|
17
|
+
full_directory = File.join(Pkg::Config.yum_repo_path, directory)
|
18
|
+
archive_path = File.join(Pkg::Config.yum_archive_path, directory)
|
19
|
+
command = <<-CMD
|
20
|
+
if [ ! -d #{full_directory} ]; then
|
21
|
+
if [ -d #{archive_path} ]; then
|
22
|
+
echo "Directory #{full_directory} has already been staged, skipping . . ."
|
23
|
+
exit 0
|
24
|
+
else
|
25
|
+
echo "ERROR: Couldn't find directory #{full_directory}, exiting . . ."
|
26
|
+
exit 1
|
27
|
+
fi
|
28
|
+
fi
|
29
|
+
find #{full_directory} -type l -delete
|
30
|
+
sudo chattr -i -R #{full_directory}
|
31
|
+
sudo mkdir --parents #{File.dirname(archive_path)}
|
32
|
+
sudo chown root:release -R #{Pkg::Config.yum_archive_path}
|
33
|
+
sudo chmod g+w -R #{Pkg::Config.yum_archive_path}
|
34
|
+
mv #{full_directory} #{archive_path}
|
35
|
+
CMD
|
36
|
+
Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.staging_server, command)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Move apt directories from repo path (and repo staging path aka freight path) to archive staging paths
|
40
|
+
def stage_apt_archives(directory)
|
41
|
+
# /opt/tools/freight/apt/$codename/#{directory}
|
42
|
+
# /opt/repository/apt/pool/$codename/#{directory}
|
43
|
+
pool_directory = File.join(Pkg::Config.apt_repo_path, 'pool')
|
44
|
+
command = <<-CMD
|
45
|
+
for full_directory in $(find #{pool_directory} -type d -name #{directory}); do
|
46
|
+
find $full_directory -type l -delete
|
47
|
+
sudo chattr -i -R $full_directory
|
48
|
+
subdirectory=${full_directory##{Pkg::Config.apt_repo_path}/}
|
49
|
+
codename=$(echo $subdirectory | cut -d'/' -f 2)
|
50
|
+
sudo mkdir --parents #{Pkg::Config.apt_archive_path}/$subdirectory
|
51
|
+
sudo chown root:release -R #{Pkg::Config.apt_archive_path}/$subdirectory
|
52
|
+
sudo chmod g+w -R #{Pkg::Config.apt_archive_path}/$subdirectory
|
53
|
+
mv $full_directory #{Pkg::Config.apt_archive_path}/$(dirname $subdirectory)
|
54
|
+
sudo mkdir --parents #{Pkg::Config.freight_archive_path}/$codename
|
55
|
+
sudo chown root:release -R #{Pkg::Config.freight_archive_path}/$codename
|
56
|
+
sudo chmod g+w -R #{Pkg::Config.freight_archive_path}/$codename
|
57
|
+
if [ #{directory} = 'main' ]; then
|
58
|
+
freight_directory=#{Pkg::Config.apt_repo_staging_path}/$codename
|
59
|
+
if [ ! -d $freight_directory ]; then
|
60
|
+
echo "ERROR: Couldn't find freight directory $freight_directory, exiting . . ."
|
61
|
+
exit 1
|
62
|
+
fi
|
63
|
+
for file in $(find $freight_directory -maxdepth 1 -type f); do
|
64
|
+
mv $file #{Pkg::Config.freight_archive_path}/$codename
|
65
|
+
done
|
66
|
+
else
|
67
|
+
freight_directory=#{Pkg::Config.apt_repo_staging_path}/$codename/#{directory}
|
68
|
+
if [ ! -d $freight_directory ]; then
|
69
|
+
if [ -d #{Pkg::Config.freight_archive_path}/$codename/#{directory} ]; then
|
70
|
+
echo "Directory $freight_directory has already been staged, skipping . . ."
|
71
|
+
exit 0
|
72
|
+
else
|
73
|
+
echo "ERROR: Couldn't find freight directory $freight_directory, exiting . . ."
|
74
|
+
exit 1
|
75
|
+
fi
|
76
|
+
fi
|
77
|
+
mv $freight_directory #{Pkg::Config.freight_archive_path}/$codename/#{directory}
|
78
|
+
fi
|
79
|
+
done
|
80
|
+
CMD
|
81
|
+
Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.staging_server, command)
|
82
|
+
end
|
83
|
+
|
84
|
+
# Move downloads directories to archive staging path
|
85
|
+
def stage_downloads_archives(directory)
|
86
|
+
# /opt/downloads/#{directory}
|
87
|
+
full_directory = File.join('/', 'opt', 'downloads', directory)
|
88
|
+
archive_path = File.join(Pkg::Config.downloads_archive_path, directory)
|
89
|
+
command = <<-CMD
|
90
|
+
if [ ! -d #{full_directory} ]; then
|
91
|
+
if [ -d #{archive_path} ]; then
|
92
|
+
echo "Directory #{full_directory} has already been staged, skipping . . ."
|
93
|
+
exit 0
|
94
|
+
else
|
95
|
+
echo "ERROR: Couldn't find directory #{full_directory}, exiting . . ."
|
96
|
+
exit 1
|
97
|
+
fi
|
98
|
+
fi
|
99
|
+
find #{full_directory} -type l -delete
|
100
|
+
sudo chattr -i -R #{full_directory}
|
101
|
+
sudo mkdir --parents #{File.dirname(archive_path)}
|
102
|
+
sudo chown root:release -R #{Pkg::Config.downloads_archive_path}
|
103
|
+
sudo chmod g+w -R #{Pkg::Config.downloads_archive_path}
|
104
|
+
mv #{full_directory} #{archive_path}
|
105
|
+
CMD
|
106
|
+
Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.staging_server, command)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Delete empty directories from repo paths on weth
|
110
|
+
def remove_empty_directories
|
111
|
+
base_paths.each do |path|
|
112
|
+
command = <<-CMD
|
113
|
+
for directory in $(find #{path} -type d); do
|
114
|
+
if [ ! -d $directory ]; then
|
115
|
+
echo "Can't find directory $directory, it was probably already deleted, skipping . . ."
|
116
|
+
continue
|
117
|
+
fi
|
118
|
+
files=$(find $directory -type f)
|
119
|
+
if [ -z "$files" ]; then
|
120
|
+
echo "No files in directory $directory, deleting . . ."
|
121
|
+
sudo rm -rf $directory
|
122
|
+
fi
|
123
|
+
done
|
124
|
+
CMD
|
125
|
+
Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.staging_server, command)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
# Delete broken symlinks from repo paths on weth
|
130
|
+
def remove_dead_symlinks
|
131
|
+
base_paths.each do |path|
|
132
|
+
command = "find #{path} -xtype l -delete"
|
133
|
+
Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.staging_server, command)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
# Delete artifacts from archive staging paths (after they've been synced to s3)
|
138
|
+
def delete_staged_archives
|
139
|
+
archive_paths.each do |archive_path|
|
140
|
+
command = "sudo rm -rf #{File.join(archive_path, '*')}"
|
141
|
+
Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.staging_server, command)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -5,6 +5,7 @@ require "packaging/platforms"
|
|
5
5
|
module Pkg::Params
|
6
6
|
BUILD_PARAMS = [:allow_dirty_tree,
|
7
7
|
:answer_override,
|
8
|
+
:apt_archive_path,
|
8
9
|
:apt_host,
|
9
10
|
:apt_releases,
|
10
11
|
:apt_repo_command,
|
@@ -45,11 +46,13 @@ module Pkg::Params
|
|
45
46
|
:dmg_host,
|
46
47
|
:dmg_path,
|
47
48
|
:dmg_staging_server,
|
49
|
+
:downloads_archive_path,
|
48
50
|
:email,
|
49
51
|
:files,
|
50
52
|
:final_mocks,
|
51
53
|
:foss_only,
|
52
54
|
:foss_platforms,
|
55
|
+
:freight_archive_path,
|
53
56
|
:freight_conf,
|
54
57
|
:gem_default_executables,
|
55
58
|
:gem_dependencies,
|
@@ -179,6 +182,7 @@ module Pkg::Params
|
|
179
182
|
:version,
|
180
183
|
:version_file,
|
181
184
|
:version_strategy,
|
185
|
+
:yum_archive_path,
|
182
186
|
:yum_host,
|
183
187
|
:yum_repo_command,
|
184
188
|
:yum_repo_name,
|
@@ -195,6 +199,7 @@ module Pkg::Params
|
|
195
199
|
ENV_VARS = [
|
196
200
|
{ :var => :allow_dirty_tree, :envvar => :ALLOW_DIRTY_TREE, :type => :bool },
|
197
201
|
{ :var => :answer_override, :envvar => :ANSWER_OVERRIDE },
|
202
|
+
{ :var => :apt_archive_path, :envvar => :APT_ARCHIVE_PATH },
|
198
203
|
{ :var => :apt_host, :envvar => :APT_HOST },
|
199
204
|
{ :var => :apt_releases, :envvar => :APT_RELEASES, :type => :array },
|
200
205
|
{ :var => :apt_repo_path, :envvar => :APT_REPO },
|
@@ -218,9 +223,11 @@ module Pkg::Params
|
|
218
223
|
{ :var => :dmg_host, :envvar => :DMG_HOST },
|
219
224
|
{ :var => :dmg_path, :envvar => :DMG_PATH },
|
220
225
|
{ :var => :dmg_staging_server, :envvar => :DMG_STAGING_SERVER },
|
226
|
+
{ :var => :downloads_archive_path, :envvar => :DOWNLOADS_ARCHIVE_PATH },
|
221
227
|
{ :var => :final_mocks, :envvar => :MOCK },
|
222
228
|
{ :var => :foss_only, :envvar => :FOSS_ONLY, :type => :bool },
|
223
229
|
{ :var => :foss_platforms, :envvar => :FOSS_PLATFORMS, :type => :array },
|
230
|
+
{ :var => :freight_archive_path, :envvar => :FREIGHT_ARCHIVE_PATH },
|
224
231
|
{ :var => :gem_host, :envvar => :GEM_HOST },
|
225
232
|
{ :var => :gpg_key, :envvar => :GPG_KEY },
|
226
233
|
{ :var => :gpg_name, :envvar => :GPG_NAME },
|
@@ -289,6 +296,7 @@ module Pkg::Params
|
|
289
296
|
{ :var => :team, :envvar => :TEAM },
|
290
297
|
{ :var => :update_version_file, :envvar => :NEW_STYLE_PACKAGE },
|
291
298
|
{ :var => :vanagon_project, :envvar => :VANAGON_PROJECT, :type => :bool },
|
299
|
+
{ :var => :yum_archive_path, :envvar => :YUM_ARCHIVE_PATH },
|
292
300
|
{ :var => :yum_host, :envvar => :YUM_HOST },
|
293
301
|
{ :var => :yum_repo_path, :envvar => :YUM_REPO },
|
294
302
|
{ :var => :yum_staging_server, :envvar => :YUM_STAGING_SERVER },
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
../params.yaml
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
../params.yaml
|
@@ -4,7 +4,8 @@ require 'yaml'
|
|
4
4
|
|
5
5
|
describe "Pkg::Config" do
|
6
6
|
|
7
|
-
Build_Params = [:
|
7
|
+
Build_Params = [:apt_archive_path,
|
8
|
+
:apt_host,
|
8
9
|
:apt_releases,
|
9
10
|
:apt_repo_path,
|
10
11
|
:apt_repo_url,
|
@@ -34,9 +35,11 @@ describe "Pkg::Config" do
|
|
34
35
|
:default_mock,
|
35
36
|
:description,
|
36
37
|
:dmg_path,
|
38
|
+
:downloads_archive_path,
|
37
39
|
:email,
|
38
40
|
:files,
|
39
41
|
:final_mocks,
|
42
|
+
:freight_archive_path,
|
40
43
|
:freight_conf,
|
41
44
|
:gem_default_executables,
|
42
45
|
:gem_dependencies,
|
@@ -128,6 +131,7 @@ describe "Pkg::Config" do
|
|
128
131
|
:version,
|
129
132
|
:version_file,
|
130
133
|
:version_strategy,
|
134
|
+
:yum_archive_path,
|
131
135
|
:yum_host,
|
132
136
|
:yum_repo_path,
|
133
137
|
:yum_repo_name,
|
data/tasks/archive.rake
ADDED
@@ -0,0 +1,37 @@
|
|
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 "Sync archived packages to s3"
|
22
|
+
task :deploy_staged_archives_to_s3 => 'pl:fetch' do
|
23
|
+
command = 'sudo /usr/local/bin/s3_repo_sync.sh release-archives.puppet.com'
|
24
|
+
Pkg::Util::Execution.retry_on_fail(:times => 3) do
|
25
|
+
Pkg::Util::Net.remote_ssh_cmd(Pkg::Config.staging_server, command)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Delete packages in archive staging directory"
|
30
|
+
task :archive_cleanup => 'pl:fetch' do
|
31
|
+
Pkg::Archive.remove_empty_directories
|
32
|
+
Pkg::Archive.remove_dead_symlinks
|
33
|
+
Pkg::Archive.delete_staged_archives
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packaging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.99.
|
4
|
+
version: 0.99.31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- README-Solaris.md
|
92
92
|
- README.md
|
93
93
|
- lib/packaging.rb
|
94
|
+
- lib/packaging/archive.rb
|
94
95
|
- lib/packaging/artifactory.rb
|
95
96
|
- lib/packaging/config.rb
|
96
97
|
- lib/packaging/config/params.rb
|
@@ -167,6 +168,7 @@ files:
|
|
167
168
|
- tasks/00_utils.rake
|
168
169
|
- tasks/30_metrics.rake
|
169
170
|
- tasks/apple.rake
|
171
|
+
- tasks/archive.rake
|
170
172
|
- tasks/build.rake
|
171
173
|
- tasks/clean.rake
|
172
174
|
- tasks/config.rake
|
@@ -223,8 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
225
|
- !ruby/object:Gem::Version
|
224
226
|
version: '0'
|
225
227
|
requirements: []
|
226
|
-
|
227
|
-
rubygems_version: 2.7.6
|
228
|
+
rubygems_version: 3.0.3
|
228
229
|
signing_key:
|
229
230
|
specification_version: 4
|
230
231
|
summary: Puppet Labs' packaging automation
|