knapsack_pro 3.9.0 → 3.11.0
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/CHANGELOG.md +16 -0
- data/lib/knapsack_pro/client/api/v1/build_distributions.rb +1 -0
- data/lib/knapsack_pro/client/api/v1/queues.rb +1 -0
- data/lib/knapsack_pro/config/ci/base.rb +3 -0
- data/lib/knapsack_pro/config/ci/buildkite.rb +4 -0
- data/lib/knapsack_pro/config/ci/circle.rb +4 -0
- data/lib/knapsack_pro/config/ci/github_actions.rb +4 -0
- data/lib/knapsack_pro/config/ci/gitlab_ci.rb +6 -1
- data/lib/knapsack_pro/config/env.rb +10 -0
- data/lib/knapsack_pro/version.rb +1 -1
- data/lib/knapsack_pro.rb +0 -2
- data/spec/knapsack_pro/client/api/v1/build_distributions_spec.rb +4 -0
- data/spec/knapsack_pro/client/api/v1/queues_spec.rb +5 -0
- data/spec/knapsack_pro/config/ci/base_spec.rb +1 -0
- data/spec/knapsack_pro/config/ci/buildkite_spec.rb +37 -2
- data/spec/knapsack_pro/config/ci/circle_spec.rb +37 -2
- data/spec/knapsack_pro/config/ci/github_actions_spec.rb +16 -2
- data/spec/knapsack_pro/config/ci/gitlab_ci_spec.rb +39 -4
- data/spec/knapsack_pro/config/env_spec.rb +45 -0
- metadata +3 -9
- data/lib/knapsack_pro/config/ci/snap_ci.rb +0 -35
- data/lib/knapsack_pro/config/ci/solano_ci.rb +0 -32
- data/spec/knapsack_pro/config/ci/snap_ci_spec.rb +0 -104
- data/spec/knapsack_pro/config/ci/solano_ci_spec.rb +0 -73
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a43c73ef1e2535db96433d5a39659b4a02cf0ecb9baac50f5effef464c0638de
|
4
|
+
data.tar.gz: 49739064aea9230e17d9719bd3ee8bff27dead716bf388530eb4c9e5e079d6e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d019adc9a5a78d7b795e380828a5be81eca28702aba936c1fb6759b7294bffe3e90dfcc7ab009c844863cfbe4ead8c9a1bf1159a89dee44305f9d50803d798b7
|
7
|
+
data.tar.gz: c92054f2b1cdc5c842e0130d89ee8f9ebc9a44985721718b9af48e3c9e6db9f3e391fe2a8ead8ad8ebf040f0526a3ce4600014b4bbf62d1f43952c4b5e24025f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
### 3.11.0
|
4
|
+
|
5
|
+
* Send distinguishable user seat info over to the API
|
6
|
+
|
7
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/pull/192
|
8
|
+
|
9
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.10.0...v3.11.0
|
10
|
+
|
11
|
+
### 3.10.0
|
12
|
+
|
13
|
+
* Remove Solano CI and Snap CI support because they do not exist anymore
|
14
|
+
|
15
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/pull/194
|
16
|
+
|
17
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v3.9.0...v3.10.0
|
18
|
+
|
3
19
|
### 3.9.0
|
4
20
|
|
5
21
|
* Suppress all RSpec spec file names displayed in stdout at the beginning of running tests in Regular Mode only when the log level is >= `warn`
|
@@ -15,6 +15,7 @@ module KnapsackPro
|
|
15
15
|
:node_total => args.fetch(:node_total),
|
16
16
|
:node_index => args.fetch(:node_index),
|
17
17
|
:ci_build_id => KnapsackPro::Config::Env.ci_node_build_id,
|
18
|
+
:user_seat => KnapsackPro::Config::Env.user_seat_hash,
|
18
19
|
}
|
19
20
|
|
20
21
|
unless request_hash[:cache_read_attempt]
|
@@ -16,6 +16,7 @@ module KnapsackPro
|
|
16
16
|
:node_total => args.fetch(:node_total),
|
17
17
|
:node_index => args.fetch(:node_index),
|
18
18
|
:node_build_id => KnapsackPro::Config::Env.ci_node_build_id,
|
19
|
+
:user_seat => KnapsackPro::Config::Env.user_seat_hash,
|
19
20
|
}
|
20
21
|
|
21
22
|
if request_hash[:can_initialize_queue] && !request_hash[:attempt_connect_to_queue]
|
@@ -16,7 +16,7 @@ module KnapsackPro
|
|
16
16
|
|
17
17
|
def node_build_id
|
18
18
|
ENV['CI_PIPELINE_ID'] || # Gitlab Release 9.0+
|
19
|
-
ENV['CI_BUILD_ID']
|
19
|
+
ENV['CI_BUILD_ID'] # Gitlab Release 8.x
|
20
20
|
end
|
21
21
|
|
22
22
|
def commit_hash
|
@@ -32,6 +32,11 @@ module KnapsackPro
|
|
32
32
|
def project_dir
|
33
33
|
ENV['CI_PROJECT_DIR']
|
34
34
|
end
|
35
|
+
|
36
|
+
def user_seat
|
37
|
+
ENV['GITLAB_USER_NAME'] || # Gitlab Release 10.0
|
38
|
+
ENV['GITLAB_USER_EMAIL'] # Gitlab Release 8.12
|
39
|
+
end
|
35
40
|
end
|
36
41
|
end
|
37
42
|
end
|
@@ -58,6 +58,16 @@ module KnapsackPro
|
|
58
58
|
ci_env_for(:project_dir)
|
59
59
|
end
|
60
60
|
|
61
|
+
def user_seat
|
62
|
+
ENV['KNAPSACK_PRO_USER_SEAT'] ||
|
63
|
+
ci_env_for(:user_seat)
|
64
|
+
end
|
65
|
+
|
66
|
+
def user_seat_hash
|
67
|
+
return unless user_seat
|
68
|
+
Digest::SHA2.hexdigest(user_seat)
|
69
|
+
end
|
70
|
+
|
61
71
|
def test_file_pattern
|
62
72
|
ENV['KNAPSACK_PRO_TEST_FILE_PATTERN']
|
63
73
|
end
|
data/lib/knapsack_pro/version.rb
CHANGED
data/lib/knapsack_pro.rb
CHANGED
@@ -21,8 +21,6 @@ require_relative 'knapsack_pro/config/ci/semaphore'
|
|
21
21
|
require_relative 'knapsack_pro/config/ci/semaphore2'
|
22
22
|
require_relative 'knapsack_pro/config/ci/buildkite'
|
23
23
|
require_relative 'knapsack_pro/config/ci/travis'
|
24
|
-
require_relative 'knapsack_pro/config/ci/snap_ci'
|
25
|
-
require_relative 'knapsack_pro/config/ci/solano_ci'
|
26
24
|
require_relative 'knapsack_pro/config/ci/codeship'
|
27
25
|
require_relative 'knapsack_pro/config/ci/github_actions'
|
28
26
|
require_relative 'knapsack_pro/config/ci/heroku'
|
@@ -6,6 +6,7 @@ describe KnapsackPro::Client::API::V1::BuildDistributions do
|
|
6
6
|
let(:node_total) { double }
|
7
7
|
let(:node_index) { double }
|
8
8
|
let(:ci_build_id) { double }
|
9
|
+
let(:user_seat_hash) { double }
|
9
10
|
let(:test_files) { double }
|
10
11
|
|
11
12
|
subject do
|
@@ -22,6 +23,7 @@ describe KnapsackPro::Client::API::V1::BuildDistributions do
|
|
22
23
|
before do
|
23
24
|
expect(KnapsackPro::Config::Env).to receive(:fixed_test_suite_split).and_return(fixed_test_suite_split)
|
24
25
|
expect(KnapsackPro::Config::Env).to receive(:ci_node_build_id).and_return(ci_build_id)
|
26
|
+
expect(KnapsackPro::Config::Env).to receive(:user_seat_hash).and_return(user_seat_hash)
|
25
27
|
end
|
26
28
|
|
27
29
|
context 'when cache_read_attempt=true' do
|
@@ -40,6 +42,7 @@ describe KnapsackPro::Client::API::V1::BuildDistributions do
|
|
40
42
|
node_total: node_total,
|
41
43
|
node_index: node_index,
|
42
44
|
ci_build_id: ci_build_id,
|
45
|
+
user_seat: user_seat_hash,
|
43
46
|
}
|
44
47
|
}).and_return(action)
|
45
48
|
expect(subject).to eq action
|
@@ -62,6 +65,7 @@ describe KnapsackPro::Client::API::V1::BuildDistributions do
|
|
62
65
|
node_total: node_total,
|
63
66
|
node_index: node_index,
|
64
67
|
ci_build_id: ci_build_id,
|
68
|
+
user_seat: user_seat_hash,
|
65
69
|
test_files: test_files
|
66
70
|
}
|
67
71
|
}).and_return(action)
|
@@ -7,6 +7,7 @@ describe KnapsackPro::Client::API::V1::Queues do
|
|
7
7
|
let(:node_index) { double }
|
8
8
|
let(:test_files) { double }
|
9
9
|
let(:node_build_id) { double }
|
10
|
+
let(:user_seat_hash) { double }
|
10
11
|
|
11
12
|
subject do
|
12
13
|
described_class.queue(
|
@@ -23,6 +24,7 @@ describe KnapsackPro::Client::API::V1::Queues do
|
|
23
24
|
before do
|
24
25
|
expect(KnapsackPro::Config::Env).to receive(:fixed_queue_split).and_return(fixed_queue_split)
|
25
26
|
expect(KnapsackPro::Config::Env).to receive(:ci_node_build_id).and_return(node_build_id)
|
27
|
+
expect(KnapsackPro::Config::Env).to receive(:user_seat_hash).and_return(user_seat_hash)
|
26
28
|
end
|
27
29
|
|
28
30
|
context 'when can_initialize_queue=true and attempt_connect_to_queue=true' do
|
@@ -43,6 +45,7 @@ describe KnapsackPro::Client::API::V1::Queues do
|
|
43
45
|
node_total: node_total,
|
44
46
|
node_index: node_index,
|
45
47
|
node_build_id: node_build_id,
|
48
|
+
user_seat: user_seat_hash,
|
46
49
|
}
|
47
50
|
}).and_return(action)
|
48
51
|
expect(subject).to eq action
|
@@ -67,6 +70,7 @@ describe KnapsackPro::Client::API::V1::Queues do
|
|
67
70
|
node_total: node_total,
|
68
71
|
node_index: node_index,
|
69
72
|
node_build_id: node_build_id,
|
73
|
+
user_seat: user_seat_hash,
|
70
74
|
test_files: test_files
|
71
75
|
}
|
72
76
|
}).and_return(action)
|
@@ -92,6 +96,7 @@ describe KnapsackPro::Client::API::V1::Queues do
|
|
92
96
|
node_total: node_total,
|
93
97
|
node_index: node_index,
|
94
98
|
node_build_id: node_build_id,
|
99
|
+
user_seat: user_seat_hash,
|
95
100
|
}
|
96
101
|
}).and_return(action)
|
97
102
|
expect(subject).to eq action
|
@@ -76,8 +76,8 @@ describe KnapsackPro::Config::CI::Buildkite do
|
|
76
76
|
subject { described_class.new.branch }
|
77
77
|
|
78
78
|
context 'when environment exists' do
|
79
|
-
let(:env) { { 'BUILDKITE_BRANCH' => '
|
80
|
-
it { should eql '
|
79
|
+
let(:env) { { 'BUILDKITE_BRANCH' => 'main' } }
|
80
|
+
it { should eql 'main' }
|
81
81
|
end
|
82
82
|
|
83
83
|
context "when environment doesn't exist" do
|
@@ -97,4 +97,39 @@ describe KnapsackPro::Config::CI::Buildkite do
|
|
97
97
|
it { should be nil }
|
98
98
|
end
|
99
99
|
end
|
100
|
+
|
101
|
+
describe '#user_seat' do
|
102
|
+
subject { described_class.new.user_seat }
|
103
|
+
|
104
|
+
context 'when the BUILDKITE_BUILD_AUTHOR env var exists' do
|
105
|
+
let(:env) do
|
106
|
+
{ 'BUILDKITE_BUILD_AUTHOR' => 'Jane Doe',
|
107
|
+
'BUILDKITE_BUILD_CREATOR' => nil }
|
108
|
+
end
|
109
|
+
|
110
|
+
it { should eql 'Jane Doe' }
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'when the BUILDKITE_BUILD_CREATOR env var exists' do
|
114
|
+
let(:env) do
|
115
|
+
{ 'BUILDKITE_BUILD_AUTHOR' => nil,
|
116
|
+
'BUILDKITE_BUILD_CREATOR' => 'John Doe' }
|
117
|
+
end
|
118
|
+
|
119
|
+
it { should eql 'John Doe' }
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'when both BUILDKITE_BUILD_AUTHOR and BUILDKITE_BUILD_CREATOR env vars exist' do
|
123
|
+
let(:env) do
|
124
|
+
{ 'BUILDKITE_BUILD_AUTHOR' => 'Jane Doe',
|
125
|
+
'BUILDKITE_BUILD_CREATOR' => 'John Doe' }
|
126
|
+
end
|
127
|
+
|
128
|
+
it { should eql 'Jane Doe' }
|
129
|
+
end
|
130
|
+
|
131
|
+
context "when neither env var exists" do
|
132
|
+
it { should be nil }
|
133
|
+
end
|
134
|
+
end
|
100
135
|
end
|
@@ -63,8 +63,8 @@ describe KnapsackPro::Config::CI::Circle do
|
|
63
63
|
subject { described_class.new.branch }
|
64
64
|
|
65
65
|
context 'when environment exists' do
|
66
|
-
let(:env) { { 'CIRCLE_BRANCH' => '
|
67
|
-
it { should eql '
|
66
|
+
let(:env) { { 'CIRCLE_BRANCH' => 'main' } }
|
67
|
+
it { should eql 'main' }
|
68
68
|
end
|
69
69
|
|
70
70
|
context "when environment doesn't exist" do
|
@@ -84,4 +84,39 @@ describe KnapsackPro::Config::CI::Circle do
|
|
84
84
|
it { should be nil }
|
85
85
|
end
|
86
86
|
end
|
87
|
+
|
88
|
+
describe '#user_seat' do
|
89
|
+
subject { described_class.new.user_seat }
|
90
|
+
|
91
|
+
context 'when the CIRCLE_USERNAME env var exists' do
|
92
|
+
let(:env) do
|
93
|
+
{ 'CIRCLE_USERNAME' => 'Jane Doe',
|
94
|
+
'CIRCLE_PR_USERNAME' => nil }
|
95
|
+
end
|
96
|
+
|
97
|
+
it { should eql 'Jane Doe' }
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'when the CIRCLE_PR_USERNAME env var exists' do
|
101
|
+
let(:env) do
|
102
|
+
{ 'CIRCLE_USERNAME' => nil,
|
103
|
+
'CIRCLE_PR_USERNAME' => 'John Doe' }
|
104
|
+
end
|
105
|
+
|
106
|
+
it { should eql 'John Doe' }
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'when both CIRCLE_USERNAME and CIRCLE_PR_USERNAME env vars exist' do
|
110
|
+
let(:env) do
|
111
|
+
{ 'CIRCLE_USERNAME' => 'Jane Doe',
|
112
|
+
'CIRCLE_PR_USERNAME' => 'John Doe' }
|
113
|
+
end
|
114
|
+
|
115
|
+
it { should eql 'Jane Doe' }
|
116
|
+
end
|
117
|
+
|
118
|
+
context "when neither env var exists" do
|
119
|
+
it { should be nil }
|
120
|
+
end
|
121
|
+
end
|
87
122
|
end
|
@@ -52,12 +52,12 @@ describe KnapsackPro::Config::CI::GithubActions do
|
|
52
52
|
context 'when GITHUB_REF has value' do
|
53
53
|
let(:env) do
|
54
54
|
{
|
55
|
-
'GITHUB_REF' => '
|
55
|
+
'GITHUB_REF' => 'main',
|
56
56
|
'GITHUB_SHA' => '2e13512fc230d6f9ebf4923352718e4d',
|
57
57
|
}
|
58
58
|
end
|
59
59
|
|
60
|
-
it { should eql '
|
60
|
+
it { should eql 'main' }
|
61
61
|
end
|
62
62
|
|
63
63
|
context 'when GITHUB_REF is not set' do
|
@@ -88,4 +88,18 @@ describe KnapsackPro::Config::CI::GithubActions do
|
|
88
88
|
it { should be nil }
|
89
89
|
end
|
90
90
|
end
|
91
|
+
|
92
|
+
describe '#user_seat' do
|
93
|
+
subject { described_class.new.user_seat }
|
94
|
+
|
95
|
+
context 'when the GITHUB_ACTOR environment variable exists' do
|
96
|
+
let(:env) { { 'GITHUB_ACTOR' => 'jane_doe' } }
|
97
|
+
|
98
|
+
it { should eql 'jane_doe' }
|
99
|
+
end
|
100
|
+
|
101
|
+
context "when the GITHUB_ACTOR environment variable doesn't exist" do
|
102
|
+
it { should be nil }
|
103
|
+
end
|
104
|
+
end
|
91
105
|
end
|
@@ -73,13 +73,13 @@ describe KnapsackPro::Config::CI::GitlabCI do
|
|
73
73
|
subject { described_class.new.branch }
|
74
74
|
|
75
75
|
context 'when Gitlab Release 9.0+ and environment exists' do
|
76
|
-
let(:env) { { 'CI_COMMIT_REF_NAME' => '
|
77
|
-
it { should eql '
|
76
|
+
let(:env) { { 'CI_COMMIT_REF_NAME' => 'main' } }
|
77
|
+
it { should eql 'main' }
|
78
78
|
end
|
79
79
|
|
80
80
|
context 'when Gitlab Release 8.x and environment exists' do
|
81
|
-
let(:env) { { 'CI_BUILD_REF_NAME' => '
|
82
|
-
it { should eql '
|
81
|
+
let(:env) { { 'CI_BUILD_REF_NAME' => 'main' } }
|
82
|
+
it { should eql 'main' }
|
83
83
|
end
|
84
84
|
|
85
85
|
context "when environment doesn't exist" do
|
@@ -99,4 +99,39 @@ describe KnapsackPro::Config::CI::GitlabCI do
|
|
99
99
|
it { should be nil }
|
100
100
|
end
|
101
101
|
end
|
102
|
+
|
103
|
+
describe '#user_seat' do
|
104
|
+
subject { described_class.new.user_seat }
|
105
|
+
|
106
|
+
context 'when the GITLAB_USER_NAME env var exists' do
|
107
|
+
let(:env) do
|
108
|
+
{ 'GITLAB_USER_NAME' => 'Jane Doe',
|
109
|
+
'GITLAB_USER_EMAIL' => nil }
|
110
|
+
end
|
111
|
+
|
112
|
+
it { should eql 'Jane Doe' }
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'when the GITLAB_USER_EMAIL env var exists' do
|
116
|
+
let(:env) do
|
117
|
+
{ 'GITLAB_USER_NAME' => nil,
|
118
|
+
'GITLAB_USER_EMAIL' => 'janed@example.com' }
|
119
|
+
end
|
120
|
+
|
121
|
+
it { should eql 'janed@example.com' }
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'when both GITLAB_USER_NAME and GITLAB_USER_EMAIL env vars exist' do
|
125
|
+
let(:env) do
|
126
|
+
{ 'GITLAB_USER_NAME' => 'Jane Doe',
|
127
|
+
'GITLAB_USER_EMAIL' => 'janed@example.com' }
|
128
|
+
end
|
129
|
+
|
130
|
+
it { should eql 'Jane Doe' }
|
131
|
+
end
|
132
|
+
|
133
|
+
context "when neither env var exists" do
|
134
|
+
it { should be nil }
|
135
|
+
end
|
136
|
+
end
|
102
137
|
end
|
@@ -182,6 +182,51 @@ describe KnapsackPro::Config::Env do
|
|
182
182
|
end
|
183
183
|
end
|
184
184
|
|
185
|
+
describe '.user_seat' do
|
186
|
+
subject { described_class.user_seat }
|
187
|
+
|
188
|
+
context 'when ENV exists' do
|
189
|
+
context 'when KNAPSACK_PRO_USER_SEAT has value' do
|
190
|
+
before { stub_const("ENV", { 'KNAPSACK_PRO_USER_SEAT' => 'John Doe' }) }
|
191
|
+
it { should eq 'John Doe' }
|
192
|
+
end
|
193
|
+
|
194
|
+
context 'when CI environment has value' do
|
195
|
+
before do
|
196
|
+
expect(described_class).to receive(:ci_env_for).with(:user_seat).and_return('Jane Doe')
|
197
|
+
end
|
198
|
+
|
199
|
+
it { should eq 'Jane Doe' }
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context "when ENV doesn't exist" do
|
204
|
+
it { should be nil }
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
describe '.user_seat_hash' do
|
209
|
+
subject { described_class.user_seat_hash }
|
210
|
+
|
211
|
+
before do
|
212
|
+
expect(described_class).to receive(:user_seat).at_least(1).and_return(user_seat)
|
213
|
+
end
|
214
|
+
|
215
|
+
context 'when the user seat has a value' do
|
216
|
+
let(:user_seat) { 'John Doe' }
|
217
|
+
|
218
|
+
it 'returns a SHA256 hash for the user seat' do
|
219
|
+
expect(subject).to eq '6cea57c2fb6cbc2a40411135005760f241fffc3e5e67ab99882726431037f908'
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
context 'when the user seat has no value' do
|
224
|
+
let(:user_seat) { nil }
|
225
|
+
|
226
|
+
it { expect(subject).to be_nil }
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
185
230
|
describe '.test_file_pattern' do
|
186
231
|
subject { described_class.test_file_pattern }
|
187
232
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knapsack_pro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ArturT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -230,8 +230,6 @@ files:
|
|
230
230
|
- lib/knapsack_pro/config/ci/heroku.rb
|
231
231
|
- lib/knapsack_pro/config/ci/semaphore.rb
|
232
232
|
- lib/knapsack_pro/config/ci/semaphore2.rb
|
233
|
-
- lib/knapsack_pro/config/ci/snap_ci.rb
|
234
|
-
- lib/knapsack_pro/config/ci/solano_ci.rb
|
235
233
|
- lib/knapsack_pro/config/ci/travis.rb
|
236
234
|
- lib/knapsack_pro/config/env.rb
|
237
235
|
- lib/knapsack_pro/config/env_generator.rb
|
@@ -327,8 +325,6 @@ files:
|
|
327
325
|
- spec/knapsack_pro/config/ci/heroku_spec.rb
|
328
326
|
- spec/knapsack_pro/config/ci/semaphore2_spec.rb
|
329
327
|
- spec/knapsack_pro/config/ci/semaphore_spec.rb
|
330
|
-
- spec/knapsack_pro/config/ci/snap_ci_spec.rb
|
331
|
-
- spec/knapsack_pro/config/ci/solano_ci_spec.rb
|
332
328
|
- spec/knapsack_pro/config/ci/travis_spec.rb
|
333
329
|
- spec/knapsack_pro/config/env_generator_spec.rb
|
334
330
|
- spec/knapsack_pro/config/env_spec.rb
|
@@ -408,7 +404,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
408
404
|
- !ruby/object:Gem::Version
|
409
405
|
version: '0'
|
410
406
|
requirements: []
|
411
|
-
rubygems_version: 3.4.
|
407
|
+
rubygems_version: 3.4.10
|
412
408
|
signing_key:
|
413
409
|
specification_version: 4
|
414
410
|
summary: Knapsack Pro splits tests across parallel CI nodes and ensures each parallel
|
@@ -449,8 +445,6 @@ test_files:
|
|
449
445
|
- spec/knapsack_pro/config/ci/heroku_spec.rb
|
450
446
|
- spec/knapsack_pro/config/ci/semaphore2_spec.rb
|
451
447
|
- spec/knapsack_pro/config/ci/semaphore_spec.rb
|
452
|
-
- spec/knapsack_pro/config/ci/snap_ci_spec.rb
|
453
|
-
- spec/knapsack_pro/config/ci/solano_ci_spec.rb
|
454
448
|
- spec/knapsack_pro/config/ci/travis_spec.rb
|
455
449
|
- spec/knapsack_pro/config/env_generator_spec.rb
|
456
450
|
- spec/knapsack_pro/config/env_spec.rb
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module KnapsackPro
|
2
|
-
module Config
|
3
|
-
module CI
|
4
|
-
class SnapCI < Base
|
5
|
-
def node_total
|
6
|
-
ENV['SNAP_WORKER_TOTAL']
|
7
|
-
end
|
8
|
-
|
9
|
-
def node_index
|
10
|
-
index = ENV['SNAP_WORKER_INDEX']
|
11
|
-
index.to_i - 1 if index
|
12
|
-
end
|
13
|
-
|
14
|
-
def node_build_id
|
15
|
-
ENV['SNAP_PIPELINE_COUNTER']
|
16
|
-
end
|
17
|
-
|
18
|
-
def commit_hash
|
19
|
-
ENV['SNAP_COMMIT']
|
20
|
-
end
|
21
|
-
|
22
|
-
# https://docs.snap-ci.com/environment-variables/
|
23
|
-
# SNAP_BRANCH - the name of the git branch (not present on pull requests)
|
24
|
-
# SNAP_UPSTREAM_BRANCH - the upstream branch for which the pull request was opened
|
25
|
-
def branch
|
26
|
-
ENV['SNAP_BRANCH'] || ENV['SNAP_UPSTREAM_BRANCH']
|
27
|
-
end
|
28
|
-
|
29
|
-
def project_dir
|
30
|
-
ENV['SNAP_WORKING_DIR']
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# http://docs.solanolabs.com/Setup/tddium-set-environment-variables/
|
2
|
-
module KnapsackPro
|
3
|
-
module Config
|
4
|
-
module CI
|
5
|
-
class SolanoCI < Base
|
6
|
-
def node_total
|
7
|
-
# not provided
|
8
|
-
end
|
9
|
-
|
10
|
-
def node_index
|
11
|
-
# not provided
|
12
|
-
end
|
13
|
-
|
14
|
-
def node_build_id
|
15
|
-
ENV['TDDIUM_SESSION_ID']
|
16
|
-
end
|
17
|
-
|
18
|
-
def commit_hash
|
19
|
-
ENV['TDDIUM_CURRENT_COMMIT']
|
20
|
-
end
|
21
|
-
|
22
|
-
def branch
|
23
|
-
ENV['TDDIUM_CURRENT_BRANCH']
|
24
|
-
end
|
25
|
-
|
26
|
-
def project_dir
|
27
|
-
ENV['TDDIUM_REPO_ROOT']
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,104 +0,0 @@
|
|
1
|
-
describe KnapsackPro::Config::CI::SnapCI do
|
2
|
-
let(:env) { {} }
|
3
|
-
|
4
|
-
before do
|
5
|
-
stub_const('ENV', env)
|
6
|
-
end
|
7
|
-
|
8
|
-
it { should be_kind_of KnapsackPro::Config::CI::Base }
|
9
|
-
|
10
|
-
describe '#node_total' do
|
11
|
-
subject { described_class.new.node_total }
|
12
|
-
|
13
|
-
context 'when environment exists' do
|
14
|
-
let(:env) { { 'SNAP_WORKER_TOTAL' => 4 } }
|
15
|
-
it { should eql 4 }
|
16
|
-
end
|
17
|
-
|
18
|
-
context "when environment doesn't exist" do
|
19
|
-
it { should be nil }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe '#node_index' do
|
24
|
-
subject { described_class.new.node_index }
|
25
|
-
|
26
|
-
context 'when environment exists' do
|
27
|
-
let(:env) { { 'SNAP_WORKER_INDEX' => 4 } }
|
28
|
-
it { should eql 3 }
|
29
|
-
end
|
30
|
-
|
31
|
-
context "when environment doesn't exist" do
|
32
|
-
it { should be nil }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#node_build_id' do
|
37
|
-
subject { described_class.new.node_build_id }
|
38
|
-
|
39
|
-
context 'when environment exists' do
|
40
|
-
let(:env) { { 'SNAP_PIPELINE_COUNTER' => 123 } }
|
41
|
-
it { should eql 123 }
|
42
|
-
end
|
43
|
-
|
44
|
-
context "when environment doesn't exist" do
|
45
|
-
it { should be nil }
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe '#commit_hash' do
|
50
|
-
subject { described_class.new.commit_hash }
|
51
|
-
|
52
|
-
context 'when environment exists' do
|
53
|
-
let(:env) { { 'SNAP_COMMIT' => '3fa64859337f6e56409d49f865d13fd7' } }
|
54
|
-
it { should eql '3fa64859337f6e56409d49f865d13fd7' }
|
55
|
-
end
|
56
|
-
|
57
|
-
context "when environment doesn't exist" do
|
58
|
-
it { should be nil }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe '#branch' do
|
63
|
-
subject { described_class.new.branch }
|
64
|
-
|
65
|
-
context 'when environment exists' do
|
66
|
-
context 'when branch present' do
|
67
|
-
let(:env) { { 'SNAP_BRANCH' => 'master' } }
|
68
|
-
it { should eql 'master' }
|
69
|
-
end
|
70
|
-
|
71
|
-
context 'when pull request' do
|
72
|
-
let(:env) { { 'SNAP_UPSTREAM_BRANCH' => 'feature-branch' } }
|
73
|
-
it { should eql 'feature-branch' }
|
74
|
-
end
|
75
|
-
|
76
|
-
context 'branch has higher priority' do
|
77
|
-
let(:env) do
|
78
|
-
{
|
79
|
-
'SNAP_BRANCH' => 'master',
|
80
|
-
'SNAP_UPSTREAM_BRANCH' => 'feature-branch'
|
81
|
-
}
|
82
|
-
end
|
83
|
-
it { should eql 'master' }
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
context "when environment doesn't exist" do
|
88
|
-
it { should be nil }
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
describe '#project_dir' do
|
93
|
-
subject { described_class.new.project_dir }
|
94
|
-
|
95
|
-
context 'when environment exists' do
|
96
|
-
let(:env) { { 'SNAP_WORKING_DIR' => '/var/snap-ci/repo' } }
|
97
|
-
it { should eql '/var/snap-ci/repo' }
|
98
|
-
end
|
99
|
-
|
100
|
-
context "when environment doesn't exist" do
|
101
|
-
it { should be nil }
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
describe KnapsackPro::Config::CI::SolanoCI do
|
2
|
-
let(:env) { {} }
|
3
|
-
|
4
|
-
before do
|
5
|
-
stub_const('ENV', env)
|
6
|
-
end
|
7
|
-
|
8
|
-
it { should be_kind_of KnapsackPro::Config::CI::Base }
|
9
|
-
|
10
|
-
describe '#node_total' do
|
11
|
-
subject { described_class.new.node_total }
|
12
|
-
|
13
|
-
it { should be nil }
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#node_index' do
|
17
|
-
subject { described_class.new.node_index }
|
18
|
-
|
19
|
-
it { should be nil }
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '#node_build_id' do
|
23
|
-
subject { described_class.new.node_build_id }
|
24
|
-
|
25
|
-
context 'when environment exists' do
|
26
|
-
let(:env) { { 'TDDIUM_SESSION_ID' => 123 } }
|
27
|
-
it { should eql 123 }
|
28
|
-
end
|
29
|
-
|
30
|
-
context "when environment doesn't exist" do
|
31
|
-
it { should be nil }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#commit_hash' do
|
36
|
-
subject { described_class.new.commit_hash }
|
37
|
-
|
38
|
-
context 'when environment exists' do
|
39
|
-
let(:env) { { 'TDDIUM_CURRENT_COMMIT' => '2e13512fc230d6f9ebf4923352718e4d' } }
|
40
|
-
it { should eql '2e13512fc230d6f9ebf4923352718e4d' }
|
41
|
-
end
|
42
|
-
|
43
|
-
context "when environment doesn't exist" do
|
44
|
-
it { should be nil }
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe '#branch' do
|
49
|
-
subject { described_class.new.branch }
|
50
|
-
|
51
|
-
context 'when environment exists' do
|
52
|
-
let(:env) { { 'TDDIUM_CURRENT_BRANCH' => 'master' } }
|
53
|
-
it { should eql 'master' }
|
54
|
-
end
|
55
|
-
|
56
|
-
context "when environment doesn't exist" do
|
57
|
-
it { should be nil }
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe '#project_dir' do
|
62
|
-
subject { described_class.new.project_dir }
|
63
|
-
|
64
|
-
context 'when environment exists' do
|
65
|
-
let(:env) { { 'TDDIUM_REPO_ROOT' => '/example/repo/root' } }
|
66
|
-
it { should eql '/example/repo/root' }
|
67
|
-
end
|
68
|
-
|
69
|
-
context "when environment doesn't exist" do
|
70
|
-
it { should be nil }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|