vx-builder 0.5.7 → 0.5.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -2
- data/bin/vx_parallel_rspec +30 -0
- data/lib/vx/builder/build_configuration.rb +28 -9
- data/lib/vx/builder/matrix_builder.rb +16 -1
- data/lib/vx/builder/script_builder/base.rb +1 -0
- data/lib/vx/builder/script_builder/parallel.rb +22 -0
- data/lib/vx/builder/script_builder/prepare.rb +7 -0
- data/lib/vx/builder/script_builder.rb +2 -0
- data/lib/vx/builder/version.rb +1 -1
- data/spec/fixtures/integration/go/language/before_script.sh +2 -0
- data/spec/fixtures/integration/ruby/deploy/before_script.sh +2 -0
- data/spec/fixtures/integration/ruby/language/before_script.sh +2 -0
- data/spec/fixtures/integration/ruby/matrix/0.before_script.sh +2 -0
- data/spec/fixtures/integration/ruby/matrix/1.before_script.sh +2 -0
- data/spec/fixtures/integration/ruby/matrix/d.before_script.sh +2 -0
- data/spec/fixtures/travis.yml +2 -0
- data/spec/integration/ruby_spec.rb +22 -0
- data/spec/lib/builder/build_configuration_spec.rb +3 -1
- data/spec/lib/builder/matrix_builder_spec.rb +31 -0
- data/spec/lib/builder/script_builder_spec.rb +13 -0
- data/spec/spec_helper.rb +3 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7647e4914da11ea8c22467ba56c5079d2026b4a
|
4
|
+
data.tar.gz: 2a0e59c11041a965a4d7fd6390a5108a08f389a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4d3c4ed7867c76fdcb1bc91db22fb8a298969f2c59a743d69595a1a61d1af2c5a5c79f426d552f8a4be33b28b440d7ad488a90d1062184f6b0a147c02091365
|
7
|
+
data.tar.gz: 80dadcc01f7164a4b54b246343175194d583e5f156242e07ecea17c35ac264146fe648e49e8fa2c0f9b86b7668c5eb52c0898df7211598f66f4b88202315d7f3
|
data/.travis.yml
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
i=0
|
4
|
+
files=()
|
5
|
+
|
6
|
+
BLACK="\033[30m"
|
7
|
+
RED="\033[31m"
|
8
|
+
GREEN="\033[32m"
|
9
|
+
YELLOW="\033[33m"
|
10
|
+
BLUE="\033[34m"
|
11
|
+
PINK="\033[35m"
|
12
|
+
CYAN="\033[36m"
|
13
|
+
WHITE="\033[37m"
|
14
|
+
NORMAL="\033[0;39m"
|
15
|
+
|
16
|
+
JOBS=${CI_PARALLEL_JOBS:-1}
|
17
|
+
JOB_NUMBER=${CI_PARALLEL_JOB_NUMBER:-0}
|
18
|
+
|
19
|
+
for file in $(find ./spec -name "*_spec.rb" | sort)
|
20
|
+
do
|
21
|
+
if [ $(($i % $JOBS)) -eq $JOB_NUMBER ]
|
22
|
+
then
|
23
|
+
files+=" $file"
|
24
|
+
fi
|
25
|
+
((i++))
|
26
|
+
done
|
27
|
+
|
28
|
+
echo -e "${GREEN}Parallel running $((${JOB_NUMBER} + 1)) of ${JOBS} ${NORMAL}"
|
29
|
+
echo "bundle exec rspec $@ ${files[@]}"
|
30
|
+
exec bundle exec rspec $@ ${files[@]}
|
@@ -42,6 +42,9 @@ module Vx
|
|
42
42
|
|
43
43
|
before_deploy
|
44
44
|
after_deploy
|
45
|
+
|
46
|
+
parallel
|
47
|
+
parallel_job_number
|
45
48
|
}
|
46
49
|
|
47
50
|
class << self
|
@@ -63,16 +66,16 @@ module Vx
|
|
63
66
|
def initialize(new_attributes = {}, matrix_attributes = {})
|
64
67
|
new_attributes = {} unless new_attributes.is_a?(Hash)
|
65
68
|
|
66
|
-
@env
|
67
|
-
@cache
|
68
|
-
@vexor
|
69
|
-
@matrix
|
69
|
+
@env = Env.new new_attributes.delete("env")
|
70
|
+
@cache = Cache.new new_attributes.delete("cache")
|
71
|
+
@vexor = Vexor.new new_attributes.delete("vexor")
|
72
|
+
@matrix = Matrix.new new_attributes.delete("matrix")
|
70
73
|
|
71
|
-
@deploy
|
72
|
-
@deploy_modules
|
73
|
-
@deploy_modules
|
74
|
+
@deploy = Deploy.new new_attributes.delete("deploy")
|
75
|
+
@deploy_modules = new_attributes.delete("deploy_modules") || []
|
76
|
+
@deploy_modules = Deploy.restore_modules(@deploy_modules)
|
74
77
|
|
75
|
-
@matrix_attributes
|
78
|
+
@matrix_attributes = matrix_attributes
|
76
79
|
|
77
80
|
build_attributes new_attributes
|
78
81
|
end
|
@@ -137,11 +140,27 @@ module Vx
|
|
137
140
|
@attributes["language"].first
|
138
141
|
end
|
139
142
|
|
143
|
+
def parallel
|
144
|
+
@attributes["parallel"].first.to_i
|
145
|
+
end
|
146
|
+
|
147
|
+
def parallel?
|
148
|
+
parallel > 0
|
149
|
+
end
|
150
|
+
|
151
|
+
def parallel_job_number
|
152
|
+
@attributes["parallel_job_number"].first.to_i
|
153
|
+
end
|
154
|
+
|
155
|
+
def parallel_job_number?
|
156
|
+
parallel_job_number > 0
|
157
|
+
end
|
158
|
+
|
140
159
|
def cached_directories
|
141
160
|
cache.enabled? and cache.directories
|
142
161
|
end
|
143
162
|
|
144
|
-
(ATTRIBUTES - %w{ language }).each do |attr|
|
163
|
+
(ATTRIBUTES - %w{ language parallel parallel_job_number }).each do |attr|
|
145
164
|
define_method attr do
|
146
165
|
attributes[attr]
|
147
166
|
end
|
@@ -22,7 +22,7 @@ module Vx
|
|
22
22
|
def build
|
23
23
|
@build ||= begin
|
24
24
|
new_attributes = build_configuration.to_hash.dup
|
25
|
-
build_configurations =
|
25
|
+
build_configurations = attributes_for_new_build_configurations_with_parallel.map do |matrix_attributes|
|
26
26
|
BuildConfiguration.new(
|
27
27
|
new_attributes.merge(matrix_attributes),
|
28
28
|
matrix_attributes
|
@@ -37,6 +37,21 @@ module Vx
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
def attributes_for_new_build_configurations_with_parallel
|
41
|
+
new_attrs = []
|
42
|
+
attrs = attributes_for_new_build_configurations_with_merged_env
|
43
|
+
if build_configuration.parallel?
|
44
|
+
attrs.each do |attr|
|
45
|
+
1.upto(build_configuration.parallel) do |n|
|
46
|
+
new_attrs << attr.merge("parallel_job_number" => n - 1)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
new_attrs
|
50
|
+
else
|
51
|
+
attrs
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
40
55
|
def attributes_for_new_build_configurations_with_merged_env
|
41
56
|
attrs = attributes_for_new_build_configurations
|
42
57
|
attrs = [{}] if attrs.empty?
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Vx
|
2
|
+
module Builder
|
3
|
+
class ScriptBuilder
|
4
|
+
|
5
|
+
class Parallel < Base
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
if env.source.parallel?
|
9
|
+
env.init << trace_sh_command("export CI_PARALLEL_JOBS=#{env.source.parallel}")
|
10
|
+
|
11
|
+
if env.source.parallel_job_number?
|
12
|
+
env.init << trace_sh_command("export CI_PARALLEL_JOB_NUMBER=#{env.source.parallel_job_number}")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
app.call(env)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -30,6 +30,13 @@ module Vx
|
|
30
30
|
i << "mkdir -p #{data_path}"
|
31
31
|
i << "mkdir -p #{repo_path}"
|
32
32
|
|
33
|
+
%w{ vx_parallel_rspec }.each do |bin|
|
34
|
+
src = File.expand_path("../../../../../bin/#{bin}", __FILE__)
|
35
|
+
dst = "$(pwd)/bin/#{bin.sub("vx_", "")}"
|
36
|
+
i << upload_sh_command(dst, File.read(src))
|
37
|
+
i << "chmod 0750 #{dst}"
|
38
|
+
end
|
39
|
+
|
33
40
|
if deploy_key
|
34
41
|
i << upload_sh_command(key_file, deploy_key)
|
35
42
|
i << "chmod 0600 #{key_file}"
|
@@ -20,6 +20,7 @@ module Vx
|
|
20
20
|
autoload :Deploy, File.expand_path("../script_builder/deploy", __FILE__)
|
21
21
|
autoload :Timeouts, File.expand_path("../script_builder/timeouts", __FILE__)
|
22
22
|
autoload :Defaults, File.expand_path("../script_builder/defaults", __FILE__)
|
23
|
+
autoload :Parallel, File.expand_path("../script_builder/parallel", __FILE__)
|
23
24
|
|
24
25
|
include Common::Helper::Middlewares
|
25
26
|
|
@@ -27,6 +28,7 @@ module Vx
|
|
27
28
|
use Builder::ScriptBuilder::Timeouts
|
28
29
|
use Builder::ScriptBuilder::Cache
|
29
30
|
use Builder::ScriptBuilder::Env
|
31
|
+
use Builder::ScriptBuilder::Parallel
|
30
32
|
use Builder::ScriptBuilder::Services
|
31
33
|
use Builder::ScriptBuilder::Prepare
|
32
34
|
|
data/lib/vx/builder/version.rb
CHANGED
@@ -17,6 +17,8 @@ export PATH=$VX_ROOT/bin:$PATH
|
|
17
17
|
mkdir -p $VX_ROOT/bin
|
18
18
|
mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
|
19
19
|
mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
|
20
|
+
(echo IyEvYmluL2Jhc2gKCmk9MApmaWxlcz0oKQoKQkxBQ0s9IlwwMzNbMzBtIgpSRUQ9IlwwMzNbMzFtIgpHUkVFTj0iXDAzM1szMm0iCllFTExPVz0iXDAzM1szM20iCkJMVUU9IlwwMzNbMzRtIgpQSU5LPSJcMDMzWzM1bSIKQ1lBTj0iXDAzM1szNm0iCldISVRFPSJcMDMzWzM3bSIKTk9STUFMPSJcMDMzWzA7MzltIgoKSk9CUz0ke0NJX1BBUkFMTEVMX0pPQlM6LTF9CkpPQl9OVU1CRVI9JHtDSV9QQVJBTExFTF9KT0JfTlVNQkVSOi0wfQoKZm9yIGZpbGUgaW4gJChmaW5kIC4vc3BlYyAtbmFtZSAiKl9zcGVjLnJiIiB8IHNvcnQpCmRvCiAgaWYgWyAkKCgkaSAlICRKT0JTKSkgLWVxICRKT0JfTlVNQkVSIF0KICB0aGVuCiAgICBmaWxlcys9IiAkZmlsZSIKICBmaQogICgoaSsrKSkKZG9uZQoKZWNobyAtZSAiJHtHUkVFTn1QYXJhbGxlbCBydW5uaW5nICQoKCR7Sk9CX05VTUJFUn0gKyAxKSkgb2YgJHtKT0JTfSAke05PUk1BTH0iCmVjaG8gImJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19IgpleGVjIGJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19Cg== | base64 --decode) > $(pwd)/bin/parallel_rspec
|
21
|
+
chmod 0750 $(pwd)/bin/parallel_rspec
|
20
22
|
(echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
|
21
23
|
chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
|
22
24
|
export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
|
@@ -21,6 +21,8 @@ export PATH=$VX_ROOT/bin:$PATH
|
|
21
21
|
mkdir -p $VX_ROOT/bin
|
22
22
|
mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
|
23
23
|
mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
|
24
|
+
(echo IyEvYmluL2Jhc2gKCmk9MApmaWxlcz0oKQoKQkxBQ0s9IlwwMzNbMzBtIgpSRUQ9IlwwMzNbMzFtIgpHUkVFTj0iXDAzM1szMm0iCllFTExPVz0iXDAzM1szM20iCkJMVUU9IlwwMzNbMzRtIgpQSU5LPSJcMDMzWzM1bSIKQ1lBTj0iXDAzM1szNm0iCldISVRFPSJcMDMzWzM3bSIKTk9STUFMPSJcMDMzWzA7MzltIgoKSk9CUz0ke0NJX1BBUkFMTEVMX0pPQlM6LTF9CkpPQl9OVU1CRVI9JHtDSV9QQVJBTExFTF9KT0JfTlVNQkVSOi0wfQoKZm9yIGZpbGUgaW4gJChmaW5kIC4vc3BlYyAtbmFtZSAiKl9zcGVjLnJiIiB8IHNvcnQpCmRvCiAgaWYgWyAkKCgkaSAlICRKT0JTKSkgLWVxICRKT0JfTlVNQkVSIF0KICB0aGVuCiAgICBmaWxlcys9IiAkZmlsZSIKICBmaQogICgoaSsrKSkKZG9uZQoKZWNobyAtZSAiJHtHUkVFTn1QYXJhbGxlbCBydW5uaW5nICQoKCR7Sk9CX05VTUJFUn0gKyAxKSkgb2YgJHtKT0JTfSAke05PUk1BTH0iCmVjaG8gImJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19IgpleGVjIGJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19Cg== | base64 --decode) > $(pwd)/bin/parallel_rspec
|
25
|
+
chmod 0750 $(pwd)/bin/parallel_rspec
|
24
26
|
(echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
|
25
27
|
chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
|
26
28
|
export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
|
@@ -17,6 +17,8 @@ export PATH=$VX_ROOT/bin:$PATH
|
|
17
17
|
mkdir -p $VX_ROOT/bin
|
18
18
|
mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
|
19
19
|
mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
|
20
|
+
(echo IyEvYmluL2Jhc2gKCmk9MApmaWxlcz0oKQoKQkxBQ0s9IlwwMzNbMzBtIgpSRUQ9IlwwMzNbMzFtIgpHUkVFTj0iXDAzM1szMm0iCllFTExPVz0iXDAzM1szM20iCkJMVUU9IlwwMzNbMzRtIgpQSU5LPSJcMDMzWzM1bSIKQ1lBTj0iXDAzM1szNm0iCldISVRFPSJcMDMzWzM3bSIKTk9STUFMPSJcMDMzWzA7MzltIgoKSk9CUz0ke0NJX1BBUkFMTEVMX0pPQlM6LTF9CkpPQl9OVU1CRVI9JHtDSV9QQVJBTExFTF9KT0JfTlVNQkVSOi0wfQoKZm9yIGZpbGUgaW4gJChmaW5kIC4vc3BlYyAtbmFtZSAiKl9zcGVjLnJiIiB8IHNvcnQpCmRvCiAgaWYgWyAkKCgkaSAlICRKT0JTKSkgLWVxICRKT0JfTlVNQkVSIF0KICB0aGVuCiAgICBmaWxlcys9IiAkZmlsZSIKICBmaQogICgoaSsrKSkKZG9uZQoKZWNobyAtZSAiJHtHUkVFTn1QYXJhbGxlbCBydW5uaW5nICQoKCR7Sk9CX05VTUJFUn0gKyAxKSkgb2YgJHtKT0JTfSAke05PUk1BTH0iCmVjaG8gImJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19IgpleGVjIGJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19Cg== | base64 --decode) > $(pwd)/bin/parallel_rspec
|
21
|
+
chmod 0750 $(pwd)/bin/parallel_rspec
|
20
22
|
(echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
|
21
23
|
chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
|
22
24
|
export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
|
@@ -17,6 +17,8 @@ export PATH=$VX_ROOT/bin:$PATH
|
|
17
17
|
mkdir -p $VX_ROOT/bin
|
18
18
|
mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
|
19
19
|
mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
|
20
|
+
(echo IyEvYmluL2Jhc2gKCmk9MApmaWxlcz0oKQoKQkxBQ0s9IlwwMzNbMzBtIgpSRUQ9IlwwMzNbMzFtIgpHUkVFTj0iXDAzM1szMm0iCllFTExPVz0iXDAzM1szM20iCkJMVUU9IlwwMzNbMzRtIgpQSU5LPSJcMDMzWzM1bSIKQ1lBTj0iXDAzM1szNm0iCldISVRFPSJcMDMzWzM3bSIKTk9STUFMPSJcMDMzWzA7MzltIgoKSk9CUz0ke0NJX1BBUkFMTEVMX0pPQlM6LTF9CkpPQl9OVU1CRVI9JHtDSV9QQVJBTExFTF9KT0JfTlVNQkVSOi0wfQoKZm9yIGZpbGUgaW4gJChmaW5kIC4vc3BlYyAtbmFtZSAiKl9zcGVjLnJiIiB8IHNvcnQpCmRvCiAgaWYgWyAkKCgkaSAlICRKT0JTKSkgLWVxICRKT0JfTlVNQkVSIF0KICB0aGVuCiAgICBmaWxlcys9IiAkZmlsZSIKICBmaQogICgoaSsrKSkKZG9uZQoKZWNobyAtZSAiJHtHUkVFTn1QYXJhbGxlbCBydW5uaW5nICQoKCR7Sk9CX05VTUJFUn0gKyAxKSkgb2YgJHtKT0JTfSAke05PUk1BTH0iCmVjaG8gImJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19IgpleGVjIGJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19Cg== | base64 --decode) > $(pwd)/bin/parallel_rspec
|
21
|
+
chmod 0750 $(pwd)/bin/parallel_rspec
|
20
22
|
(echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
|
21
23
|
chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
|
22
24
|
export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
|
@@ -17,6 +17,8 @@ export PATH=$VX_ROOT/bin:$PATH
|
|
17
17
|
mkdir -p $VX_ROOT/bin
|
18
18
|
mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
|
19
19
|
mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
|
20
|
+
(echo IyEvYmluL2Jhc2gKCmk9MApmaWxlcz0oKQoKQkxBQ0s9IlwwMzNbMzBtIgpSRUQ9IlwwMzNbMzFtIgpHUkVFTj0iXDAzM1szMm0iCllFTExPVz0iXDAzM1szM20iCkJMVUU9IlwwMzNbMzRtIgpQSU5LPSJcMDMzWzM1bSIKQ1lBTj0iXDAzM1szNm0iCldISVRFPSJcMDMzWzM3bSIKTk9STUFMPSJcMDMzWzA7MzltIgoKSk9CUz0ke0NJX1BBUkFMTEVMX0pPQlM6LTF9CkpPQl9OVU1CRVI9JHtDSV9QQVJBTExFTF9KT0JfTlVNQkVSOi0wfQoKZm9yIGZpbGUgaW4gJChmaW5kIC4vc3BlYyAtbmFtZSAiKl9zcGVjLnJiIiB8IHNvcnQpCmRvCiAgaWYgWyAkKCgkaSAlICRKT0JTKSkgLWVxICRKT0JfTlVNQkVSIF0KICB0aGVuCiAgICBmaWxlcys9IiAkZmlsZSIKICBmaQogICgoaSsrKSkKZG9uZQoKZWNobyAtZSAiJHtHUkVFTn1QYXJhbGxlbCBydW5uaW5nICQoKCR7Sk9CX05VTUJFUn0gKyAxKSkgb2YgJHtKT0JTfSAke05PUk1BTH0iCmVjaG8gImJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19IgpleGVjIGJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19Cg== | base64 --decode) > $(pwd)/bin/parallel_rspec
|
21
|
+
chmod 0750 $(pwd)/bin/parallel_rspec
|
20
22
|
(echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
|
21
23
|
chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
|
22
24
|
export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
|
@@ -17,6 +17,8 @@ export PATH=$VX_ROOT/bin:$PATH
|
|
17
17
|
mkdir -p $VX_ROOT/bin
|
18
18
|
mkdir -p ${VX_ROOT}/data/vexor/vx-test-repo
|
19
19
|
mkdir -p ${VX_ROOT}/code/vexor/vx-test-repo
|
20
|
+
(echo IyEvYmluL2Jhc2gKCmk9MApmaWxlcz0oKQoKQkxBQ0s9IlwwMzNbMzBtIgpSRUQ9IlwwMzNbMzFtIgpHUkVFTj0iXDAzM1szMm0iCllFTExPVz0iXDAzM1szM20iCkJMVUU9IlwwMzNbMzRtIgpQSU5LPSJcMDMzWzM1bSIKQ1lBTj0iXDAzM1szNm0iCldISVRFPSJcMDMzWzM3bSIKTk9STUFMPSJcMDMzWzA7MzltIgoKSk9CUz0ke0NJX1BBUkFMTEVMX0pPQlM6LTF9CkpPQl9OVU1CRVI9JHtDSV9QQVJBTExFTF9KT0JfTlVNQkVSOi0wfQoKZm9yIGZpbGUgaW4gJChmaW5kIC4vc3BlYyAtbmFtZSAiKl9zcGVjLnJiIiB8IHNvcnQpCmRvCiAgaWYgWyAkKCgkaSAlICRKT0JTKSkgLWVxICRKT0JfTlVNQkVSIF0KICB0aGVuCiAgICBmaWxlcys9IiAkZmlsZSIKICBmaQogICgoaSsrKSkKZG9uZQoKZWNobyAtZSAiJHtHUkVFTn1QYXJhbGxlbCBydW5uaW5nICQoKCR7Sk9CX05VTUJFUn0gKyAxKSkgb2YgJHtKT0JTfSAke05PUk1BTH0iCmVjaG8gImJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19IgpleGVjIGJ1bmRsZSBleGVjIHJzcGVjICRAICR7ZmlsZXNbQF19Cg== | base64 --decode) > $(pwd)/bin/parallel_rspec
|
21
|
+
chmod 0750 $(pwd)/bin/parallel_rspec
|
20
22
|
(echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBcE1rYW0rbWh3Q2RDUWRxdHU3VTlwNVZSRm1rcmJpOUhhQTN2YWdwaE12eXJ5V3F4CkM5c1krYW44akNOUlVwZWx5ako4ZjZiNi9WNWg0V2NubHdwT3ZWR0duczRIT2JuWWo4OUdLb0JGK1FwVDI4bXAKQ01pMGt6SE5TV01SWmcvZDl4M0FmMmNESWdKaGdHS2RLTGhPYitTSjJpUnpLQTZ5d215TlRyVUI0dEpocGdKLwpQQTFsR2xZWGtHYWQyS1JBZmc3bVRjdVFycUxKNHFpMlhkZ0FIY3RJU045d1VkYkUxeDVIRlB5enVrd0t1QkFFCmg3bTZWVnJKenNrS05yQnN1T1ZTWnVRNnJ2OVRpcVdYVnBBWGdyV3ZLenRsZjNTTkF0dG1BQmI1ZDJ1UE9hMisKcmVDV0V6SGJXT0ZnTVFEUXNYc1MzcnFDM2Z6dzRWTUtSUXdYSVFJREFRQUJBb0lCQURnWk9wVFBrY0JmM1IrYwpPYjhJY1lmbXZtYzV3STVQVENqeGJZc1ZJNGYvR3VDRUVPZnZXKzVLMzI0NTY4cUpVK2lsRFZ0TDFuQ0JQQ05IClFlUWFuem0yVW5VbndLLzNRL0daWjlLNlBwZ00yd1djL28yOS9qT0tKZEFSQ1BCTkFJekxOU2hxUWxmR3BialcKV1podVBrMjdhTzY1ci9aNElvVXIvV05KSGU1QWt2NUZNZnNlQVoremxBSEEzMlFxTmdnT2VpdDY1R2lvMmNJdQpZREtJNU5yMWlpU3EzSk1mRVp2bWMvNVFlZFU5VTdESWVOV3dqaThwR3pGa0Y4eGh1NkV5OWhwR1IyVTdnRXFSCitkeVNud2k4K3Fhc3BvZjhyZ3VHZVNVWlZtb1RHbWZZVUVuejFacEpWYVFpQUJrYVZYd0FEYWhodmU4dGQxVHIKN2gxYitRMENnWUVBMXZEcDdPa2xXeXZGaWVQWXU0cmxubWpWS052NmtiVVVMdE9peDl5S1diQXBZNmxqcFloUwp5aWdpcVY2amlWb3JDMUNsY1hQV3BXc0hvc2QrcDZEUmFhME1pcUQyV0pQU1huZENvbUdSc09yQ2VPN0RyTFdsClVDUkhsMU9sY1JIY3V4U3FWREgrQ0NxVytOQzRKeFVLYzIyT3pJK2thS1RydWozczlYa2VmSU1DZ1lFQXhFTjYKQjd4QU5ZOWNlYjFYb2V2M1o3QVdJaExQUThHUFozS1NTbXoxWmRwMTFNTm91eFJKQnpEUzRrNjRRdjJuNDRKUApVK2tiWFNqdm5DeUlUQ2pUZXZESXNLeEh0TzB3T0xFd0I1TENCenBKVEVzandHWmNUUDBBT3Y2ZHF3SndMUHBtCnlzaVRyTEZCSDVTZFZzVE10OFVKRnhaMzNzRFdIWnZTbzBwMjFJc0NnWUI2ODhyTWs3Mmp2cEU4UkpMcERSWTIKbkg4NjVVTWJjSHNBSWw0ZWQrRElWMFlGMVpMRDBReVN5WXl5V0FteWUxcmVHUjdhbkVudnpCN05GZE0wcm9DOApNNXBWL3FlTW1kcWY0UmJEN280NXBzRGlEcXJ1TStaQnhzOFJHRzh1RStxeE5hd05oNTlxS25xOEVDRVhjaWpOClNLR0VFTE1halNTdkg5ZFp3QlFaWXdLQmdRQ2NCaGlJOWJzRjJVWm04WU10RW0zSVhFLzhIbi92R1gxcmU4V1kKclM0WkhxYjEwYkw4cG8rM3k3U2FmSUkzbjNkTWdsZVdHWWJMZExPbnNDOWFmRXBEUGhBTmc2Z3R5VEhBbi92Uwp5WFMrVWpQYkZ4RUE3MThKUlVoZG5mU3g4bXBERjMySVVCUTJBV1FJT3hrcDFhSDVwZ1luK0pDcTRScFd4MzJZCm1xWUZLUUtCZ1FDYkVzdllsZmVXSkRpK0NCSCt6aGZrZldJWTlTaXl1SEVVUWE0aE5iYVMvRGtETWdxTjU4Q3UKOGdYR1NmdEVpVGNMYXQwYTBQNnZlYWNnUEt1aEFIZTFLN2g4NCtSMHJFL2N2MVFUQnBXMzhSUWdhYkxzK2V4eQpqeUY1UjFOSEkvTFhzREJOYWlSMDVzclhkaVNadW1MMGF3WDdyaUM0RHpJazZaWllSZGJuYlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= | base64 --decode) > ${VX_ROOT}/data/vexor/vx-test-repo/key
|
21
23
|
chmod 0600 ${VX_ROOT}/data/vexor/vx-test-repo/key
|
22
24
|
export VX_PRIVATE_KEY=${VX_ROOT}/data/vexor/vx-test-repo/key
|
data/spec/fixtures/travis.yml
CHANGED
@@ -14,6 +14,7 @@ describe "(integration) ruby" do
|
|
14
14
|
after { FileUtils.rm_rf(path) }
|
15
15
|
|
16
16
|
def write_script_to_filter(prefix, script)
|
17
|
+
=begin
|
17
18
|
File.open(fixture_path("integration/ruby/#{prefix}before_script.sh"), 'w') do |io|
|
18
19
|
io << script.to_before_script
|
19
20
|
end
|
@@ -23,6 +24,7 @@ describe "(integration) ruby" do
|
|
23
24
|
File.open(fixture_path("integration/ruby/#{prefix}script.sh"), 'w') do |io|
|
24
25
|
io << script.to_script
|
25
26
|
end
|
27
|
+
=end
|
26
28
|
end
|
27
29
|
|
28
30
|
def build(file, options = {})
|
@@ -113,4 +115,24 @@ describe "(integration) ruby" do
|
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
118
|
+
it "should succesfuly run lang/ruby with parallel_rspec", real: true do
|
119
|
+
file = {"language" => "ruby", "parallel" => 3, "script" => "parallel_rspec"}.to_yaml
|
120
|
+
task = create(
|
121
|
+
:task,
|
122
|
+
sha: "HEAD",
|
123
|
+
branch: "lang/ruby"
|
124
|
+
)
|
125
|
+
|
126
|
+
b = build(file, task: task)
|
127
|
+
Dir.chdir(path) do
|
128
|
+
File.open("script.sh", "w") do |io|
|
129
|
+
io.write "set -e\n"
|
130
|
+
io.write b.scripts[0].to_before_script
|
131
|
+
io.write b.scripts[0].to_script
|
132
|
+
end
|
133
|
+
system("env", "-", "USER=$USER", "HOME=#{path}", "bash", "script.sh" )
|
134
|
+
expect($?.to_i).to eq 0
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
116
138
|
end
|
@@ -53,7 +53,9 @@ describe Vx::Builder::BuildConfiguration do
|
|
53
53
|
"bundler_args" => ["--without development"],
|
54
54
|
"before_deploy" => ["echo before deploy"],
|
55
55
|
"after_deploy" => ["echo after deploy"],
|
56
|
-
"matrix" => {"exclude"=>[{"rvm"=>2.1}]}
|
56
|
+
"matrix" => {"exclude"=>[{"rvm"=>2.1}]},
|
57
|
+
"parallel" => [3],
|
58
|
+
"parallel_job_number" => []
|
57
59
|
}
|
58
60
|
) }
|
59
61
|
end
|
@@ -59,6 +59,37 @@ describe Vx::Builder::MatrixBuilder do
|
|
59
59
|
expect(configurations.map(&:env_matrix)).to eq [["B=backend"], ["B=frontend"], ["B=backend"]]
|
60
60
|
end
|
61
61
|
|
62
|
+
it "should generate parallel jobs" do
|
63
|
+
yaml = YAML.load %{
|
64
|
+
env:
|
65
|
+
global:
|
66
|
+
- FOO=BAR
|
67
|
+
matrix:
|
68
|
+
- B=frontend
|
69
|
+
- B=backend
|
70
|
+
rvm:
|
71
|
+
- 2.0
|
72
|
+
- 2.1
|
73
|
+
parallel: 3
|
74
|
+
}
|
75
|
+
configurations = create_matrix(yaml)
|
76
|
+
expect(configurations).to have(4 * 3).items
|
77
|
+
parallel_attrs = [
|
78
|
+
[{"matrix"=>["B=backend"], "global"=>["FOO=BAR"]}, [2.0], 3, 0],
|
79
|
+
[{"matrix"=>["B=backend"], "global"=>["FOO=BAR"]}, [2.0], 3, 1],
|
80
|
+
[{"matrix"=>["B=backend"], "global"=>["FOO=BAR"]}, [2.0], 3, 2],
|
81
|
+
[{"matrix"=>["B=frontend"], "global"=>["FOO=BAR"]}, [2.0], 3, 0],
|
82
|
+
[{"matrix"=>["B=frontend"], "global"=>["FOO=BAR"]}, [2.0], 3, 1],
|
83
|
+
[{"matrix"=>["B=frontend"], "global"=>["FOO=BAR"]}, [2.0], 3, 2],
|
84
|
+
[{"matrix"=>["B=backend"], "global"=>["FOO=BAR"]}, [2.1], 3, 0],
|
85
|
+
[{"matrix"=>["B=backend"], "global"=>["FOO=BAR"]}, [2.1], 3, 1],
|
86
|
+
[{"matrix"=>["B=backend"], "global"=>["FOO=BAR"]}, [2.1], 3, 2],
|
87
|
+
[{"matrix"=>["B=frontend"], "global"=>["FOO=BAR"]}, [2.1], 3, 0],
|
88
|
+
[{"matrix"=>["B=frontend"], "global"=>["FOO=BAR"]}, [2.1], 3, 1],
|
89
|
+
[{"matrix"=>["B=frontend"], "global"=>["FOO=BAR"]}, [2.1], 3, 2]]
|
90
|
+
expect(configurations.map{|i| [i.env.attributes, i.rvm, i.parallel, i.parallel_job_number] }).to eq parallel_attrs
|
91
|
+
end
|
92
|
+
|
62
93
|
it "should generate 12 configurations" do
|
63
94
|
expect(create_matrix).to have(12).items
|
64
95
|
end
|
@@ -26,7 +26,20 @@ describe Vx::Builder::ScriptBuilder do
|
|
26
26
|
expect(simple_script.vexor.timeout).to be_nil
|
27
27
|
expect(simple_script.vexor.read_timeout).to be_nil
|
28
28
|
end
|
29
|
+
end
|
29
30
|
|
31
|
+
context "parallel" do
|
32
|
+
it "should create parallel jobs" do
|
33
|
+
matrix = Vx::Builder::MatrixBuilder.new(source)
|
34
|
+
configurations = matrix.build
|
35
|
+
configuration = configurations[1]
|
36
|
+
expect(configuration.parallel).to eq 3
|
37
|
+
expect(configuration.parallel_job_number).to eq 1
|
38
|
+
parallel_script = described_class.new task, configuration
|
39
|
+
content = parallel_script.to_before_script
|
40
|
+
expect(content).to match("CI_PARALLEL_JOBS\=3")
|
41
|
+
expect(content).to match("CI_PARALLEL_JOB_NUMBER\=1")
|
42
|
+
end
|
30
43
|
end
|
31
44
|
|
32
45
|
context "#to_before_script" do
|
data/spec/spec_helper.rb
CHANGED
@@ -9,7 +9,9 @@ Dir[File.expand_path("../..", __FILE__) + "/spec/support/**/*.rb"].each {|f| req
|
|
9
9
|
RSpec.configure do |config|
|
10
10
|
config.mock_with :rr
|
11
11
|
|
12
|
-
|
12
|
+
unless ENV['VX_BUILDER_REAL']
|
13
|
+
config.filter_run_excluding real: true
|
14
|
+
end
|
13
15
|
|
14
16
|
config.before(:each) do
|
15
17
|
Vx::Builder.reset_config!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vx-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Galinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vx-common
|
@@ -111,7 +111,8 @@ dependencies:
|
|
111
111
|
description: ' Write a gem description'
|
112
112
|
email:
|
113
113
|
- dima.exe@gmail.com
|
114
|
-
executables:
|
114
|
+
executables:
|
115
|
+
- vx_parallel_rspec
|
115
116
|
extensions: []
|
116
117
|
extra_rdoc_files: []
|
117
118
|
files:
|
@@ -122,6 +123,7 @@ files:
|
|
122
123
|
- LICENSE.txt
|
123
124
|
- README.md
|
124
125
|
- Rakefile
|
126
|
+
- bin/vx_parallel_rspec
|
125
127
|
- lib/vx/builder.rb
|
126
128
|
- lib/vx/builder/build_configuration.rb
|
127
129
|
- lib/vx/builder/build_configuration/cache.rb
|
@@ -147,6 +149,7 @@ files:
|
|
147
149
|
- lib/vx/builder/script_builder/go.rb
|
148
150
|
- lib/vx/builder/script_builder/java.rb
|
149
151
|
- lib/vx/builder/script_builder/nodejs.rb
|
152
|
+
- lib/vx/builder/script_builder/parallel.rb
|
150
153
|
- lib/vx/builder/script_builder/prepare.rb
|
151
154
|
- lib/vx/builder/script_builder/ruby.rb
|
152
155
|
- lib/vx/builder/script_builder/rust.rb
|