kettle-jem 7.0.0 → 7.1.3

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.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +1505 -0
  4. data/LICENSE.md +13 -0
  5. data/README.md +794 -0
  6. data/exe/kettle-jem +20 -0
  7. data/lib/kettle/jem/cli.rb +334 -0
  8. data/lib/kettle/jem/license_txt_migrator.rb +33 -0
  9. data/lib/kettle/jem/rakelib/install.rake +10 -0
  10. data/lib/kettle/jem/rakelib/prepare.rake +10 -0
  11. data/lib/kettle/jem/rakelib/selftest.rake +10 -0
  12. data/lib/kettle/jem/rakelib/template.rake +10 -0
  13. data/lib/kettle/jem/tasks/install_task.rb +2178 -0
  14. data/lib/kettle/jem/tasks/prepare_task.rb +274 -0
  15. data/lib/kettle/jem/tasks/self_test_task.rb +256 -0
  16. data/lib/kettle/jem/tasks/template_task.rb +124 -0
  17. data/lib/kettle/jem/tasks.rb +6 -0
  18. data/lib/kettle/jem/templates/.aiignore.example +19 -0
  19. data/lib/kettle/jem/templates/.config/mise/env.sh +26 -0
  20. data/lib/kettle/jem/templates/.devcontainer/apt-install/devcontainer-feature.json.example +9 -0
  21. data/lib/kettle/jem/templates/.devcontainer/apt-install/install.sh.example +19 -0
  22. data/lib/kettle/jem/templates/.devcontainer/devcontainer.json.example +27 -0
  23. data/lib/kettle/jem/templates/.devcontainer/scripts/setup-tree-sitter.sh.example +210 -0
  24. data/lib/kettle/jem/templates/.env.local.example +67 -0
  25. data/lib/kettle/jem/templates/.envrc.example +4 -0
  26. data/lib/kettle/jem/templates/.envrc.no-osc.example +4 -0
  27. data/lib/kettle/jem/templates/.gemrc.example +1 -0
  28. data/lib/kettle/jem/templates/.git-hooks/commit-msg.example +60 -0
  29. data/lib/kettle/jem/templates/.git-hooks/commit-subjects-goalie.txt.example +8 -0
  30. data/lib/kettle/jem/templates/.git-hooks/footer-template.erb.txt.example +16 -0
  31. data/lib/kettle/jem/templates/.git-hooks/prepare-commit-msg.example +9 -0
  32. data/lib/kettle/jem/templates/.github/.codecov.yml.example +14 -0
  33. data/lib/kettle/jem/templates/.github/FUNDING.yml.example +10 -0
  34. data/lib/kettle/jem/templates/.github/FUNDING.yml.no-osc.example +10 -0
  35. data/lib/kettle/jem/templates/.github/copilot_instructions.md.example +1 -0
  36. data/lib/kettle/jem/templates/.github/dependabot.yml.example +13 -0
  37. data/lib/kettle/jem/templates/.github/workflows/auto-assign.yml.example +21 -0
  38. data/lib/kettle/jem/templates/.github/workflows/coverage.yml.example +102 -0
  39. data/lib/kettle/jem/templates/.github/workflows/current.yml.example +86 -0
  40. data/lib/kettle/jem/templates/.github/workflows/dep-heads.yml.example +249 -0
  41. data/lib/kettle/jem/templates/.github/workflows/dependency-review.yml.example +22 -0
  42. data/lib/kettle/jem/templates/.github/workflows/discord-notifier.yml.example +39 -0
  43. data/lib/kettle/jem/templates/.github/workflows/framework-ci.yml.example +81 -0
  44. data/lib/kettle/jem/templates/.github/workflows/heads.yml.example +212 -0
  45. data/lib/kettle/jem/templates/.github/workflows/jruby-10.0.yml.example +91 -0
  46. data/lib/kettle/jem/templates/.github/workflows/jruby-9.1.yml.example +90 -0
  47. data/lib/kettle/jem/templates/.github/workflows/jruby-9.2.yml.example +95 -0
  48. data/lib/kettle/jem/templates/.github/workflows/jruby-9.3.yml.example +95 -0
  49. data/lib/kettle/jem/templates/.github/workflows/jruby-9.4.yml.example +95 -0
  50. data/lib/kettle/jem/templates/.github/workflows/jruby.yml.example +91 -0
  51. data/lib/kettle/jem/templates/.github/workflows/license-eye.yml.example +43 -0
  52. data/lib/kettle/jem/templates/.github/workflows/locked_deps.yml.example +89 -0
  53. data/lib/kettle/jem/templates/.github/workflows/opencollective.yml.example +44 -0
  54. data/lib/kettle/jem/templates/.github/workflows/ruby-2.3.yml.example +80 -0
  55. data/lib/kettle/jem/templates/.github/workflows/ruby-2.4.yml.example +84 -0
  56. data/lib/kettle/jem/templates/.github/workflows/ruby-2.5.yml.example +84 -0
  57. data/lib/kettle/jem/templates/.github/workflows/ruby-2.6.yml.example +84 -0
  58. data/lib/kettle/jem/templates/.github/workflows/ruby-2.7.yml.example +84 -0
  59. data/lib/kettle/jem/templates/.github/workflows/ruby-3.0.yml.example +85 -0
  60. data/lib/kettle/jem/templates/.github/workflows/ruby-3.1.yml.example +83 -0
  61. data/lib/kettle/jem/templates/.github/workflows/ruby-3.2.yml.example +80 -0
  62. data/lib/kettle/jem/templates/.github/workflows/ruby-3.3.yml.example +80 -0
  63. data/lib/kettle/jem/templates/.github/workflows/ruby-3.4.yml.example +80 -0
  64. data/lib/kettle/jem/templates/.github/workflows/style.yml.example +78 -0
  65. data/lib/kettle/jem/templates/.github/workflows/templating.yml.example +86 -0
  66. data/lib/kettle/jem/templates/.github/workflows/truffle.yml.example +91 -0
  67. data/lib/kettle/jem/templates/.github/workflows/truffleruby-22.3.yml.example +92 -0
  68. data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.0.yml.example +92 -0
  69. data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.1.yml.example +78 -0
  70. data/lib/kettle/jem/templates/.github/workflows/truffleruby-24.2.yml.example +91 -0
  71. data/lib/kettle/jem/templates/.github/workflows/truffleruby-25.0.yml.example +96 -0
  72. data/lib/kettle/jem/templates/.github/workflows/truffleruby-33.0.yml.example +91 -0
  73. data/lib/kettle/jem/templates/.github/workflows/unlocked_deps.yml.example +93 -0
  74. data/lib/kettle/jem/templates/.gitignore.example +53 -0
  75. data/lib/kettle/jem/templates/.gitlab-ci.yml.example +134 -0
  76. data/lib/kettle/jem/templates/.idea/.gitignore.example +44 -0
  77. data/lib/kettle/jem/templates/.licenserc.yaml.example +8 -0
  78. data/lib/kettle/jem/templates/.opencollective.yml.example +3 -0
  79. data/lib/kettle/jem/templates/.qlty/qlty.toml.example +79 -0
  80. data/lib/kettle/jem/templates/.rspec.example +10 -0
  81. data/lib/kettle/jem/templates/.rubocop.example +1 -0
  82. data/lib/kettle/jem/templates/.rubocop.yml.example +47 -0
  83. data/lib/kettle/jem/templates/.rubocop_rspec.yml.example +55 -0
  84. data/lib/kettle/jem/templates/.simplecov.example +18 -0
  85. data/lib/kettle/jem/templates/.structuredmerge/git-drivers.toml.example +86 -0
  86. data/lib/kettle/jem/templates/.structuredmerge/kettle-jem.yml.example +519 -0
  87. data/lib/kettle/jem/templates/.yard-lint.yml.example +54 -0
  88. data/lib/kettle/jem/templates/.yardignore.example +13 -0
  89. data/lib/kettle/jem/templates/.yardopts.example +14 -0
  90. data/lib/kettle/jem/templates/AGENTS.md.example +283 -0
  91. data/lib/kettle/jem/templates/AGPL-3.0-only.md.example +235 -0
  92. data/lib/kettle/jem/templates/Appraisal.root.gemfile.example +26 -0
  93. data/lib/kettle/jem/templates/Appraisals.example +150 -0
  94. data/lib/kettle/jem/templates/Big-Time-Public-License.md.example +99 -0
  95. data/lib/kettle/jem/templates/CHANGELOG.md.example +33 -0
  96. data/lib/kettle/jem/templates/CHANGELOG.transfer.md +109 -0
  97. data/lib/kettle/jem/templates/CITATION.cff.example +20 -0
  98. data/lib/kettle/jem/templates/CODE_OF_CONDUCT.md.example +134 -0
  99. data/lib/kettle/jem/templates/CONTRIBUTING.md.example +292 -0
  100. data/lib/kettle/jem/templates/FUNDING.md.example +74 -0
  101. data/lib/kettle/jem/templates/FUNDING.md.no-osc.example +63 -0
  102. data/lib/kettle/jem/templates/Gemfile.example +52 -0
  103. data/lib/kettle/jem/templates/IRP.md.example +34 -0
  104. data/lib/kettle/jem/templates/LICENSE.md.example +3 -0
  105. data/lib/kettle/jem/templates/MIT.md.example +21 -0
  106. data/lib/kettle/jem/templates/PolyForm-Noncommercial-1.0.0.md.example +131 -0
  107. data/lib/kettle/jem/templates/PolyForm-Small-Business-1.0.0.md.example +121 -0
  108. data/lib/kettle/jem/templates/README.md.example +544 -0
  109. data/lib/kettle/jem/templates/REEK +0 -0
  110. data/lib/kettle/jem/templates/RUBOCOP.md.example +78 -0
  111. data/lib/kettle/jem/templates/Rakefile.example +163 -0
  112. data/lib/kettle/jem/templates/SECURITY.md.example +21 -0
  113. data/lib/kettle/jem/templates/bin/setup.example +36 -0
  114. data/lib/kettle/jem/templates/certs/pboling.pem.example +27 -0
  115. data/lib/kettle/jem/templates/gem.gemspec.example +161 -0
  116. data/lib/kettle/jem/templates/gemfiles/modular/benchmark/r4/v0.5.gemfile.example +2 -0
  117. data/lib/kettle/jem/templates/gemfiles/modular/benchmark/vHEAD.gemfile.example +2 -0
  118. data/lib/kettle/jem/templates/gemfiles/modular/cgi/r4/v0.5.gemfile.example +1 -0
  119. data/lib/kettle/jem/templates/gemfiles/modular/cgi/vHEAD.gemfile.example +1 -0
  120. data/lib/kettle/jem/templates/gemfiles/modular/changelog.gemfile.example +6 -0
  121. data/lib/kettle/jem/templates/gemfiles/modular/coverage.gemfile.example +14 -0
  122. data/lib/kettle/jem/templates/gemfiles/modular/coverage_local.gemfile.example +34 -0
  123. data/lib/kettle/jem/templates/gemfiles/modular/debug.gemfile.example +22 -0
  124. data/lib/kettle/jem/templates/gemfiles/modular/documentation.gemfile.example +24 -0
  125. data/lib/kettle/jem/templates/gemfiles/modular/documentation_local.gemfile.example +20 -0
  126. data/lib/kettle/jem/templates/gemfiles/modular/erb/r2/v3.0.gemfile.example +1 -0
  127. data/lib/kettle/jem/templates/gemfiles/modular/erb/r2.3/default.gemfile.example +6 -0
  128. data/lib/kettle/jem/templates/gemfiles/modular/erb/r2.6/v2.2.gemfile.example +3 -0
  129. data/lib/kettle/jem/templates/gemfiles/modular/erb/r3/v5.0.gemfile.example +1 -0
  130. data/lib/kettle/jem/templates/gemfiles/modular/erb/r3.1/v4.0.gemfile.example +2 -0
  131. data/lib/kettle/jem/templates/gemfiles/modular/erb/r4/v5.0.gemfile.example +1 -0
  132. data/lib/kettle/jem/templates/gemfiles/modular/erb/vHEAD.gemfile.example +2 -0
  133. data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_22_3.gemfile.example +6 -0
  134. data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_23_0.gemfile.example +6 -0
  135. data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_23_1.gemfile.example +6 -0
  136. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r2/v0.3.gemfile.example +2 -0
  137. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile.example +3 -0
  138. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r3/v0.3.gemfile.example +2 -0
  139. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r4/v0.3.gemfile.example +2 -0
  140. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/vHEAD.gemfile.example +2 -0
  141. data/lib/kettle/jem/templates/gemfiles/modular/optional.gemfile.example +16 -0
  142. data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.3/recording.gemfile.example +16 -0
  143. data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.4/recording.gemfile.example +18 -0
  144. data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.5/recording.gemfile.example +16 -0
  145. data/lib/kettle/jem/templates/gemfiles/modular/recording/r3/recording.gemfile.example +16 -0
  146. data/lib/kettle/jem/templates/gemfiles/modular/recording/r4/recording.gemfile.example +16 -0
  147. data/lib/kettle/jem/templates/gemfiles/modular/recording/vHEAD.gemfile.example +2 -0
  148. data/lib/kettle/jem/templates/gemfiles/modular/rspec.gemfile.example +4 -0
  149. data/lib/kettle/jem/templates/gemfiles/modular/runtime_heads.gemfile.example +14 -0
  150. data/lib/kettle/jem/templates/gemfiles/modular/shunted.gemfile.example +21 -0
  151. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2/v3.0.gemfile.example +5 -0
  152. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile.example +4 -0
  153. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r3/v3.0.gemfile.example +5 -0
  154. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r4/v3.0.gemfile.example +5 -0
  155. data/lib/kettle/jem/templates/gemfiles/modular/stringio/vHEAD.gemfile.example +2 -0
  156. data/lib/kettle/jem/templates/gemfiles/modular/style.gemfile.example +33 -0
  157. data/lib/kettle/jem/templates/gemfiles/modular/style_local.gemfile.example +26 -0
  158. data/lib/kettle/jem/templates/gemfiles/modular/templating.gemfile.example +34 -0
  159. data/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example +73 -0
  160. data/lib/kettle/jem/templates/gemfiles/modular/webrick/r4/v1.9.gemfile.example +1 -0
  161. data/lib/kettle/jem/templates/gemfiles/modular/webrick/vHEAD.gemfile.example +1 -0
  162. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2/libs.gemfile.example +3 -0
  163. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.3/libs.gemfile.example +3 -0
  164. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.4/libs.gemfile.example +3 -0
  165. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.6/libs.gemfile.example +3 -0
  166. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r3/libs.gemfile.example +3 -0
  167. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r3.1/libs.gemfile.example +5 -0
  168. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r4/libs.gemfile.example +6 -0
  169. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/vHEAD.gemfile.example +6 -0
  170. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs.gemfile.example +12 -0
  171. data/lib/kettle/jem/templates/lib/gem/version.rb.example +1 -0
  172. data/lib/kettle/jem/templates/lib/gem/version_gem.rb.example +1 -0
  173. data/lib/kettle/jem/templates/mise.toml.example +25 -0
  174. data/lib/kettle/jem/templates/mise.toml.no-osc.example +25 -0
  175. data/lib/kettle/jem/templates/parsers.toml.example +19 -0
  176. data/lib/kettle/jem/templates/readme/partials/basic_usage.md.example +28 -0
  177. data/lib/kettle/jem/templates/readme/partials/configuration.md.example +112 -0
  178. data/lib/kettle/jem/templates/readme/partials/synopsis.md.example +3 -0
  179. data/lib/kettle/jem/templates/shim/.github/workflows/current.yml.example +40 -0
  180. data/lib/kettle/jem/templates/shim/.rspec.example +5 -0
  181. data/lib/kettle/jem/templates/shim/.structuredmerge/kettle-jem.yml.example +28 -0
  182. data/lib/kettle/jem/templates/shim/CHANGELOG.md.example +9 -0
  183. data/lib/kettle/jem/templates/shim/Gemfile.example +14 -0
  184. data/lib/kettle/jem/templates/shim/README.md.example +25 -0
  185. data/lib/kettle/jem/templates/shim/Rakefile.example +8 -0
  186. data/lib/kettle/jem/templates/shim/gem.gemspec.example +45 -0
  187. data/lib/kettle/jem/templates/shim/lib/compat_require.rb.example +3 -0
  188. data/lib/kettle/jem/templates/shim/lib/entrypoint.rb.example +3 -0
  189. data/lib/kettle/jem/templates/shim/lib/version.rb.example +1 -0
  190. data/lib/kettle/jem/templates/shim/spec/shim_spec.rb.example +15 -0
  191. data/lib/kettle/jem/templates/shim/spec/spec_helper.rb.example +23 -0
  192. data/lib/kettle/jem/templates/sig/gem.rbs.example +1 -0
  193. data/lib/kettle/jem/templates/spec/README.md.example +28 -0
  194. data/lib/kettle/jem/templates/spec/spec_helper.rb.example +39 -0
  195. data/lib/kettle/jem/version.rb +5 -3
  196. data/lib/kettle/jem/version_gem.rb +8 -0
  197. data/lib/kettle/jem.rb +18540 -1517
  198. data/lib/kettle-jem.rb +2 -1
  199. data/sig/kettle/jem.rbs +8 -0
  200. data.tar.gz.sig +0 -0
  201. metadata +870 -32
  202. metadata.gz.sig +0 -0
