selective-ruby-core 0.1.3-x86_64-linux → 0.1.5-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61626d843514502b6ebb7bd829345d0a18bc76603fe7c2568838371321eeb3ae
4
- data.tar.gz: 360dcffb94500fb62dcb6ce0ce5c9bce85a71247a3750f10a1edec5f1532458c
3
+ metadata.gz: ced267905bdcf1596a248cdcd2018cd2e628422e2e27aec445311b5d9afd4857
4
+ data.tar.gz: f4fbeb39edca06a95e3bf982f7b28c612a4d04d0165556ec341aef304eeb5718
5
5
  SHA512:
6
- metadata.gz: 8886c9761492e0ee4fc892e2605c2aab1c7e508d2d1a04af7ea9d0d1c80b3d9a03244ed56e4587b36ff7695fc31697db8538ac7e11d241132a026dd04aaf91db
7
- data.tar.gz: 779c4a1e9bf5057b2f89d0b4f991a7c149a29f4f70d7df85a4d362f4369cca4885ce42ba3e5837de8685828b47bab84bc1f1840bc942fbe55a5e0505cf14c7ee
6
+ metadata.gz: 937a82d41f7b323f925d7a5a761a7045617decf18073fd1aedd482a0c613f24adbbbff3ff53e2b2b068d584cfc7da1071f1b101378a4bbb3575a2f625904d58c
7
+ data.tar.gz: e93d8037c5af50b1d61700b68dea98d368b56db507480831b5b0be4b704b7e2684614571ef9d789f4c04409464e94b965db1676127a8e7368c0fc0e78aa3b1a9
data/lib/bin/build_env.sh CHANGED
@@ -4,13 +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
12
- run_id=$GITHUB_RUN_ID
13
- run_attempt=$GITHUB_RUN_ATTEMPT
11
+ sha=${SELECTIVE_SHA:-$GITHUB_SHA}
12
+ run_id=${SELECTIVE_RUN_ID:-$GITHUB_RUN_ID}
13
+ run_attempt=${SELECTIVE_RUN_ATTEMPT:-$GITHUB_RUN_ATTEMPT}
14
14
  commit_message=$(git log --format=%s -n 1 $sha)
15
15
  else
16
16
  platform=$SELECTIVE_PLATFORM
@@ -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}")
@@ -153,6 +152,31 @@ module Selective
153
152
  end
154
153
  end
155
154
 
155
+ def wait_for_connectivity
156
+ @connectivity = false
157
+
158
+ Thread.new do
159
+ sleep(30)
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
+
156
180
  def handle_termination_signals(pid)
157
181
  ["INT", "TERM"].each do |signal|
158
182
  Signal.trap(signal) do
@@ -175,7 +199,7 @@ module Selective
175
199
 
176
200
  sleep(1)
177
201
  end
178
- rescue NamedPipe::PipeClosedError
202
+ rescue NamedPipe::PipeClosedError, IOError
179
203
  # If the pipe is close, move straight to killing
180
204
  # it forcefully.
181
205
  end
@@ -272,6 +296,13 @@ module Selective
272
296
  @debug
273
297
  end
274
298
 
299
+ def safe_filename(filename)
300
+ filename
301
+ .gsub(/[\/\\:*?"<>|\n\r]+/, '_')
302
+ .gsub(/^\.+|\.+$/, '')
303
+ .strip[0, 255]
304
+ end
305
+
275
306
  def with_error_handling(include_header: true)
276
307
  yield
277
308
  rescue => e
@@ -3,7 +3,7 @@
3
3
  module Selective
4
4
  module Ruby
5
5
  module Core
6
- VERSION = "0.1.3"
6
+ VERSION = "0.1.5"
7
7
  end
8
8
  end
9
9
  end
@@ -4,6 +4,7 @@ require "zeitwerk"
4
4
 
5
5
  loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
6
6
  loader.ignore("#{__dir__}/selective-ruby-core.rb")
7
+ loader.ignore("#{__dir__}/selective/ruby/core/version.rb")
7
8
  loader.setup
8
9
 
9
10
  module Selective
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.3
4
+ version: 0.1.5
5
5
  platform: x86_64-linux
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-11-21 00:00:00.000000000 Z
12
+ date: 2023-12-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zeitwerk