selective-ruby-core 0.1.2-arm64-darwin → 0.1.4-arm64-darwin
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/bin/build_env.sh +9 -3
- data/lib/bin/transport +0 -0
- data/lib/selective/ruby/core/controller.rb +39 -6
- data/lib/selective/ruby/core/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8367e139f147f3a3d385b6559a7abf7cc233b55dce6a9efdd7fb3ad560e2bea8
|
4
|
+
data.tar.gz: f08c207e0e7269048b4aa4a277fb0d930412b1f01115de6059c0a42adfcb6ff3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86b82b6d7aa53161760d4b3472543f23dc547f555914c212f29f7230f8d694c0bcbbe433afa8f481191c740e02d31612e0a98348ba829e2a2f4257e90df33c17
|
7
|
+
data.tar.gz: 85b1d0dee79c85655963fd744134c3bf655b3d283e93c098e3637b94ce6f1a2af27d6bb8acc88805927ab9cb58af7ce6603983d2e822a08e9113b7d17870704f
|
data/lib/bin/build_env.sh
CHANGED
@@ -4,11 +4,13 @@
|
|
4
4
|
if [ -n "$GITHUB_ACTIONS" ]; then
|
5
5
|
# Get environment variables
|
6
6
|
platform=github_actions
|
7
|
-
branch=${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}
|
7
|
+
branch=${SELECTIVE_BRANCH:-${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}}
|
8
8
|
pr_title=$SELECTIVE_PR_TITLE
|
9
|
-
target_branch=${GITHUB_BASE_REF}
|
9
|
+
target_branch=${SELECTIVE_TARGET_BRANCH:-$GITHUB_BASE_REF}
|
10
10
|
actor=$GITHUB_ACTOR
|
11
|
-
sha=$GITHUB_SHA
|
11
|
+
sha=${SELECTIVE_SHA:-$GITHUB_SHA}
|
12
|
+
run_id=${SELECTIVE_RUN_ID:-$GITHUB_RUN_ID}
|
13
|
+
run_attempt=${SELECTIVE_RUN_ATTEMPT:-$GITHUB_RUN_ATTEMPT}
|
12
14
|
commit_message=$(git log --format=%s -n 1 $sha)
|
13
15
|
else
|
14
16
|
platform=$SELECTIVE_PLATFORM
|
@@ -17,6 +19,8 @@ else
|
|
17
19
|
target_branch=$SELECTIVE_TARGET_BRANCH
|
18
20
|
actor=$SELECTIVE_ACTOR
|
19
21
|
sha=$SELECTIVE_SHA
|
22
|
+
run_id=$SELECTIVE_RUN_ID
|
23
|
+
run_attempt=$SELECTIVE_RUN_ATTEMPT
|
20
24
|
commit_message=$(git log --format=%s -n 1 $sha)
|
21
25
|
fi
|
22
26
|
|
@@ -29,6 +33,8 @@ cat <<EOF
|
|
29
33
|
"target_branch": "$target_branch",
|
30
34
|
"actor": "$actor",
|
31
35
|
"sha": "$sha",
|
36
|
+
"run_id": "$run_id",
|
37
|
+
"run_attempt": "$run_attempt",
|
32
38
|
"commit_message": "$commit_message"
|
33
39
|
}
|
34
40
|
EOF
|
data/lib/bin/transport
CHANGED
Binary file
|
@@ -14,7 +14,7 @@ module Selective
|
|
14
14
|
@debug = debug
|
15
15
|
@runner = runner
|
16
16
|
@retries = 0
|
17
|
-
@runner_id = ENV.fetch("SELECTIVE_RUNNER_ID", generate_runner_id)
|
17
|
+
@runner_id = safe_filename(ENV.fetch("SELECTIVE_RUNNER_ID", generate_runner_id))
|
18
18
|
@logger = init_logger(log)
|
19
19
|
end
|
20
20
|
|
@@ -23,6 +23,7 @@ module Selective
|
|
23
23
|
@transport_pid = spawn_transport_process(reconnect ? transport_url + "&reconnect=true" : transport_url)
|
24
24
|
|
25
25
|
handle_termination_signals(transport_pid)
|
26
|
+
wait_for_connectivity
|
26
27
|
run_main_loop
|
27
28
|
rescue NamedPipe::PipeClosedError
|
28
29
|
retry!
|
@@ -66,8 +67,6 @@ module Selective
|
|
66
67
|
def run_main_loop
|
67
68
|
loop do
|
68
69
|
message = pipe.read
|
69
|
-
next sleep(0.1) if message.nil? || message.empty?
|
70
|
-
|
71
70
|
response = JSON.parse(message, symbolize_names: true)
|
72
71
|
|
73
72
|
@logger.info("Received Command: #{response}")
|
@@ -101,13 +100,15 @@ module Selective
|
|
101
100
|
def transport_url
|
102
101
|
@transport_url ||= begin
|
103
102
|
api_key = ENV.fetch("SELECTIVE_API_KEY")
|
104
|
-
run_id = ENV.fetch("SELECTIVE_RUN_ID")
|
105
|
-
run_attempt = ENV.fetch("SELECTIVE_RUN_ATTEMPT", SecureRandom.uuid)
|
106
103
|
host = ENV.fetch("SELECTIVE_HOST", "wss://app.selective.ci")
|
107
104
|
|
108
105
|
# Validate that host is a valid websocket url(starts with ws:// or wss://)
|
109
106
|
raise "Invalid host: #{host}" unless host.match?(/^wss?:\/\//)
|
110
107
|
|
108
|
+
run_id = build_env.delete("run_id")
|
109
|
+
run_attempt = build_env.delete("run_attempt")
|
110
|
+
run_attempt = SecureRandom.uuid if run_attempt.nil? || run_attempt.empty?
|
111
|
+
|
111
112
|
params = {
|
112
113
|
"run_id" => run_id,
|
113
114
|
"run_attempt" => run_attempt,
|
@@ -151,6 +152,31 @@ module Selective
|
|
151
152
|
end
|
152
153
|
end
|
153
154
|
|
155
|
+
def wait_for_connectivity
|
156
|
+
@connectivity = false
|
157
|
+
|
158
|
+
Thread.new do
|
159
|
+
sleep(5)
|
160
|
+
unless @connectivity
|
161
|
+
puts "Transport process failed to start. Exiting..."
|
162
|
+
kill_transport
|
163
|
+
exit(1)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
loop do
|
168
|
+
message = pipe.read
|
169
|
+
|
170
|
+
# The message is nil until the transport opens the pipe
|
171
|
+
# for writing. So, we must handle that here.
|
172
|
+
next sleep(0.1) if message.nil?
|
173
|
+
|
174
|
+
response = JSON.parse(message, symbolize_names: true)
|
175
|
+
@connectivity = true if response[:command] == "connected"
|
176
|
+
break
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
154
180
|
def handle_termination_signals(pid)
|
155
181
|
["INT", "TERM"].each do |signal|
|
156
182
|
Signal.trap(signal) do
|
@@ -173,7 +199,7 @@ module Selective
|
|
173
199
|
|
174
200
|
sleep(1)
|
175
201
|
end
|
176
|
-
rescue NamedPipe::PipeClosedError
|
202
|
+
rescue NamedPipe::PipeClosedError, IOError
|
177
203
|
# If the pipe is close, move straight to killing
|
178
204
|
# it forcefully.
|
179
205
|
end
|
@@ -270,6 +296,13 @@ module Selective
|
|
270
296
|
@debug
|
271
297
|
end
|
272
298
|
|
299
|
+
def safe_filename(filename)
|
300
|
+
filename
|
301
|
+
.gsub(/[\/\\:*?"<>|\n\r]+/, '_')
|
302
|
+
.gsub(/^\.+|\.+$/, '')
|
303
|
+
.strip[0, 255]
|
304
|
+
end
|
305
|
+
|
273
306
|
def with_error_handling(include_header: true)
|
274
307
|
yield
|
275
308
|
rescue => e
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selective-ruby-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: arm64-darwin
|
6
6
|
authors:
|
7
7
|
- Benjamin Wood
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-12-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: zeitwerk
|