@@ -0,0 +1,212 @@
1
+ name: Heads
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ env:
7
+ K_SOUP_COV_DO: false
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - 'main'
13
+ - '*-stable'
14
+ tags:
15
+ - '!*' # Do not execute on tags
16
+ pull_request:
17
+ branches:
18
+ - '*'
19
+ # Allow manually triggering the workflow.
20
+ workflow_dispatch:
21
+
22
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
23
+ concurrency:
24
+ # The concurrency group contains the workflow name and the branch name.
25
+ group: "${{ github.workflow }}-${{ github.ref }}"
26
+ cancel-in-progress: true
27
+
28
+ jobs:
29
+ ruby:
30
+ if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
31
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
32
+ runs-on: ubuntu-latest
33
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
34
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
35
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
36
+ strategy:
37
+ fail-fast: true
38
+ matrix:
39
+ include:
40
+ # NOTE: Heads use default rubygems / bundler; their defaults are custom, unreleased, and from the future!
41
+ # ruby-head
42
+ - ruby: "ruby-head"
43
+ appraisal: "head"
44
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
45
+ rubygems: default
46
+ bundler: default
47
+
48
+ steps:
49
+ - name: Checkout
50
+ if: ${{ !env.ACT }}
51
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
52
+ with:
53
+ persist-credentials: false
54
+
55
+ - name: Setup Ruby & RubyGems
56
+ if: ${{ !env.ACT }}
57
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
58
+ with:
59
+ ruby-version: ${{ matrix.ruby }}
60
+ rubygems: ${{ matrix.rubygems }}
61
+ bundler: ${{ matrix.bundler }}
62
+ bundler-cache: true
63
+ manual-compatibility-bundle: true
64
+ gem-install-retries: 7
65
+
66
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
67
+ id: bundleAppraisalAttempt1
68
+ if: ${{ !env.ACT }}
69
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
70
+ # Continue to the next step on failure
71
+ continue-on-error: true
72
+
73
+ # Effectively an automatic retry of the previous step.
74
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
75
+ id: bundleAppraisalAttempt2
76
+ # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
77
+ if: ${{ !env.ACT && steps.bundleAppraisalAttempt1.outcome == 'failure' }}
78
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
79
+
80
+ - name: Restore RSpec status log
81
+ if: "${{!env.ACT}}"
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
139
+
140
+ - name: Restore RSpec status log
141
+ if: "${{!env.ACT}}"
142
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
143
+ with:
144
+ path: .rspec_status
145
+ key: rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
146
+ restore-keys: |
147
+ rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
148
+ rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-
149
+
150
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
151
+ if: ${{ !env.ACT }}
152
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
153
+
154
+ 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'))"
156
+ name: Specs jruby-head@head
157
+ runs-on: ubuntu-latest
158
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
159
+ env:
160
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
161
+ strategy:
162
+ fail-fast: true
163
+ matrix:
164
+ include:
165
+ - ruby: "jruby-head"
166
+ appraisal: "head"
167
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
168
+ rubygems: default
169
+ bundler: default
170
+
171
+ steps:
172
+ - name: Checkout
173
+ if: ${{ !env.ACT }}
174
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
175
+ with:
176
+ persist-credentials: false
177
+
178
+ - name: Setup Ruby & RubyGems
179
+ if: ${{ !env.ACT }}
180
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
181
+ with:
182
+ ruby-version: ${{ matrix.ruby }}
183
+ rubygems: ${{ matrix.rubygems }}
184
+ bundler: ${{ matrix.bundler }}
185
+ bundler-cache: true
186
+ manual-compatibility-bundle: true
187
+ gem-install-retries: 7
188
+
189
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
190
+ id: bundleAppraisalAttempt1
191
+ if: ${{ !env.ACT }}
192
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
193
+ continue-on-error: true
194
+
195
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
196
+ id: bundleAppraisalAttempt2
197
+ if: ${{ !env.ACT && steps.bundleAppraisalAttempt1.outcome == 'failure' }}
198
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
199
+
200
+ - name: Restore RSpec status log
201
+ if: "${{!env.ACT}}"
202
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
203
+ with:
204
+ path: .rspec_status
205
+ key: rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
206
+ restore-keys: |
207
+ rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
208
+ rspec-status-heads-${{matrix.ruby}}-${{matrix.appraisal}}-
209
+
210
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
211
+ if: ${{ !env.ACT }}
212
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -0,0 +1,91 @@
1
+ name: JRuby 10.0
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ env:
7
+ K_SOUP_COV_DO: false
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - 'main'
13
+ - '*-stable'
14
+ tags:
15
+ - '!*' # Do not execute on tags
16
+ pull_request:
17
+ branches:
18
+ - '*'
19
+ # Allow manually triggering the workflow.
20
+ workflow_dispatch:
21
+
22
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
23
+ concurrency:
24
+ # The concurrency group contains the workflow name and the branch name.
25
+ group: "${{ github.workflow }}-${{ github.ref }}"
26
+ cancel-in-progress: true
27
+
28
+ jobs:
29
+ 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'))"
31
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
32
+ runs-on: ubuntu-latest
33
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
34
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
35
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
36
+ strategy:
37
+ matrix:
38
+ include:
39
+ # jruby-10.0 (targets Ruby 3.4 compatibility)
40
+ - ruby: "jruby-10.0"
41
+ appraisal: "ruby-3-4"
42
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
43
+ rubygems: default
44
+ bundler: default
45
+ experimental: true
46
+
47
+ steps:
48
+ - name: Checkout
49
+ if: ${{ !env.ACT }}
50
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
51
+ with:
52
+ persist-credentials: false
53
+
54
+ - name: Setup Ruby & RubyGems
55
+ if: ${{ !env.ACT }}
56
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
57
+ with:
58
+ ruby-version: ${{ matrix.ruby }}
59
+ rubygems: ${{ matrix.rubygems }}
60
+ bundler: ${{ matrix.bundler }}
61
+ bundler-cache: true
62
+ manual-compatibility-bundle: true
63
+ gem-install-retries: 7
64
+
65
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
66
+ id: bundleAppraisalAttempt1
67
+ if: ${{ !env.ACT }}
68
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
69
+ # Continue to the next step on failure
70
+ continue-on-error: true
71
+
72
+ # Effectively an automatic retry of the previous step.
73
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
74
+ id: bundleAppraisalAttempt2
75
+ # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
76
+ if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
77
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
78
+
79
+ - name: Restore RSpec status log
80
+ if: "${{!env.ACT}}"
81
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
82
+ with:
83
+ path: .rspec_status
84
+ key: rspec-status-jruby-10.0-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
85
+ restore-keys: |
86
+ rspec-status-jruby-10.0-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
87
+ rspec-status-jruby-10.0-${{matrix.ruby}}-${{matrix.appraisal}}-
88
+
89
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
90
+ if: ${{ !env.ACT }}
91
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -0,0 +1,90 @@
1
+ name: JRuby 9.1
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ env:
7
+ K_SOUP_COV_DO: false
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - 'main'
13
+ - '*-stable'
14
+ tags:
15
+ - '!*' # Do not execute on tags
16
+ pull_request:
17
+ branches:
18
+ - '*'
19
+ # Allow manually triggering the workflow.
20
+ workflow_dispatch:
21
+
22
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
23
+ concurrency:
24
+ # The concurrency group contains the workflow name and the branch name.
25
+ group: "${{ github.workflow }}-${{ github.ref }}"
26
+ cancel-in-progress: true
27
+
28
+ jobs:
29
+ 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'))"
31
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
32
+ runs-on: ubuntu-22.04
33
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
34
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
35
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
36
+ strategy:
37
+ matrix:
38
+ include:
39
+ # jruby-9.1 (targets Ruby 2.3 compatibility)
40
+ - ruby: "jruby-9.1"
41
+ appraisal: "ruby-2-3"
42
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
43
+ rubygems: 3.3.27
44
+ bundler: 2.3.27
45
+
46
+ steps:
47
+ - name: Checkout
48
+ if: ${{ !env.ACT }}
49
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
+ with:
51
+ persist-credentials: false
52
+
53
+ - name: Setup Ruby & RubyGems
54
+ if: ${{ !env.ACT }}
55
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
56
+ with:
57
+ ruby-version: ${{ matrix.ruby }}
58
+ rubygems: ${{ matrix.rubygems }}
59
+ bundler: ${{ matrix.bundler }}
60
+ bundler-cache: true
61
+ manual-compatibility-bundle: true
62
+ gem-install-retries: 7
63
+
64
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
65
+ id: bundleAppraisalAttempt1
66
+ if: ${{ !env.ACT }}
67
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
68
+ # Continue to the next step on failure
69
+ continue-on-error: true
70
+
71
+ # Effectively an automatic retry of the previous step.
72
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
73
+ id: bundleAppraisalAttempt2
74
+ # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
75
+ if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
76
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
77
+
78
+ - name: Restore RSpec status log
79
+ if: "${{!env.ACT}}"
80
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
81
+ with:
82
+ path: .rspec_status
83
+ key: rspec-status-jruby-9.1-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
84
+ restore-keys: |
85
+ rspec-status-jruby-9.1-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
86
+ rspec-status-jruby-9.1-${{matrix.ruby}}-${{matrix.appraisal}}-
87
+
88
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
89
+ if: ${{ !env.ACT }}
90
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -0,0 +1,95 @@
1
+ name: JRuby 9.2
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ env:
7
+ K_SOUP_COV_DO: false
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - 'main'
13
+ - '*-stable'
14
+ tags:
15
+ - '!*' # Do not execute on tags
16
+ pull_request:
17
+ branches:
18
+ - '*'
19
+ # Allow manually triggering the workflow.
20
+ workflow_dispatch:
21
+
22
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
23
+ concurrency:
24
+ # The concurrency group contains the workflow name and the branch name.
25
+ group: "${{ github.workflow }}-${{ github.ref }}"
26
+ cancel-in-progress: true
27
+
28
+ jobs:
29
+ 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'))"
31
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
32
+ runs-on: ubuntu-22.04
33
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
34
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
35
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
36
+ strategy:
37
+ matrix:
38
+ include:
39
+ # jruby-9.2 (targets Ruby 2.5 compatibility)
40
+ - ruby: "jruby-9.2"
41
+ appraisal: "ruby-2-5"
42
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
43
+ rubygems: 3.3.27
44
+ bundler: 2.3.27
45
+
46
+ steps:
47
+ - name: Checkout
48
+ if: ${{ !env.ACT }}
49
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
+ with:
51
+ persist-credentials: false
52
+
53
+ - name: Setup Ruby & RubyGems
54
+ if: ${{ !env.ACT }}
55
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
56
+ with:
57
+ ruby-version: ${{ matrix.ruby }}
58
+ rubygems: ${{ matrix.rubygems }}
59
+ bundler: ${{ matrix.bundler }}
60
+ bundler-cache: false
61
+
62
+ - name: Bundle install for JRuby 9.2
63
+ if: ${{ !env.ACT }}
64
+ run: |
65
+ bundle config set --local path "${RUNNER_TEMP}/bundle"
66
+ bundle config set --local mirror.https://gem.coop https://rubygems.org
67
+ bundle install --jobs 1
68
+
69
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
70
+ id: bundleAppraisalAttempt1
71
+ if: ${{ !env.ACT }}
72
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
73
+ # Continue to the next step on failure
74
+ continue-on-error: true
75
+
76
+ # Effectively an automatic retry of the previous step.
77
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
78
+ id: bundleAppraisalAttempt2
79
+ # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
80
+ if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
81
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
82
+
83
+ - name: Restore RSpec status log
84
+ if: "${{!env.ACT}}"
85
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
86
+ with:
87
+ path: .rspec_status
88
+ key: rspec-status-jruby-9.2-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
89
+ restore-keys: |
90
+ rspec-status-jruby-9.2-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
91
+ rspec-status-jruby-9.2-${{matrix.ruby}}-${{matrix.appraisal}}-
92
+
93
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
94
+ if: ${{ !env.ACT }}
95
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -0,0 +1,95 @@
1
+ name: JRuby 9.3
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ env:
7
+ K_SOUP_COV_DO: false
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - 'main'
13
+ - '*-stable'
14
+ tags:
15
+ - '!*' # Do not execute on tags
16
+ pull_request:
17
+ branches:
18
+ - '*'
19
+ # Allow manually triggering the workflow.
20
+ workflow_dispatch:
21
+
22
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
23
+ concurrency:
24
+ # The concurrency group contains the workflow name and the branch name.
25
+ group: "${{ github.workflow }}-${{ github.ref }}"
26
+ cancel-in-progress: true
27
+
28
+ jobs:
29
+ 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'))"
31
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
32
+ runs-on: ubuntu-22.04
33
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
34
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
35
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
36
+ strategy:
37
+ matrix:
38
+ include:
39
+ # jruby-9.3 (targets Ruby 2.6 compatibility)
40
+ - ruby: "jruby-9.3"
41
+ appraisal: "ruby-2-6"
42
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
43
+ rubygems: "3.4.22"
44
+ bundler: "2.4.22"
45
+
46
+ steps:
47
+ - name: Checkout
48
+ if: ${{ !env.ACT }}
49
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
+ with:
51
+ persist-credentials: false
52
+
53
+ - name: Setup Ruby & RubyGems
54
+ if: ${{ !env.ACT }}
55
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
56
+ with:
57
+ ruby-version: ${{ matrix.ruby }}
58
+ rubygems: ${{ matrix.rubygems }}
59
+ bundler: ${{ matrix.bundler }}
60
+ bundler-cache: false
61
+
62
+ - name: Bundle install for JRuby 9.3
63
+ if: ${{ !env.ACT }}
64
+ run: |
65
+ bundle config set --local path "${RUNNER_TEMP}/bundle"
66
+ bundle config set --local mirror.https://gem.coop https://rubygems.org
67
+ bundle install --jobs 1
68
+
69
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
70
+ id: bundleAppraisalAttempt1
71
+ if: ${{ !env.ACT }}
72
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
73
+ # Continue to the next step on failure
74
+ continue-on-error: true
75
+
76
+ # Effectively an automatic retry of the previous step.
77
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
78
+ id: bundleAppraisalAttempt2
79
+ # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
80
+ if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
81
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
82
+
83
+ - name: Restore RSpec status log
84
+ if: "${{!env.ACT}}"
85
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
86
+ with:
87
+ path: .rspec_status
88
+ key: rspec-status-jruby-9.3-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
89
+ restore-keys: |
90
+ rspec-status-jruby-9.3-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
91
+ rspec-status-jruby-9.3-${{matrix.ruby}}-${{matrix.appraisal}}-
92
+
93
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
94
+ if: ${{ !env.ACT }}
95
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -0,0 +1,95 @@
1
+ name: JRuby 9.4
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ env:
7
+ K_SOUP_COV_DO: false
8
+
9
+ on:
10
+ push:
11
+ branches:
12
+ - 'main'
13
+ - '*-stable'
14
+ tags:
15
+ - '!*' # Do not execute on tags
16
+ pull_request:
17
+ branches:
18
+ - '*'
19
+ # Allow manually triggering the workflow.
20
+ workflow_dispatch:
21
+
22
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
23
+ concurrency:
24
+ # The concurrency group contains the workflow name and the branch name.
25
+ group: "${{ github.workflow }}-${{ github.ref }}"
26
+ cancel-in-progress: true
27
+
28
+ jobs:
29
+ 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'))"
31
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
32
+ runs-on: ubuntu-22.04
33
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
34
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
35
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
36
+ strategy:
37
+ matrix:
38
+ include:
39
+ # jruby-9.4 (targets Ruby 3.1 compatibility)
40
+ - ruby: "jruby-9.4"
41
+ appraisal: "ruby-3-1"
42
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
43
+ rubygems: "3.6.9"
44
+ bundler: "2.6.9"
45
+
46
+ steps:
47
+ - name: Checkout
48
+ if: ${{ !env.ACT }}
49
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
+ with:
51
+ persist-credentials: false
52
+
53
+ - name: Setup Ruby & RubyGems
54
+ if: ${{ !env.ACT }}
55
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
56
+ with:
57
+ ruby-version: ${{ matrix.ruby }}
58
+ rubygems: ${{ matrix.rubygems }}
59
+ bundler: ${{ matrix.bundler }}
60
+ bundler-cache: false
61
+
62
+ - name: Bundle install for JRuby 9.4
63
+ if: ${{ !env.ACT }}
64
+ run: |
65
+ bundle config set --local path "${RUNNER_TEMP}/bundle"
66
+ bundle config set --local mirror.https://gem.coop https://rubygems.org
67
+ bundle install --jobs 1
68
+
69
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
70
+ id: bundleAppraisalAttempt1
71
+ if: ${{ !env.ACT }}
72
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
73
+ # Continue to the next step on failure
74
+ continue-on-error: true
75
+
76
+ # Effectively an automatic retry of the previous step.
77
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
78
+ id: bundleAppraisalAttempt2
79
+ # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
80
+ if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && !env.ACT }}
81
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
82
+
83
+ - name: Restore RSpec status log
84
+ if: "${{!env.ACT}}"
85
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
86
+ with:
87
+ path: .rspec_status
88
+ key: rspec-status-jruby-9.4-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
89
+ restore-keys: |
90
+ rspec-status-jruby-9.4-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
91
+ rspec-status-jruby-9.4-${{matrix.ruby}}-${{matrix.appraisal}}-
92
+
93
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
94
+ if: ${{ !env.ACT }}
95
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}