packaging 0.88.77 → 0.99.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +128 -74
- data/lib/packaging/artifactory.rb +60 -433
- data/lib/packaging/config/params.rb +7 -28
- data/lib/packaging/config.rb +50 -150
- data/lib/packaging/deb/repo.rb +19 -20
- data/lib/packaging/gem.rb +83 -41
- data/lib/packaging/ips.rb +57 -0
- data/lib/packaging/msi.rb +89 -0
- data/lib/packaging/nuget.rb +1 -1
- data/lib/packaging/osx.rb +36 -0
- data/lib/packaging/paths.rb +87 -225
- data/lib/packaging/platforms.rb +416 -443
- data/lib/packaging/repo.rb +22 -122
- data/lib/packaging/retrieve.rb +7 -36
- data/lib/packaging/rpm/repo.rb +8 -5
- data/lib/packaging/tar.rb +0 -9
- data/lib/packaging/util/date.rb +0 -5
- data/lib/packaging/util/execution.rb +2 -2
- data/lib/packaging/util/git.rb +1 -1
- data/lib/packaging/util/gpg.rb +1 -5
- data/lib/packaging/util/net.rb +37 -79
- data/lib/packaging/util/rake_utils.rb +0 -1
- data/lib/packaging/util/ship.rb +13 -142
- data/lib/packaging/util/tool.rb +1 -1
- data/lib/packaging/util/version.rb +0 -8
- data/lib/packaging/util.rb +2 -2
- data/lib/packaging.rb +3 -3
- data/spec/fixtures/config/params.yaml +2 -0
- data/spec/lib/packaging/artifactory_spec.rb +16 -66
- data/spec/lib/packaging/config_spec.rb +29 -49
- data/spec/lib/packaging/deb/repo_spec.rb +7 -16
- data/spec/lib/packaging/paths_spec.rb +56 -321
- data/spec/lib/packaging/platforms_spec.rb +21 -46
- data/spec/lib/packaging/repo_spec.rb +40 -78
- data/spec/lib/packaging/retrieve_spec.rb +8 -47
- data/spec/lib/packaging/rpm/repo_spec.rb +4 -4
- data/spec/lib/packaging/tar_spec.rb +40 -34
- data/spec/lib/packaging/util/git_tag_spec.rb +1 -1
- data/spec/lib/packaging/util/gpg_spec.rb +1 -1
- data/spec/lib/packaging/util/net_spec.rb +15 -35
- data/spec/lib/packaging/util/ship_spec.rb +63 -145
- data/spec/spec_helper.rb +14 -0
- data/tasks/00_utils.rake +6 -4
- data/tasks/apple.rake +0 -2
- data/tasks/config.rake +0 -5
- data/tasks/education.rake +5 -5
- data/tasks/fetch.rake +14 -17
- data/tasks/gem.rake +121 -134
- data/tasks/jenkins.rake +7 -51
- data/tasks/nightly_repos.rake +69 -20
- data/tasks/pe_ship.rake +11 -16
- data/tasks/retrieve.rake +6 -13
- data/tasks/ship.rake +256 -196
- data/tasks/sign.rake +135 -63
- data/tasks/tar.rake +6 -0
- data/templates/packaging.xml.erb +7 -9
- data/templates/repo.xml.erb +3 -6
- metadata +27 -80
- data/lib/packaging/archive.rb +0 -126
- data/lib/packaging/artifactory/extensions.rb +0 -94
- data/lib/packaging/config/validations.rb +0 -13
- data/lib/packaging/metrics.rb +0 -15
- data/lib/packaging/sign/deb.rb +0 -9
- data/lib/packaging/sign/dmg.rb +0 -41
- data/lib/packaging/sign/ips.rb +0 -57
- data/lib/packaging/sign/msi.rb +0 -124
- data/lib/packaging/sign/rpm.rb +0 -115
- data/lib/packaging/sign.rb +0 -8
- data/spec/lib/packaging/gem_spec.rb +0 -86
- data/spec/lib/packaging/sign_spec.rb +0 -133
- data/tasks/archive.rake +0 -69
@@ -54,82 +54,62 @@ describe "Pkg::Util::Net" do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
describe "remote_ssh_cmd" do
|
57
|
-
it "should be able to call via deprecated shim" do
|
58
|
-
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
59
|
-
Pkg::Util::Execution.should_receive(:capture3).with("#{ssh} -t foo 'set -e;bar'")
|
60
|
-
Pkg::Util::Execution.should_receive(:success?).and_return(true)
|
61
|
-
Pkg::Util::Net.remote_ssh_cmd("foo", "bar", true)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "remote_execute" do
|
66
57
|
it "should fail if ssh is not present" do
|
67
58
|
Pkg::Util::Tool.stub(:find_tool).with("ssh") { fail }
|
68
59
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_raise(RuntimeError)
|
69
|
-
expect{ Pkg::Util::Net.
|
60
|
+
expect{ Pkg::Util::Net.remote_ssh_cmd("foo", "bar") }.to raise_error(RuntimeError)
|
70
61
|
end
|
71
62
|
|
72
63
|
it "should be able to not fail fast" do
|
73
64
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
74
65
|
Kernel.should_receive(:system).with("#{ssh} -t foo 'bar'")
|
75
66
|
Pkg::Util::Execution.should_receive(:success?).and_return(true)
|
76
|
-
Pkg::Util::Net.
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should be able to trace output" do
|
81
|
-
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
82
|
-
Kernel.should_receive(:system).with("#{ssh} -t foo 'set -x;bar'")
|
83
|
-
Pkg::Util::Execution.should_receive(:success?).and_return(true)
|
84
|
-
Pkg::Util::Net.remote_execute(
|
85
|
-
"foo", "bar", capture_output: false, fail_fast: false, trace: true)
|
86
|
-
end
|
67
|
+
Pkg::Util::Net.remote_ssh_cmd("foo", "bar", false, '', false)
|
68
|
+
end
|
87
69
|
|
88
70
|
context "without output captured" do
|
89
71
|
it "should execute a command :foo on a host :bar using Kernel" do
|
90
72
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
91
|
-
Kernel.should_receive(:system).with("#{ssh} -t foo 'set -e;bar'")
|
73
|
+
Kernel.should_receive(:system).with("#{ssh} -t foo 'set -e; bar'")
|
92
74
|
Pkg::Util::Execution.should_receive(:success?).and_return(true)
|
93
|
-
Pkg::Util::Net.
|
75
|
+
Pkg::Util::Net.remote_ssh_cmd("foo", "bar")
|
94
76
|
end
|
95
77
|
|
96
78
|
it "should escape single quotes in the command" do
|
97
79
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
98
|
-
Kernel.should_receive(:system).with("#{ssh} -t foo 'set -e;b'\\''ar'")
|
80
|
+
Kernel.should_receive(:system).with("#{ssh} -t foo 'set -e; b'\\''ar'")
|
99
81
|
Pkg::Util::Execution.should_receive(:success?).and_return(true)
|
100
|
-
Pkg::Util::Net.
|
82
|
+
Pkg::Util::Net.remote_ssh_cmd("foo", "b'ar")
|
101
83
|
end
|
102
84
|
|
103
85
|
it "should raise an error if ssh fails" do
|
104
86
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
105
|
-
Kernel.should_receive(:system).with("#{ssh} -t foo 'set -e;bar'")
|
87
|
+
Kernel.should_receive(:system).with("#{ssh} -t foo 'set -e; bar'")
|
106
88
|
Pkg::Util::Execution.should_receive(:success?).and_return(false)
|
107
|
-
expect{ Pkg::Util::Net.
|
108
|
-
.to raise_error(RuntimeError, /failed./)
|
89
|
+
expect{ Pkg::Util::Net.remote_ssh_cmd("foo", "bar") }.to raise_error(RuntimeError, /Remote ssh command failed./)
|
109
90
|
end
|
110
91
|
end
|
111
92
|
|
112
93
|
context "with output captured" do
|
113
94
|
it "should execute a command :foo on a host :bar using Pkg::Util::Execution.capture3" do
|
114
95
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
115
|
-
Pkg::Util::Execution.should_receive(:capture3).with("#{ssh} -t foo 'set -e;bar'")
|
96
|
+
Pkg::Util::Execution.should_receive(:capture3).with("#{ssh} -t foo 'set -e; bar'")
|
116
97
|
Pkg::Util::Execution.should_receive(:success?).and_return(true)
|
117
|
-
Pkg::Util::Net.
|
98
|
+
Pkg::Util::Net.remote_ssh_cmd("foo", "bar", true)
|
118
99
|
end
|
119
100
|
|
120
101
|
it "should escape single quotes in the command" do
|
121
102
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
122
|
-
Pkg::Util::Execution.should_receive(:capture3).with("#{ssh} -t foo 'set -e;b'\\''ar'")
|
103
|
+
Pkg::Util::Execution.should_receive(:capture3).with("#{ssh} -t foo 'set -e; b'\\''ar'")
|
123
104
|
Pkg::Util::Execution.should_receive(:success?).and_return(true)
|
124
|
-
Pkg::Util::Net.
|
105
|
+
Pkg::Util::Net.remote_ssh_cmd("foo", "b'ar", true)
|
125
106
|
end
|
126
107
|
|
127
108
|
it "should raise an error if ssh fails" do
|
128
109
|
Pkg::Util::Tool.should_receive(:check_tool).with("ssh").and_return(ssh)
|
129
|
-
Pkg::Util::Execution.should_receive(:capture3).with("#{ssh} -t foo 'set -e;bar'")
|
110
|
+
Pkg::Util::Execution.should_receive(:capture3).with("#{ssh} -t foo 'set -e; bar'")
|
130
111
|
Pkg::Util::Execution.should_receive(:success?).and_return(false)
|
131
|
-
expect{ Pkg::Util::Net.
|
132
|
-
.to raise_error(RuntimeError, /failed./)
|
112
|
+
expect{ Pkg::Util::Net.remote_ssh_cmd("foo", "bar", true) }.to raise_error(RuntimeError, /Remote ssh command failed./)
|
133
113
|
end
|
134
114
|
end
|
135
115
|
end
|
@@ -2,112 +2,80 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe '#Pkg::Util::Ship' do
|
4
4
|
describe '#collect_packages' do
|
5
|
-
|
6
|
-
pkg/windows/
|
7
|
-
pkg/windows/
|
8
|
-
pkg/windowsfips/puppet6/puppet-agent-6.19.0-x64.msi
|
9
|
-
pkg/windows/puppet6/puppet-agent-x86.msi
|
10
|
-
pkg/windowsfips/puppet6/puppet-agent-x64.msi
|
5
|
+
msi_pkgs = [
|
6
|
+
'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
|
7
|
+
'pkg/windows/puppet5/puppet-agent-x86.msi'
|
11
8
|
]
|
12
|
-
|
13
|
-
pkg/
|
14
|
-
pkg/
|
9
|
+
swix_pkgs = [
|
10
|
+
'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
|
11
|
+
'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
|
15
12
|
]
|
16
13
|
|
17
14
|
it 'returns an array of packages found on the filesystem' do
|
18
|
-
allow(Dir).to receive(:glob).with('pkg/**/*.
|
19
|
-
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.
|
15
|
+
allow(Dir).to receive(:glob).with('pkg/**/*.swix*').and_return(swix_pkgs)
|
16
|
+
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.swix*'])).to eq(swix_pkgs)
|
20
17
|
end
|
21
18
|
|
22
|
-
|
19
|
+
describe 'define excludes' do
|
23
20
|
before :each do
|
24
|
-
allow(Dir).to receive(:glob).with('pkg/**/*.msi').and_return(
|
21
|
+
allow(Dir).to receive(:glob).with('pkg/**/*.msi').and_return(msi_pkgs)
|
25
22
|
end
|
26
23
|
it 'correctly excludes any packages that match a passed excludes argument' do
|
27
|
-
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi']))
|
28
|
-
.not_to include('pkg/windows/puppet6/puppet-agent-x86.msi')
|
29
|
-
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi']))
|
30
|
-
.not_to include('pkg/windows/puppet6/puppet-agent-x64.msi')
|
24
|
+
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi'])).not_to include('pkg/windows/puppet5/puppet-agent-x86.msi')
|
31
25
|
end
|
32
26
|
it 'correctly includes packages that do not match a passed excluded argument' do
|
33
|
-
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'],
|
34
|
-
['bogus-puppet-agent-x(86|64).msi']))
|
35
|
-
.to match_array(msi_packages)
|
27
|
+
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi'])).to include('pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi')
|
36
28
|
end
|
37
29
|
end
|
38
30
|
|
39
|
-
it '
|
31
|
+
it 'fails when it cannot find any packages at all' do
|
40
32
|
allow(Dir).to receive(:glob).with('pkg/**/*.html').and_return([])
|
41
33
|
expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.html'])).to be_empty
|
42
34
|
end
|
43
35
|
end
|
44
36
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
# Beware apple->mac transforms.
|
66
|
-
expected_reorganized_packages = %w[
|
67
|
-
pkg/bionic/puppet6/puppet-agent_6.19.0-1bionic_amd64.deb
|
68
|
-
pkg/puppet6/el/7/aarch64/puppet-agent-6.19.0-1.el7.aarch64.rpm
|
69
|
-
pkg/puppet6/el/7/ppc64le/puppet-agent-6.19.0-1.el7.ppc64le.rpm
|
70
|
-
pkg/puppet6/el/7/x86_64/puppet-agent-6.19.0-1.el7.x86_64.rpm
|
71
|
-
pkg/puppet6/sles/12/ppc64le/puppet-agent-6.19.0-1.sles12.ppc64le.rpm
|
72
|
-
pkg/puppet6/sles/12/x86_64/puppet-agent-6.19.0-1.sles12.x86_64.rpm
|
73
|
-
pkg/puppet6/sles/15/x86_64/puppet-agent-6.19.0-1.sles15.x86_64.rpm
|
74
|
-
pkg/mac/puppet6/10.14/x86_64/puppet-agent-6.19.0-1.osx10.14.dmg
|
75
|
-
pkg/mac/puppet6/10.15/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg
|
76
|
-
pkg/puppet6/fedora/32/x86_64/puppet-agent-6.19.0-1.fc32.x86_64.rpm
|
77
|
-
pkg/windows/puppet6/puppet-agent-6.19.0-x64.msi
|
78
|
-
pkg/windows/puppet6/puppet-agent-6.19.0-x86.msi
|
79
|
-
pkg/windowsfips/puppet6/puppet-agent-6.19.0-x64.msi
|
80
|
-
pkg/windows/puppet6/puppet-agent-x86.msi
|
81
|
-
pkg/windowsfips/puppet6/puppet-agent-x64.msi
|
82
|
-
]
|
37
|
+
local_pkgs = [
|
38
|
+
'pkg/deb/cumulus/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1cumulus_amd64.deb',
|
39
|
+
'pkg/deb/wheezy/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1wheezy_i386.deb',
|
40
|
+
'pkg/el/5/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.el5.x86_64.rpm',
|
41
|
+
'pkg/sles/11/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.sles11.i386.rpm',
|
42
|
+
'pkg/mac/10.10/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.10.dmg',
|
43
|
+
'pkg/eos/4/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
|
44
|
+
'pkg/eos/4/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
|
45
|
+
'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
|
46
|
+
]
|
47
|
+
new_pkgs = [
|
48
|
+
'pkg/cumulus/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1cumulus_amd64.deb',
|
49
|
+
'pkg/wheezy/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1wheezy_i386.deb',
|
50
|
+
'pkg/puppet5/el/5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.el5.x86_64.rpm',
|
51
|
+
'pkg/puppet5/sles/11/i386/puppet-agent-1.4.1.2904.g8023dd1-1.sles11.i386.rpm',
|
52
|
+
'pkg/mac/puppet5/10.10/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.10.dmg',
|
53
|
+
'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
|
54
|
+
'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
|
55
|
+
'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
|
56
|
+
]
|
83
57
|
|
84
58
|
describe '#reorganize_packages' do
|
85
|
-
|
86
|
-
# '/opt/jenkins-builds/puppet-agent/<version>/artifacts'
|
87
|
-
# pl:jenkins:retrieve replaces 'artifacts' with 'pkg', so we pick up the
|
88
|
-
# action from that point by pretending that we've scanned the directory and
|
89
|
-
# made this list:
|
90
|
-
|
91
|
-
scratch_directory = Dir.mktmpdir
|
59
|
+
tmpdir = Dir.mktmpdir
|
92
60
|
|
93
61
|
before :each do
|
94
|
-
allow(Pkg::
|
95
|
-
expect(FileUtils).to receive(:cp).at_least(:once)
|
62
|
+
allow(Pkg::Paths).to receive(:repo_name).and_return('puppet5')
|
63
|
+
expect(FileUtils).to receive(:cp).at_least(:once)
|
96
64
|
end
|
97
65
|
|
98
|
-
|
66
|
+
it 'makes a temporary directory' do
|
67
|
+
expect(FileUtils).to receive(:mkdir_p).at_least(:once)
|
68
|
+
Pkg::Util::Ship.reorganize_packages(local_pkgs, tmpdir)
|
69
|
+
end
|
99
70
|
|
100
71
|
it 'leaves the old packages in place' do
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
expect(retrieved_packages).to eq(original_packages)
|
72
|
+
orig = local_pkgs
|
73
|
+
Pkg::Util::Ship.reorganize_packages(local_pkgs, tmpdir)
|
74
|
+
expect(local_pkgs).to eq(orig)
|
105
75
|
end
|
106
76
|
|
107
|
-
it 'returns a list of
|
108
|
-
|
109
|
-
.reorganize_packages(retrieved_packages, scratch_directory)
|
110
|
-
expect(reorganized_packages).to eq(expected_reorganized_packages)
|
77
|
+
it 'returns a list of packages that do not have the temp dir in the path' do
|
78
|
+
expect(Pkg::Util::Ship.reorganize_packages(local_pkgs, tmpdir)).to eq(new_pkgs)
|
111
79
|
end
|
112
80
|
end
|
113
81
|
|
@@ -116,84 +84,34 @@ describe '#Pkg::Util::Ship' do
|
|
116
84
|
test_remote_path = '/opt/repository/yum'
|
117
85
|
|
118
86
|
it 'ships the packages to the staging server' do
|
119
|
-
allow(Pkg::Util::Ship)
|
120
|
-
|
121
|
-
.and_return(retrieved_packages)
|
122
|
-
allow(Pkg::Util::Ship)
|
123
|
-
.to receive(:reorganize_packages)
|
124
|
-
.and_return(expected_reorganized_packages)
|
87
|
+
allow(Pkg::Util::Ship).to receive(:collect_packages).and_return(local_pkgs)
|
88
|
+
allow(Pkg::Util::Ship).to receive(:reorganize_packages).and_return(new_pkgs)
|
125
89
|
allow(Pkg::Util).to receive(:ask_yes_or_no).and_return(true)
|
126
90
|
# All of these expects must be called in the same block in order for the
|
127
91
|
# tests to work without actually shipping anything
|
128
|
-
expect(Pkg::Util::Net)
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
expect(Pkg::Util::Net)
|
133
|
-
|
134
|
-
|
135
|
-
.exactly(retrieved_packages.count).times
|
136
|
-
expect(Pkg::Util::Net)
|
137
|
-
.to receive(:remote_set_ownership)
|
138
|
-
.with(test_staging_server, 'root', 'release', anything)
|
139
|
-
.exactly(retrieved_packages.count).times
|
140
|
-
expect(Pkg::Util::Net)
|
141
|
-
.to receive(:remote_set_permissions)
|
142
|
-
.with(test_staging_server, '775', anything)
|
143
|
-
.exactly(retrieved_packages.count).times
|
144
|
-
expect(Pkg::Util::Net)
|
145
|
-
.to receive(:remote_set_permissions)
|
146
|
-
.with(test_staging_server, '0664', anything)
|
147
|
-
.exactly(retrieved_packages.count).times
|
148
|
-
expect(Pkg::Util::Net)
|
149
|
-
.to receive(:remote_set_immutable)
|
150
|
-
.with(test_staging_server, anything)
|
151
|
-
.exactly(retrieved_packages.count).times
|
152
|
-
expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server, test_remote_path))
|
153
|
-
.to eq(true)
|
92
|
+
expect(Pkg::Util::Net).to receive(:remote_ssh_cmd).with(test_staging_server, /#{test_remote_path}/).exactly(local_pkgs.count).times
|
93
|
+
expect(Pkg::Util::Net).to receive(:rsync_to).with(anything, test_staging_server, /#{test_remote_path}/, anything).exactly(local_pkgs.count).times
|
94
|
+
expect(Pkg::Util::Net).to receive(:remote_set_ownership).with(test_staging_server, 'root', 'release', anything).exactly(local_pkgs.count).times
|
95
|
+
expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '775', anything).exactly(local_pkgs.count).times
|
96
|
+
expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '0664', anything).exactly(local_pkgs.count).times
|
97
|
+
expect(Pkg::Util::Net).to receive(:remote_set_immutable).with(test_staging_server, anything).exactly(local_pkgs.count).times
|
98
|
+
Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server, test_remote_path)
|
154
99
|
end
|
155
100
|
|
156
101
|
it 'ships packages containing the string `pkg` to the right place' do
|
157
|
-
|
158
|
-
|
159
|
-
package_basename = File.basename(reorganized_package)
|
160
|
-
repository_base_path = '/opt/repository/yum/puppet6/el/7/x86_64'
|
161
|
-
|
162
|
-
allow(Pkg::Util::Ship).to receive(:collect_packages).and_return([retrieved_package])
|
163
|
-
allow(Pkg::Util::Ship).to receive(:reorganize_packages).and_return([reorganized_package])
|
102
|
+
allow(Pkg::Util::Ship).to receive(:collect_packages).and_return(['pkg/el/5/puppet5/x86_64/my-super-sweet-pkg-1.0.0-1.el5.x86_64.rpm' ])
|
103
|
+
allow(Pkg::Util::Ship).to receive(:reorganize_packages).and_return(['pkg/puppet5/el/5/x86_64/my-super-sweet-pkg-1.0.0-1.el5.x86_64.rpm'])
|
164
104
|
allow(Pkg::Util).to receive(:ask_yes_or_no).and_return(true)
|
165
105
|
allow(Dir).to receive(:mktmpdir).and_return('/tmp/test')
|
166
|
-
|
167
106
|
# All of these expects must be called in the same block in order for the
|
168
107
|
# tests to work without actually shipping anything
|
169
|
-
expect(Pkg::Util::Net)
|
170
|
-
|
171
|
-
|
172
|
-
expect(Pkg::Util::Net)
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
.to receive(:remote_set_ownership)
|
177
|
-
.with(test_staging_server, 'root', 'release',
|
178
|
-
[repository_base_path, "#{repository_base_path}/#{package_basename}"])
|
179
|
-
expect(Pkg::Util::Net)
|
180
|
-
.to receive(:remote_set_permissions)
|
181
|
-
.with(test_staging_server, '775', anything)
|
182
|
-
expect(Pkg::Util::Net)
|
183
|
-
.to receive(:remote_set_permissions)
|
184
|
-
.with(test_staging_server, '0664', anything)
|
185
|
-
expect(Pkg::Util::Net)
|
186
|
-
.to receive(:remote_set_immutable)
|
187
|
-
.with(test_staging_server, anything)
|
188
|
-
expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server,
|
189
|
-
test_remote_path, excludes: ['puppet-agent']))
|
190
|
-
.to eq(true)
|
191
|
-
end
|
192
|
-
|
193
|
-
it 'returns false if there are no packages to ship' do
|
194
|
-
expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.msi'],
|
195
|
-
test_staging_server, test_remote_path))
|
196
|
-
.to eq(false)
|
108
|
+
expect(Pkg::Util::Net).to receive(:remote_ssh_cmd).with(test_staging_server, /#{test_remote_path}/)
|
109
|
+
expect(Pkg::Util::Net).to receive(:rsync_to).with(anything, test_staging_server, /#{test_remote_path}/, anything)
|
110
|
+
expect(Pkg::Util::Net).to receive(:remote_set_ownership).with(test_staging_server, 'root', 'release', ['/opt/repository/yum/puppet5/el/5/x86_64', '/opt/repository/yum/puppet5/el/5/x86_64/my-super-sweet-pkg-1.0.0-1.el5.x86_64.rpm'])
|
111
|
+
expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '775', anything)
|
112
|
+
expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '0664', anything)
|
113
|
+
expect(Pkg::Util::Net).to receive(:remote_set_immutable).with(test_staging_server, anything)
|
114
|
+
Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server, test_remote_path, excludes: ['puppet-agent'])
|
197
115
|
end
|
198
116
|
end
|
199
117
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -20,3 +20,17 @@ def reset_env(keys)
|
|
20
20
|
ENV[key] = nil
|
21
21
|
end
|
22
22
|
end
|
23
|
+
|
24
|
+
RSpec.configure do |config|
|
25
|
+
if Pkg::Util::OS.windows? && RUBY_VERSION =~ /^1\./
|
26
|
+
require 'win32console'
|
27
|
+
config.output_stream = $stdout
|
28
|
+
config.error_stream = $stderr
|
29
|
+
|
30
|
+
config.formatters.each do |f|
|
31
|
+
if not f.instance_variable_get(:@output).kind_of?(::File)
|
32
|
+
f.instance_variable_set(:@output, $stdout)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/tasks/00_utils.rake
CHANGED
@@ -119,10 +119,7 @@ end
|
|
119
119
|
# purport to both return the results of the command execution (ala `%x{cmd}`)
|
120
120
|
# while also raising an exception if a command does not succeed (ala `sh "cmd"`).
|
121
121
|
def ex(command)
|
122
|
-
|
123
|
-
# have too many warnings from this.
|
124
|
-
# Turn off the notice for now until packaging is refactored.
|
125
|
-
# Pkg::Util.deprecate("ex", "Pkg::Util::Execution.ex")
|
122
|
+
Pkg::Util.deprecate("ex", "Pkg::Util::Execution.ex")
|
126
123
|
Pkg::Util::Execution.ex(command)
|
127
124
|
end
|
128
125
|
|
@@ -198,6 +195,11 @@ def deprecate(old_cmd, new_cmd = nil)
|
|
198
195
|
Pkg::Util.deprecate(old_cmd, new_cmd)
|
199
196
|
end
|
200
197
|
|
198
|
+
def remote_bootstrap(host, treeish, tar_cmd = nil, tarball = nil)
|
199
|
+
Pkg::Util.deprecate('remote_bootstrap', 'Pkg::Util::Net.remote_bootstrap')
|
200
|
+
Pkg::Util::Net.remote_bootstrap(host, treeish, tar_cmd, tarball)
|
201
|
+
end
|
202
|
+
|
201
203
|
def remote_buildparams(host, build)
|
202
204
|
Pkg::Util.deprecate('remote_buildparams', 'Pkg::Util::Net.remote_buildparams')
|
203
205
|
Pkg::Util::Net.remote_buildparams(host, build)
|
data/tasks/apple.rake
CHANGED
@@ -86,7 +86,6 @@ end
|
|
86
86
|
def build_dmg
|
87
87
|
# Local Variables
|
88
88
|
dmg_format_code = 'UDZO'
|
89
|
-
dmg_filesystem = 'HFS+'
|
90
89
|
zlib_level = '9'
|
91
90
|
dmg_format_option = "-imagekey zlib-level=#{zlib_level}"
|
92
91
|
dmg_format = "#{dmg_format_code} #{dmg_format_option}"
|
@@ -109,7 +108,6 @@ def build_dmg
|
|
109
108
|
-uid 99 \
|
110
109
|
-gid 99 \
|
111
110
|
-ov \
|
112
|
-
-fs #{dmg_filesystem} \
|
113
111
|
-format #{dmg_format} \
|
114
112
|
#{dmg_file}")
|
115
113
|
|
data/tasks/config.rake
CHANGED
@@ -6,11 +6,6 @@ namespace :config do
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
desc "validate Pkg::Config values for this repo"
|
10
|
-
task :validate do
|
11
|
-
Pkg::Config.perform_validations
|
12
|
-
end
|
13
|
-
|
14
9
|
task :print_hosts => 'pl:fetch' do
|
15
10
|
Pkg::Util.filter_configs('host').each do |key, value|
|
16
11
|
puts "#{key}: #{value}"
|
data/tasks/education.rake
CHANGED
@@ -35,7 +35,7 @@ namespace :pl do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# If the archive directory exists, move old VMs to it
|
38
|
-
Pkg::Util::Net.
|
38
|
+
Pkg::Util::Net.remote_ssh_cmd(target_host, "if [ -d #{target_directory}/archive ]; then #{archive_cmd}; fi")
|
39
39
|
|
40
40
|
# Ship VM and md5 to host
|
41
41
|
Pkg::Util::Net.rsync_to(vm, target_host, target_directory)
|
@@ -45,10 +45,10 @@ namespace :pl do
|
|
45
45
|
link_target.each do |link|
|
46
46
|
link_path = File.join(target_directory, link)
|
47
47
|
link_md5_path = "#{link_path}.md5"
|
48
|
-
Pkg::Util::Net.
|
49
|
-
Pkg::Util::Net.
|
50
|
-
Pkg::Util::Net.
|
51
|
-
Pkg::Util::Net.
|
48
|
+
Pkg::Util::Net.remote_ssh_cmd(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_ssh_cmd(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_ssh_cmd(target_host, "cd #{target_directory} ; ln -sf #{File.basename(vm)} #{link}")
|
51
|
+
Pkg::Util::Net.remote_ssh_cmd(target_host, "cd #{target_directory} ; ln -sf #{File.basename(md5)} #{link}.md5")
|
52
52
|
end
|
53
53
|
|
54
54
|
puts "'#{vm}' and '#{md5}' have been shipped via rsync to '#{target_host}/#{target_directory}'"
|
data/tasks/fetch.rake
CHANGED
@@ -30,31 +30,28 @@ namespace :pl do
|
|
30
30
|
task :fetch do
|
31
31
|
# Remove .packaging directory from old-style extras loading
|
32
32
|
rm_rf "#{ENV['HOME']}/.packaging" if File.directory?("#{ENV['HOME']}/.packaging")
|
33
|
-
|
34
33
|
# Touch the .packaging file which is allows packaging to present remote tasks
|
35
34
|
touch "#{ENV['HOME']}/.packaging"
|
36
35
|
|
37
36
|
begin
|
38
|
-
|
39
|
-
%x(git clone #{data_repo} #{
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
next
|
37
|
+
temp_build_data_dir = Pkg::Util::File.mktemp
|
38
|
+
%x(git clone #{data_repo} #{temp_build_data_dir})
|
39
|
+
if $?.success?
|
40
|
+
Dir.chdir(temp_build_data_dir) do
|
41
|
+
[team_data_branch, project_data_branch].each do |branch|
|
42
|
+
%x(git checkout #{branch})
|
43
|
+
if $?.success?
|
44
|
+
Pkg::Util::RakeUtils.invoke_task("pl:load_extras", temp_build_data_dir)
|
45
|
+
else
|
46
|
+
warn "Unable to load build_defaults from branch '#{branch}' in '#{data_repo}'. Skipping."
|
47
|
+
end
|
50
48
|
end
|
51
|
-
Pkg::Util::RakeUtils.invoke_task('pl:load_extras', build_data_directory)
|
52
49
|
end
|
50
|
+
else
|
51
|
+
fail "There was an error attempting to fetch the build-data repo. Maybe you do not have the correct permissions?"
|
53
52
|
end
|
54
53
|
ensure
|
55
|
-
rm_rf
|
54
|
+
rm_rf temp_build_data_dir
|
56
55
|
end
|
57
|
-
|
58
|
-
Pkg::Util::RakeUtils.invoke_task('config:validate')
|
59
56
|
end
|
60
57
|
end
|