packaging 0.99.30 → 0.99.31
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.
- 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
|