kettle-jem 7.1.28 → 7.1.30
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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +220 -1
- data/README.md +2 -114
- data/lib/kettle/jem/maintenance_changelog.rb +1 -1
- data/lib/kettle/jem/relative_paths.rb +61 -0
- data/lib/kettle/jem/tasks/install_task.rb +9 -5
- data/lib/kettle/jem/tasks/prepare_task.rb +29 -10
- data/lib/kettle/jem/tasks/template_task.rb +18 -3
- data/lib/kettle/jem/templates/.devcontainer/devcontainer.json.example +1 -1
- data/lib/kettle/jem/templates/.git-hooks/prepare-commit-msg.example +3 -4
- data/lib/kettle/jem/templates/.github/workflows/coverage.yml.example +24 -2
- data/lib/kettle/jem/templates/.github/workflows/current.yml.example +13 -14
- data/lib/kettle/jem/templates/.github/workflows/dep-heads.yml.example +8 -5
- data/lib/kettle/jem/templates/.github/workflows/framework-ci.yml.example +4 -1
- data/lib/kettle/jem/templates/.github/workflows/heads.yml.example +16 -66
- data/lib/kettle/jem/templates/.github/workflows/jruby-10.0.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.1.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.2.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.3.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.4.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/jruby.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/license-eye.yml.example +22 -1
- data/lib/kettle/jem/templates/.github/workflows/locked_deps.yml.example +2 -1
- data/lib/kettle/jem/templates/.github/workflows/opencollective.yml.example +1 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.3.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.4.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.5.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.6.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.7.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.0.yml.example +9 -3
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.1.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.2.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.3.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.4.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/style.yml.example +5 -2
- data/lib/kettle/jem/templates/.github/workflows/templating.yml.example +18 -2
- data/lib/kettle/jem/templates/.github/workflows/truffle.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-22.3.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.1.yml.example +12 -2
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-24.2.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-25.0.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-33.0.yml.example +16 -3
- data/lib/kettle/jem/templates/.github/workflows/unlocked_deps.yml.example +6 -2
- data/lib/kettle/jem/templates/.structuredmerge/kettle-jem.yml.example +19 -0
- data/lib/kettle/jem/templates/Appraisal.root.gemfile.example +2 -1
- data/lib/kettle/jem/templates/Appraisals.example +4 -1
- data/lib/kettle/jem/templates/CHANGELOG.transfer.md +6 -0
- data/lib/kettle/jem/templates/Gemfile.example +12 -3
- data/lib/kettle/jem/templates/README.md.example +5 -5
- data/lib/kettle/jem/templates/Rakefile.example +2 -0
- data/lib/kettle/jem/templates/bin/turbo_tests2.example +14 -0
- data/lib/kettle/jem/templates/gem.gemspec.example +6 -6
- data/lib/kettle/jem/templates/gemfiles/modular/coverage.gemfile.example +1 -1
- data/lib/kettle/jem/templates/gemfiles/modular/coverage_local.gemfile.example +10 -12
- data/lib/kettle/jem/templates/gemfiles/modular/documentation.gemfile.example +5 -5
- data/lib/kettle/jem/templates/gemfiles/modular/ostruct/r4/v0.6.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/style.gemfile.example +15 -8
- data/lib/kettle/jem/templates/gemfiles/modular/style_local.gemfile.example +7 -1
- data/lib/kettle/jem/templates/gemfiles/modular/templating.gemfile.example +3 -2
- data/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example +18 -19
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r4/libs.gemfile.example +1 -0
- data/lib/kettle/jem/templates/mise.toml.example +1 -1
- data/lib/kettle/jem/templates/mise.toml.no-osc.example +1 -1
- data/lib/kettle/jem/templates/readme/partials/configuration.md.example +4 -3
- data/lib/kettle/jem/templates/shim/Gemfile.example +9 -3
- data/lib/kettle/jem/templates/shim/gem.gemspec.example +3 -3
- data/lib/kettle/jem/version.rb +1 -1
- data/lib/kettle/jem.rb +1214 -723
- data.tar.gz.sig +0 -0
- metadata +28 -67
- metadata.gz.sig +0 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.0.yml.example +0 -92
- data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_23_0.gemfile.example +0 -6
|
@@ -18,7 +18,7 @@ module Kettle
|
|
|
18
18
|
recipe_reports: []
|
|
19
19
|
}
|
|
20
20
|
else
|
|
21
|
-
Kettle::Jem.apply_project(project_root, env: env, run_options: effective_run_options)
|
|
21
|
+
Kettle::Jem.apply_project(project_root, env: env, run_options: effective_run_options.merge(defer_drift_check: true))
|
|
22
22
|
end
|
|
23
23
|
setup_env = Kettle::Jem::Tasks::InstallTask.setup_command_env(project_root, env)
|
|
24
24
|
hook_step = Kettle::Jem::Tasks::InstallTask.hook_templates_step(project_root, effective_run_options)
|
|
@@ -33,7 +33,22 @@ module Kettle
|
|
|
33
33
|
command_runner: command_runner,
|
|
34
34
|
event_phase: "template"
|
|
35
35
|
)
|
|
36
|
-
|
|
36
|
+
orchestration_changed_files = template_steps.flat_map do |step|
|
|
37
|
+
Array(step[:changed_files] || step["changed_files"])
|
|
38
|
+
end
|
|
39
|
+
changed_files = (Array(report[:changed_files]) + orchestration_changed_files).map(&:to_s).uniq.sort
|
|
40
|
+
final_report = report.merge(
|
|
41
|
+
mode: "template",
|
|
42
|
+
template_steps: template_steps,
|
|
43
|
+
changed_files: changed_files
|
|
44
|
+
)
|
|
45
|
+
if report.key?(:duplicate_drift)
|
|
46
|
+
final_report = Kettle::Jem.finalize_duplicate_drift(
|
|
47
|
+
project_root: project_root,
|
|
48
|
+
report: final_report,
|
|
49
|
+
run_options: effective_run_options
|
|
50
|
+
)
|
|
51
|
+
end
|
|
37
52
|
Kettle::Jem.emit_summary_event(Kettle::Jem.event_stream_from_options(effective_run_options), final_report)
|
|
38
53
|
final_report
|
|
39
54
|
end
|
|
@@ -90,7 +105,7 @@ module Kettle
|
|
|
90
105
|
return standalone_limit unless wave_jobs
|
|
91
106
|
|
|
92
107
|
available_per_member = (cpu_count - wave_jobs) / wave_jobs
|
|
93
|
-
|
|
108
|
+
available_per_member.clamp(1, standalone_limit)
|
|
94
109
|
end
|
|
95
110
|
|
|
96
111
|
def family_wave_jobs(env)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// Use 'postCreateCommand' to run commands after the container is created.
|
|
15
15
|
// First setup tree-sitter (auto-detects sudo requirement), then run bundle as the regular user
|
|
16
16
|
// Use ${containerWorkspaceFolder} to get the actual workspace path in the container
|
|
17
|
-
"postCreateCommand": "bash ${containerWorkspaceFolder}/.devcontainer/scripts/setup-tree-sitter.sh --workspace=${containerWorkspaceFolder} && bundle update --bundler",
|
|
17
|
+
"postCreateCommand": "bash ${containerWorkspaceFolder}/.devcontainer/scripts/setup-tree-sitter.sh --workspace=${containerWorkspaceFolder} && bundle update --bundler=$(bundle exec ruby -e 'print Gem.loaded_specs.fetch(\"bundler\").version')",
|
|
18
18
|
// Configure tool-specific properties.
|
|
19
19
|
"customizations": {
|
|
20
20
|
"jetbrains": {
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# Fail on error and unset variables
|
|
4
4
|
set -eu
|
|
5
5
|
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
exec "kettle-commit-msg" "$@"
|
|
6
|
+
# Resolve the installed gem executable through RubyGems, not a repository-local
|
|
7
|
+
# Bundler binstub that may select a temporarily inconsistent project lockfile.
|
|
8
|
+
exec env RUBYOPT= ruby -e 'require "rubygems"; load Gem.bin_path("kettle-dev", "kettle-commit-msg")' "$@"
|
|
@@ -6,6 +6,8 @@ permissions:
|
|
|
6
6
|
id-token: write
|
|
7
7
|
|
|
8
8
|
env:
|
|
9
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
10
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 900
|
|
9
11
|
K_SOUP_COV_MIN_BRANCH: 100
|
|
10
12
|
K_SOUP_COV_MIN_LINE: 100
|
|
11
13
|
K_SOUP_COV_MIN_HARD: true
|
|
@@ -38,6 +40,7 @@ jobs:
|
|
|
38
40
|
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
|
|
39
41
|
name: Code Coverage on ${{ matrix.ruby }}@current
|
|
40
42
|
runs-on: ubuntu-latest
|
|
43
|
+
timeout-minutes: 30
|
|
41
44
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
42
45
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
43
46
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -59,7 +62,7 @@ jobs:
|
|
|
59
62
|
persist-credentials: false
|
|
60
63
|
|
|
61
64
|
- name: Setup Ruby & RubyGems
|
|
62
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
65
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
63
66
|
with:
|
|
64
67
|
ruby-version: "${{ matrix.ruby }}"
|
|
65
68
|
rubygems: "${{ matrix.rubygems }}"
|
|
@@ -79,7 +82,10 @@ jobs:
|
|
|
79
82
|
id: bundleAppraisalAttempt2
|
|
80
83
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
81
84
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' }}
|
|
82
|
-
run:
|
|
85
|
+
run: |
|
|
86
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
87
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
88
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
83
89
|
|
|
84
90
|
- name: Restore RSpec status log
|
|
85
91
|
if: "${{!env.ACT}}"
|
|
@@ -99,4 +105,20 @@ jobs:
|
|
|
99
105
|
test -s coverage/lcov.info
|
|
100
106
|
test -s coverage/coverage.xml
|
|
101
107
|
|
|
108
|
+
# Preserve per-worker SimpleCov resultsets when the coverage gate fails.
|
|
109
|
+
# turbo_tests2 workers write coverage/turbo_tests/<TEST_ENV_NUMBER>/.resultset.json;
|
|
110
|
+
# if a worker's recorded hits are lost before collation the failure is otherwise
|
|
111
|
+
# invisible (examples all pass; only the merged total drops).
|
|
112
|
+
- name: Upload per-worker coverage resultsets on coverage failure
|
|
113
|
+
if: ${{ failure() }}
|
|
114
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
115
|
+
with:
|
|
116
|
+
name: coverage-resultsets-${{ matrix.ruby }}-${{ github.run_id }}-${{ github.run_attempt }}
|
|
117
|
+
path: |
|
|
118
|
+
coverage/turbo_tests/**/.resultset.json
|
|
119
|
+
coverage/.resultset.json
|
|
120
|
+
coverage/resultset.json
|
|
121
|
+
if-no-files-found: warn
|
|
122
|
+
retention-days: 14
|
|
123
|
+
|
|
102
124
|
{KJ|GITHUB_ACTIONS:COVERAGE_UPLOAD_STEPS}
|
|
@@ -29,19 +29,16 @@ concurrency:
|
|
|
29
29
|
jobs:
|
|
30
30
|
test:
|
|
31
31
|
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
|
|
32
|
-
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
33
|
-
runs-on:
|
|
32
|
+
name: Specs ${{ matrix.os }} ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
33
|
+
runs-on: ${{ matrix.os }}
|
|
34
|
+
timeout-minutes: 30
|
|
34
35
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
35
36
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
36
37
|
strategy:
|
|
37
38
|
matrix:
|
|
38
39
|
include:
|
|
39
40
|
# Ruby 4.0
|
|
40
|
-
|
|
41
|
-
appraisal: "current"
|
|
42
|
-
exec_cmd: "{KJ|CI:EXEC_CMD}"
|
|
43
|
-
rubygems: latest
|
|
44
|
-
bundler: latest
|
|
41
|
+
{KJ|CI:OS_MATRIX_ENTRIES}
|
|
45
42
|
|
|
46
43
|
steps:
|
|
47
44
|
- name: Checkout
|
|
@@ -50,7 +47,7 @@ jobs:
|
|
|
50
47
|
persist-credentials: false
|
|
51
48
|
|
|
52
49
|
- name: Setup Ruby & RubyGems
|
|
53
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
50
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 bundle validation and compatibility installation
|
|
54
51
|
with:
|
|
55
52
|
ruby-version: ${{ matrix.ruby }}
|
|
56
53
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -70,17 +67,19 @@ jobs:
|
|
|
70
67
|
id: bundleAppraisalAttempt2
|
|
71
68
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
72
69
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' }}
|
|
73
|
-
run:
|
|
70
|
+
run: |
|
|
71
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
72
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
73
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
74
74
|
|
|
75
75
|
- name: Restore RSpec status log
|
|
76
76
|
if: "${{!env.ACT}}"
|
|
77
77
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
78
78
|
with:
|
|
79
79
|
path: .rspec_status
|
|
80
|
-
key: rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
|
|
80
|
+
key: rspec-status-current-${{matrix.os}}-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
|
|
81
81
|
restore-keys: |
|
|
82
|
-
rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
|
|
83
|
-
rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-
|
|
82
|
+
rspec-status-current-${{matrix.os}}-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
|
|
83
|
+
rspec-status-current-${{matrix.os}}-${{matrix.ruby}}-${{matrix.appraisal}}-
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
|
85
|
+
{KJ|CI:OS_TEST_STEPS}
|
|
@@ -5,6 +5,8 @@ permissions:
|
|
|
5
5
|
contents: read
|
|
6
6
|
|
|
7
7
|
env:
|
|
8
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
9
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 900
|
|
8
10
|
K_SOUP_COV_DO: false
|
|
9
11
|
|
|
10
12
|
on:
|
|
@@ -31,6 +33,7 @@ jobs:
|
|
|
31
33
|
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
|
|
32
34
|
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
|
|
33
35
|
runs-on: ubuntu-latest
|
|
36
|
+
timeout-minutes: 30
|
|
34
37
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
35
38
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
36
39
|
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
|
|
@@ -61,7 +64,7 @@ jobs:
|
|
|
61
64
|
|
|
62
65
|
- name: Setup Ruby & RubyGems
|
|
63
66
|
if: ${{ !env.ACT }}
|
|
64
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
67
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
65
68
|
with:
|
|
66
69
|
ruby-version: ${{ matrix.ruby }}
|
|
67
70
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -102,7 +105,7 @@ jobs:
|
|
|
102
105
|
run: bundle exec ${{ matrix.exec_cmd }}
|
|
103
106
|
|
|
104
107
|
truffleruby:
|
|
105
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'truffleruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
108
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'truffleruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
106
109
|
name: Specs truffleruby@dep-heads
|
|
107
110
|
runs-on: ubuntu-latest
|
|
108
111
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
@@ -134,7 +137,7 @@ jobs:
|
|
|
134
137
|
|
|
135
138
|
- name: Setup Ruby & RubyGems
|
|
136
139
|
if: ${{ !env.ACT }}
|
|
137
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
140
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
138
141
|
with:
|
|
139
142
|
ruby-version: ${{ matrix.ruby }}
|
|
140
143
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -175,7 +178,7 @@ jobs:
|
|
|
175
178
|
run: bundle exec ${{ matrix.exec_cmd }}
|
|
176
179
|
|
|
177
180
|
jruby:
|
|
178
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
181
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
179
182
|
name: Specs jruby@dep-heads
|
|
180
183
|
runs-on: ubuntu-latest
|
|
181
184
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
@@ -208,7 +211,7 @@ jobs:
|
|
|
208
211
|
|
|
209
212
|
- name: Setup Ruby & RubyGems
|
|
210
213
|
if: ${{ !env.ACT }}
|
|
211
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
214
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
212
215
|
with:
|
|
213
216
|
ruby-version: ${{ matrix.ruby }}
|
|
214
217
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -7,6 +7,8 @@ permissions:
|
|
|
7
7
|
contents: read
|
|
8
8
|
|
|
9
9
|
env:
|
|
10
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
11
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 900
|
|
10
12
|
K_SOUP_COV_DO: false
|
|
11
13
|
|
|
12
14
|
on:
|
|
@@ -33,6 +35,7 @@ jobs:
|
|
|
33
35
|
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
|
|
34
36
|
name: Specs ${{ matrix.ruby }}@${{ matrix.framework_version }}
|
|
35
37
|
runs-on: ubuntu-latest
|
|
38
|
+
timeout-minutes: 30
|
|
36
39
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
37
40
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
38
41
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -58,7 +61,7 @@ jobs:
|
|
|
58
61
|
persist-credentials: false
|
|
59
62
|
|
|
60
63
|
- name: Setup Ruby & RubyGems
|
|
61
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
64
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
62
65
|
with:
|
|
63
66
|
ruby-version: "${{ matrix.ruby }}"
|
|
64
67
|
rubygems: "${{ matrix.rubygems }}"
|
|
@@ -4,6 +4,8 @@ permissions:
|
|
|
4
4
|
contents: read
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
8
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 900
|
|
7
9
|
K_SOUP_COV_DO: false
|
|
8
10
|
|
|
9
11
|
on:
|
|
@@ -30,6 +32,7 @@ jobs:
|
|
|
30
32
|
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
|
|
31
33
|
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
|
|
32
34
|
runs-on: ubuntu-latest
|
|
35
|
+
timeout-minutes: 30
|
|
33
36
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
34
37
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
35
38
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -54,7 +57,7 @@ jobs:
|
|
|
54
57
|
|
|
55
58
|
- name: Setup Ruby & RubyGems
|
|
56
59
|
if: ${{ !env.ACT }}
|
|
57
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
60
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
58
61
|
with:
|
|
59
62
|
ruby-version: ${{ matrix.ruby }}
|
|
60
63
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -73,69 +76,12 @@ jobs:
|
|
|
73
76
|
# Effectively an automatic retry of the previous step.
|
|
74
77
|
- name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
|
|
75
78
|
id: bundleAppraisalAttempt2
|
|
76
|
-
# If bundleAppraisalAttempt1 failed,
|
|
79
|
+
# If bundleAppraisalAttempt1 failed, clean lock/vendor and retry; Otherwise skip.
|
|
77
80
|
if: ${{ !env.ACT && steps.bundleAppraisalAttempt1.outcome == 'failure' }}
|
|
78
|
-
run:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
83
|
-
with:
|
|
84
|
-
path: .rspec_status
|
|
85
|
-
key: rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
|
|
86
|
-
restore-keys: |
|
|
87
|
-
rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
|
|
88
|
-
rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-
|
|
89
|
-
|
|
90
|
-
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
|
|
91
|
-
if: ${{ !env.ACT }}
|
|
92
|
-
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
|
93
|
-
|
|
94
|
-
truffleruby:
|
|
95
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'truffleruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
96
|
-
name: Specs truffleruby-head@head
|
|
97
|
-
runs-on: ubuntu-latest
|
|
98
|
-
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
99
|
-
env:
|
|
100
|
-
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
101
|
-
strategy:
|
|
102
|
-
fail-fast: true
|
|
103
|
-
matrix:
|
|
104
|
-
include:
|
|
105
|
-
- ruby: "truffleruby-head"
|
|
106
|
-
appraisal: "head"
|
|
107
|
-
exec_cmd: "{KJ|CI:EXEC_CMD}"
|
|
108
|
-
rubygems: default
|
|
109
|
-
bundler: default
|
|
110
|
-
|
|
111
|
-
steps:
|
|
112
|
-
- name: Checkout
|
|
113
|
-
if: ${{ !env.ACT }}
|
|
114
|
-
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
115
|
-
with:
|
|
116
|
-
persist-credentials: false
|
|
117
|
-
|
|
118
|
-
- name: Setup Ruby & RubyGems
|
|
119
|
-
if: ${{ !env.ACT }}
|
|
120
|
-
uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
|
|
121
|
-
with:
|
|
122
|
-
ruby-version: ${{ matrix.ruby }}
|
|
123
|
-
rubygems: ${{ matrix.rubygems }}
|
|
124
|
-
bundler: ${{ matrix.bundler }}
|
|
125
|
-
bundler-cache: true
|
|
126
|
-
manual-compatibility-bundle: true
|
|
127
|
-
gem-install-retries: 7
|
|
128
|
-
|
|
129
|
-
- name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
|
|
130
|
-
id: bundleAppraisalAttempt1
|
|
131
|
-
if: ${{ !env.ACT }}
|
|
132
|
-
run: bundle exec appraisal ${{ matrix.appraisal }} install
|
|
133
|
-
continue-on-error: true
|
|
134
|
-
|
|
135
|
-
- name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
|
|
136
|
-
id: bundleAppraisalAttempt2
|
|
137
|
-
if: ${{ !env.ACT && steps.bundleAppraisalAttempt1.outcome == 'failure' }}
|
|
138
|
-
run: bundle exec appraisal ${{ matrix.appraisal }} install
|
|
81
|
+
run: |
|
|
82
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
83
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
84
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
139
85
|
|
|
140
86
|
- name: Restore RSpec status log
|
|
141
87
|
if: "${{!env.ACT}}"
|
|
@@ -152,7 +98,7 @@ jobs:
|
|
|
152
98
|
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
|
153
99
|
|
|
154
100
|
jruby:
|
|
155
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
101
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
156
102
|
name: Specs jruby-head@head
|
|
157
103
|
runs-on: ubuntu-latest
|
|
158
104
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
@@ -177,7 +123,7 @@ jobs:
|
|
|
177
123
|
|
|
178
124
|
- name: Setup Ruby & RubyGems
|
|
179
125
|
if: ${{ !env.ACT }}
|
|
180
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
126
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
181
127
|
with:
|
|
182
128
|
ruby-version: ${{ matrix.ruby }}
|
|
183
129
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -194,8 +140,12 @@ jobs:
|
|
|
194
140
|
|
|
195
141
|
- name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
|
|
196
142
|
id: bundleAppraisalAttempt2
|
|
143
|
+
# If bundleAppraisalAttempt1 failed, clean lock/vendor and retry; Otherwise skip.
|
|
197
144
|
if: ${{ !env.ACT && steps.bundleAppraisalAttempt1.outcome == 'failure' }}
|
|
198
|
-
run:
|
|
145
|
+
run: |
|
|
146
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
147
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
148
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
199
149
|
|
|
200
150
|
- name: Restore RSpec status log
|
|
201
151
|
if: "${{!env.ACT}}"
|
|
@@ -4,6 +4,15 @@ permissions:
|
|
|
4
4
|
contents: read
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
8
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 1500
|
|
9
|
+
# Each turbo_tests2 worker is a full JVM subprocess; without a heap cap
|
|
10
|
+
# JRuby defaults to 1/4 of runner RAM per worker, and concurrent workers
|
|
11
|
+
# get OOM-killed silently mid-run (watchdog then reports total silence).
|
|
12
|
+
JRUBY_OPTS: "-J-Xmx1280m"
|
|
13
|
+
# Fewer, smaller JVM workers: bound workers x per-worker heap under the
|
|
14
|
+
# runner RAM so the kernel OOM killer never silences workers mid-run.
|
|
15
|
+
TURBO_TESTS2_MAX_PROCESSES: 2
|
|
7
16
|
K_SOUP_COV_DO: false
|
|
8
17
|
|
|
9
18
|
on:
|
|
@@ -27,9 +36,10 @@ concurrency:
|
|
|
27
36
|
|
|
28
37
|
jobs:
|
|
29
38
|
test:
|
|
30
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
39
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
31
40
|
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
32
41
|
runs-on: ubuntu-latest
|
|
42
|
+
timeout-minutes: 30
|
|
33
43
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
34
44
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
35
45
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -53,7 +63,7 @@ jobs:
|
|
|
53
63
|
|
|
54
64
|
- name: Setup Ruby & RubyGems
|
|
55
65
|
if: ${{ !env.ACT }}
|
|
56
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
66
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
57
67
|
with:
|
|
58
68
|
ruby-version: ${{ matrix.ruby }}
|
|
59
69
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -74,7 +84,10 @@ jobs:
|
|
|
74
84
|
id: bundleAppraisalAttempt2
|
|
75
85
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
76
86
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
|
|
77
|
-
run:
|
|
87
|
+
run: |
|
|
88
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
89
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
90
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
78
91
|
|
|
79
92
|
- name: Restore RSpec status log
|
|
80
93
|
if: "${{!env.ACT}}"
|
|
@@ -4,6 +4,15 @@ permissions:
|
|
|
4
4
|
contents: read
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
8
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 1500
|
|
9
|
+
# Each turbo_tests2 worker is a full JVM subprocess; without a heap cap
|
|
10
|
+
# JRuby defaults to 1/4 of runner RAM per worker, and concurrent workers
|
|
11
|
+
# get OOM-killed silently mid-run (watchdog then reports total silence).
|
|
12
|
+
JRUBY_OPTS: "-J-Xmx1280m"
|
|
13
|
+
# Fewer, smaller JVM workers: bound workers x per-worker heap under the
|
|
14
|
+
# runner RAM so the kernel OOM killer never silences workers mid-run.
|
|
15
|
+
TURBO_TESTS2_MAX_PROCESSES: 2
|
|
7
16
|
K_SOUP_COV_DO: false
|
|
8
17
|
|
|
9
18
|
on:
|
|
@@ -27,9 +36,10 @@ concurrency:
|
|
|
27
36
|
|
|
28
37
|
jobs:
|
|
29
38
|
test:
|
|
30
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
39
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
31
40
|
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
32
41
|
runs-on: ubuntu-22.04
|
|
42
|
+
timeout-minutes: 30
|
|
33
43
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
34
44
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
35
45
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -52,7 +62,7 @@ jobs:
|
|
|
52
62
|
|
|
53
63
|
- name: Setup Ruby & RubyGems
|
|
54
64
|
if: ${{ !env.ACT }}
|
|
55
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
65
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
56
66
|
with:
|
|
57
67
|
ruby-version: ${{ matrix.ruby }}
|
|
58
68
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -73,7 +83,10 @@ jobs:
|
|
|
73
83
|
id: bundleAppraisalAttempt2
|
|
74
84
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
75
85
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
|
|
76
|
-
run:
|
|
86
|
+
run: |
|
|
87
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
88
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
89
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
77
90
|
|
|
78
91
|
- name: Restore RSpec status log
|
|
79
92
|
if: "${{!env.ACT}}"
|
|
@@ -4,6 +4,15 @@ permissions:
|
|
|
4
4
|
contents: read
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
8
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 1500
|
|
9
|
+
# Each turbo_tests2 worker is a full JVM subprocess; without a heap cap
|
|
10
|
+
# JRuby defaults to 1/4 of runner RAM per worker, and concurrent workers
|
|
11
|
+
# get OOM-killed silently mid-run (watchdog then reports total silence).
|
|
12
|
+
JRUBY_OPTS: "-J-Xmx1280m"
|
|
13
|
+
# Fewer, smaller JVM workers: bound workers x per-worker heap under the
|
|
14
|
+
# runner RAM so the kernel OOM killer never silences workers mid-run.
|
|
15
|
+
TURBO_TESTS2_MAX_PROCESSES: 2
|
|
7
16
|
K_SOUP_COV_DO: false
|
|
8
17
|
|
|
9
18
|
on:
|
|
@@ -27,9 +36,10 @@ concurrency:
|
|
|
27
36
|
|
|
28
37
|
jobs:
|
|
29
38
|
test:
|
|
30
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
39
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
31
40
|
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
32
41
|
runs-on: ubuntu-22.04
|
|
42
|
+
timeout-minutes: 30
|
|
33
43
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
34
44
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
35
45
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -52,7 +62,7 @@ jobs:
|
|
|
52
62
|
|
|
53
63
|
- name: Setup Ruby & RubyGems
|
|
54
64
|
if: ${{ !env.ACT }}
|
|
55
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
65
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
56
66
|
with:
|
|
57
67
|
ruby-version: ${{ matrix.ruby }}
|
|
58
68
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -78,7 +88,10 @@ jobs:
|
|
|
78
88
|
id: bundleAppraisalAttempt2
|
|
79
89
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
80
90
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
|
|
81
|
-
run:
|
|
91
|
+
run: |
|
|
92
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
93
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
94
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
82
95
|
|
|
83
96
|
- name: Restore RSpec status log
|
|
84
97
|
if: "${{!env.ACT}}"
|
|
@@ -4,6 +4,15 @@ permissions:
|
|
|
4
4
|
contents: read
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
8
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 1500
|
|
9
|
+
# Each turbo_tests2 worker is a full JVM subprocess; without a heap cap
|
|
10
|
+
# JRuby defaults to 1/4 of runner RAM per worker, and concurrent workers
|
|
11
|
+
# get OOM-killed silently mid-run (watchdog then reports total silence).
|
|
12
|
+
JRUBY_OPTS: "-J-Xmx1280m"
|
|
13
|
+
# Fewer, smaller JVM workers: bound workers x per-worker heap under the
|
|
14
|
+
# runner RAM so the kernel OOM killer never silences workers mid-run.
|
|
15
|
+
TURBO_TESTS2_MAX_PROCESSES: 2
|
|
7
16
|
K_SOUP_COV_DO: false
|
|
8
17
|
|
|
9
18
|
on:
|
|
@@ -27,9 +36,10 @@ concurrency:
|
|
|
27
36
|
|
|
28
37
|
jobs:
|
|
29
38
|
test:
|
|
30
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
39
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
31
40
|
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
32
41
|
runs-on: ubuntu-22.04
|
|
42
|
+
timeout-minutes: 30
|
|
33
43
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
34
44
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
35
45
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -52,7 +62,7 @@ jobs:
|
|
|
52
62
|
|
|
53
63
|
- name: Setup Ruby & RubyGems
|
|
54
64
|
if: ${{ !env.ACT }}
|
|
55
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
65
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
56
66
|
with:
|
|
57
67
|
ruby-version: ${{ matrix.ruby }}
|
|
58
68
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -78,7 +88,10 @@ jobs:
|
|
|
78
88
|
id: bundleAppraisalAttempt2
|
|
79
89
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
80
90
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
|
|
81
|
-
run:
|
|
91
|
+
run: |
|
|
92
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
93
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
94
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
82
95
|
|
|
83
96
|
- name: Restore RSpec status log
|
|
84
97
|
if: "${{!env.ACT}}"
|
|
@@ -4,6 +4,15 @@ permissions:
|
|
|
4
4
|
contents: read
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
+
# Kill stalled test workers instead of hanging until the CI job timeout.
|
|
8
|
+
TURBO_TESTS2_WATCHDOG_SECONDS: 1500
|
|
9
|
+
# Each turbo_tests2 worker is a full JVM subprocess; without a heap cap
|
|
10
|
+
# JRuby defaults to 1/4 of runner RAM per worker, and concurrent workers
|
|
11
|
+
# get OOM-killed silently mid-run (watchdog then reports total silence).
|
|
12
|
+
JRUBY_OPTS: "-J-Xmx1280m"
|
|
13
|
+
# Fewer, smaller JVM workers: bound workers x per-worker heap under the
|
|
14
|
+
# runner RAM so the kernel OOM killer never silences workers mid-run.
|
|
15
|
+
TURBO_TESTS2_MAX_PROCESSES: 2
|
|
7
16
|
K_SOUP_COV_DO: false
|
|
8
17
|
|
|
9
18
|
on:
|
|
@@ -27,9 +36,10 @@ concurrency:
|
|
|
27
36
|
|
|
28
37
|
jobs:
|
|
29
38
|
test:
|
|
30
|
-
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
|
|
39
|
+
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release') || startsWith(github.event.pull_request.title, 'Release '))"
|
|
31
40
|
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
32
41
|
runs-on: ubuntu-22.04
|
|
42
|
+
timeout-minutes: 30
|
|
33
43
|
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
|
34
44
|
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
|
35
45
|
BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
|
|
@@ -52,7 +62,7 @@ jobs:
|
|
|
52
62
|
|
|
53
63
|
- name: Setup Ruby & RubyGems
|
|
54
64
|
if: ${{ !env.ACT }}
|
|
55
|
-
uses: appraisal-rb/setup-ruby-flash@
|
|
65
|
+
uses: appraisal-rb/setup-ruby-flash@6f8ad36ba7488db591541483afb5464d01e8861b # v2.14 compatibility bundle installation
|
|
56
66
|
with:
|
|
57
67
|
ruby-version: ${{ matrix.ruby }}
|
|
58
68
|
rubygems: ${{ matrix.rubygems }}
|
|
@@ -78,7 +88,10 @@ jobs:
|
|
|
78
88
|
id: bundleAppraisalAttempt2
|
|
79
89
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
80
90
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
|
|
81
|
-
run:
|
|
91
|
+
run: |
|
|
92
|
+
rm -f gemfiles/${{ matrix.appraisal }}.gemfile.lock
|
|
93
|
+
rm -rf vendor/bundle "$HOME/.bundle/cache"
|
|
94
|
+
bundle exec appraisal ${{ matrix.appraisal }} install
|
|
82
95
|
|
|
83
96
|
- name: Restore RSpec status log
|
|
84
97
|
if: "${{!env.ACT}}"
|