kettle-jem 7.1.29 → 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 +38 -1
- data/README.md +1 -129
- data/lib/kettle/jem/templates/.devcontainer/devcontainer.json.example +1 -1
- data/lib/kettle/jem/templates/.github/workflows/coverage.yml.example +23 -1
- data/lib/kettle/jem/templates/.github/workflows/current.yml.example +5 -1
- data/lib/kettle/jem/templates/.github/workflows/dep-heads.yml.example +3 -0
- data/lib/kettle/jem/templates/.github/workflows/framework-ci.yml.example +3 -0
- data/lib/kettle/jem/templates/.github/workflows/heads.yml.example +13 -3
- data/lib/kettle/jem/templates/.github/workflows/jruby-10.0.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.1.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.2.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.3.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.4.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/jruby.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/locked_deps.yml.example +1 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.3.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.4.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.5.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.6.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.7.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.0.yml.example +8 -2
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.1.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.2.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.3.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.4.yml.example +7 -1
- data/lib/kettle/jem/templates/.github/workflows/style.yml.example +4 -1
- data/lib/kettle/jem/templates/.github/workflows/templating.yml.example +4 -1
- data/lib/kettle/jem/templates/.github/workflows/truffle.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-22.3.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.1.yml.example +10 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-24.2.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-25.0.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-33.0.yml.example +14 -1
- data/lib/kettle/jem/templates/.github/workflows/unlocked_deps.yml.example +5 -1
- data/lib/kettle/jem/templates/gem.gemspec.example +3 -3
- data/lib/kettle/jem/templates/shim/gem.gemspec.example +2 -2
- data/lib/kettle/jem/version.rb +1 -1
- data/lib/kettle/jem.rb +47 -7
- data.tar.gz.sig +0 -0
- metadata +8 -8
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8009dad8893b30d251357d02f553a4d32af34d29bffcb274ce911eeb69d30326
|
|
4
|
+
data.tar.gz: 3b19519b494622d3c73ef6e6f92ef94cd82230a98351969bd00cea49a6d6bdbc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fe7724acb8c7af1f5f2a2f58e18b601aef0e94b74555c70215b5f2fd78e5119a05c5641df4e2352c25464f48cfadbf48b83737050966ea96f48d6ef7e1fd1215
|
|
7
|
+
data.tar.gz: 51286f474e10f2da5e83c19672ae074f175cbcb41dbc813adeb4bc57d5f05328192335eb31e1854f362a925ec97ea10d3351b57570cf8dd5146250e54ed3e44c
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,41 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [7.1.30] - 2026-10-15
|
|
34
|
+
|
|
35
|
+
- TAG: [v7.1.30][7.1.30t]
|
|
36
|
+
- COVERAGE: 93.50% -- 11359/12149 lines in 17 files
|
|
37
|
+
- BRANCH COVERAGE: 77.27% -- 4917/6363 branches in 17 files
|
|
38
|
+
- 19.72% documented
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- [kc] kettle-jem-deps-floor: Update kettle-jem template dependency floors:
|
|
43
|
+
- kettle-changelog (>= 1.0.9 -> >= 1.0.10)
|
|
44
|
+
- kettle-dev (>= 3.1.11 -> >= 3.1.13)
|
|
45
|
+
- kettle-test (>= 2.0.24 -> >= 2.0.25)
|
|
46
|
+
- rspec-stubbed_env (>= 1.0.6 -> >= 1.0.17)
|
|
47
|
+
- turbo_tests2 (>= 3.2.14 -> >= 4.0.0)
|
|
48
|
+
|
|
49
|
+
- [kc] kettle-jem/template: updated 7 project files:
|
|
50
|
+
- code and tests (1)
|
|
51
|
+
- dependencies (4)
|
|
52
|
+
- documentation (1)
|
|
53
|
+
- other (1)
|
|
54
|
+
|
|
55
|
+
- JRuby workflow templates now cap worker JVMs at 2 (TURBO_TESTS2_MAX_PROCESSES=2) alongside the -Xmx1280m heap cap, and truffleruby workflow templates no longer force serial-only lanes (MAX_PROCESSES 1 -> 2): turbo_tests2 workers are spawn-based and engine-portable, so JVM engines run parallel workers safely once workers x per-worker heap is bounded under the runner RAM; the old serial-only setting wasted CI time and made lanes trip the stall watchdog on legitimately long tests
|
|
56
|
+
|
|
57
|
+
- [kc] kettle-jem-workflow-pins: Update pinned GitHub Actions in kettle-jem templates:
|
|
58
|
+
- ruby/setup-ruby v1.328.0 (e81a8fa391b11a595c1b7ed84177cc0fe02faf83) -> v1.329.0 (651ff0d62c5c79bed6d53ec518387aae20e72c1a)
|
|
59
|
+
|
|
60
|
+
- Dependency floors raised: turbo_tests2 4.0.0 (drops parallel_tests for runtime_groups) in the template gemspec and managed-floors registry
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- JRuby workflow templates now set TURBO_TESTS2_WATCHDOG_SECONDS=1500 (matching the truffleruby serial-lane margin): JRuby engines cannot fork, so turbo_tests2 runs serial and a single slow spec could exceed the previous 900s watchdog and fail the whole lane (jruby-9.2 killed mid-run after 805 passing examples)
|
|
65
|
+
|
|
66
|
+
- JRuby workflow templates now cap each turbo_tests2 worker JVM at -Xmx1280m via JRUBY_OPTS: without a cap JRuby defaults to 1/4 of runner RAM per worker and concurrent workers get OOM-killed silently mid-run, which the watchdog then reports as total worker silence (the jruby-9.2 lane died this way with 805 examples passing)
|
|
67
|
+
|
|
33
68
|
## [7.1.29] - 2026-10-11
|
|
34
69
|
|
|
35
70
|
- TAG: [v7.1.29][7.1.29t]
|
|
@@ -2229,7 +2264,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2229
2264
|
- Released kettle-jem as part of the initial StructuredMerge Ruby 7.0.0 gem set.
|
|
2230
2265
|
- Included packaged templates and parser-backed merge support for Ruby gem templating.
|
|
2231
2266
|
|
|
2232
|
-
[Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.
|
|
2267
|
+
[Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.30...HEAD
|
|
2268
|
+
[7.1.30]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.29...v7.1.30
|
|
2269
|
+
[7.1.30t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.30
|
|
2233
2270
|
[7.1.29]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.28...v7.1.29
|
|
2234
2271
|
[7.1.29t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.29
|
|
2235
2272
|
[7.1.28]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.27...v7.1.28
|
data/README.md
CHANGED
|
@@ -98,61 +98,6 @@ Merge analysis must enter parsing through `tree_haver`. Parser-specific gems reg
|
|
|
98
98
|
[sm-family-rust]: https://github.com/structuredmerge/structuredmerge
|
|
99
99
|
[sm-family-typescript]: https://github.com/structuredmerge/structuredmerge-typescript
|
|
100
100
|
|
|
101
|
-
### Runtime and Platform Support
|
|
102
|
-
|
|
103
|
-
Support tiers describe what this project's CI actually exercises, not what may
|
|
104
|
-
work in an untested environment:
|
|
105
|
-
|
|
106
|
-
- **Parallel support**: CI runs the test suite with multiple workers available.
|
|
107
|
-
- **Unsupported**: the engine/platform combination is not covered by CI and is
|
|
108
|
-
not a project compatibility claim.
|
|
109
|
-
|
|
110
|
-
| Ruby engine/version | Linux | macOS | Windows | Notes |
|
|
111
|
-
|---------------------|-------|-------|---------|-------|
|
|
112
|
-
| MRI 4.0-4.0 | Parallel support | Unsupported | Unsupported | Versioned Ruby workflows run on Linux. |
|
|
113
|
-
| MRI current | Parallel support | Parallel support | Unsupported | Current Ruby workflow covers the declared OS platforms. |
|
|
114
|
-
| MRI head | Parallel support | Unsupported | Unsupported | CI is allowed to fail while Ruby is in development. |
|
|
115
|
-
| JRuby (all CI lanes) | Parallel support | Unsupported | Unsupported | Engine workflows run on Linux; macOS and Windows are not exercised by CI. |
|
|
116
|
-
|
|
117
|
-
### Federated DVCS
|
|
118
|
-
|
|
119
|
-
<details markdown="1">
|
|
120
|
-
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
121
|
-
|
|
122
|
-
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
|
|
123
|
-
|-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
|
|
124
|
-
| 🧪 [structuredmerge/structuredmerge-ruby on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
|
|
125
|
-
| 🧊 [structuredmerge/structuredmerge-ruby on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
|
|
126
|
-
| 🐙 [structuredmerge/structuredmerge-ruby on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
|
|
127
|
-
|
|
128
|
-
</details>
|
|
129
|
-
|
|
130
|
-
### Enterprise Support
|
|
131
|
-
|
|
132
|
-
[](https://tidelift.com/subscription/pkg/rubygems-kettle-jem?utm_source=rubygems-kettle-jem&utm_medium=referral&utm_campaign=readme)
|
|
133
|
-
|
|
134
|
-
Available as part of the Tidelift Subscription.
|
|
135
|
-
|
|
136
|
-
<details markdown="1">
|
|
137
|
-
<summary>Need enterprise-level guarantees?</summary>
|
|
138
|
-
|
|
139
|
-
The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
|
|
140
|
-
|
|
141
|
-
[![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
|
|
142
|
-
|
|
143
|
-
- 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
|
|
144
|
-
- 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
|
|
145
|
-
- 💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers
|
|
146
|
-
|
|
147
|
-
Alternatively:
|
|
148
|
-
|
|
149
|
-
- [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
|
|
150
|
-
- [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
151
|
-
- [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork]
|
|
152
|
-
- [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor]
|
|
153
|
-
|
|
154
|
-
</details>
|
|
155
|
-
|
|
156
101
|
## ✨ Installation
|
|
157
102
|
|
|
158
103
|
Install the gem and add to the application's Gemfile by executing:
|
|
@@ -712,30 +657,6 @@ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you m
|
|
|
712
657
|
|
|
713
658
|
See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
|
|
714
659
|
|
|
715
|
-
### 🚀 Release Instructions
|
|
716
|
-
|
|
717
|
-
See [CONTRIBUTING.md][🤝contributing].
|
|
718
|
-
|
|
719
|
-
### Code Coverage
|
|
720
|
-
|
|
721
|
-
<details markdown="1">
|
|
722
|
-
<summary>Coverage service badges</summary>
|
|
723
|
-
|
|
724
|
-
</details>
|
|
725
|
-
|
|
726
|
-
### 🪇 Code of Conduct
|
|
727
|
-
|
|
728
|
-
Everyone interacting with this project's codebases, issue trackers,
|
|
729
|
-
chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
|
|
730
|
-
|
|
731
|
-
## 🌈 Contributors
|
|
732
|
-
|
|
733
|
-
[![Contributors][🖐contributors-img]][🖐contributors]
|
|
734
|
-
|
|
735
|
-
Made with [contributors-img][🖐contrib-rocks].
|
|
736
|
-
|
|
737
|
-
Also see GitLab Contributors: [https://gitlab.com/structuredmerge/structuredmerge-ruby/-/graphs/main][🚎contributors-gl]
|
|
738
|
-
|
|
739
660
|
## 📌 Versioning
|
|
740
661
|
|
|
741
662
|
This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
|
|
@@ -769,41 +690,6 @@ See [LICENSE.md][📄license] for details.
|
|
|
769
690
|
|
|
770
691
|
If none of the available licenses suit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
|
|
771
692
|
|
|
772
|
-
### © Copyright
|
|
773
|
-
|
|
774
|
-
See [LICENSE.md][📄license] for the official copyright notice.
|
|
775
|
-
|
|
776
|
-
<details markdown="1">
|
|
777
|
-
<summary>Copyright holders</summary>
|
|
778
|
-
|
|
779
|
-
- Required Notice: Copyright (c) 2026 Peter H. Boling
|
|
780
|
-
|
|
781
|
-
</details>
|
|
782
|
-
|
|
783
|
-
## 🤑 A request for help
|
|
784
|
-
|
|
785
|
-
Maintainers have teeth and need to pay their dentists.
|
|
786
|
-
After getting laid off in an RIF in March, and encountering difficulty finding a new one,
|
|
787
|
-
I began spending most of my time building open source tools.
|
|
788
|
-
I'm hoping to be able to pay for my kids' health insurance this month,
|
|
789
|
-
so if you value the work I am doing, I need your support.
|
|
790
|
-
Please consider sponsoring me or the project.
|
|
791
|
-
|
|
792
|
-
To join the community or get help, use the RubyForum or Discord.
|
|
793
|
-
|
|
794
|
-
[![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
|
|
795
|
-
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
796
|
-
|
|
797
|
-
To say "thanks!" ☝️ Join the community or 👇️ send money.
|
|
798
|
-
|
|
799
|
-
[![Sponsor kettle-dev/kettle-jem on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
800
|
-
|
|
801
|
-
### Please give the project a star ⭐ ♥.
|
|
802
|
-
|
|
803
|
-
Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
|
|
804
|
-
|
|
805
|
-
Thanks for RTFM. ☺️
|
|
806
|
-
|
|
807
693
|
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
|
808
694
|
[⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
|
|
809
695
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
|
@@ -838,7 +724,6 @@ Thanks for RTFM. ☺️
|
|
|
838
724
|
[✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
|
|
839
725
|
[✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
|
|
840
726
|
[✉️ruby-forum]: https://www.rubyforum.org/tag/structuredmerge
|
|
841
|
-
|
|
842
727
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
|
843
728
|
[⛳️gem-namespace]: https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem
|
|
844
729
|
[⛳️namespace-img]: https://img.shields.io/badge/namespace-Kettle::Jem-3C2D2D.svg?style=square&logo=ruby&logoColor=white
|
|
@@ -909,7 +794,6 @@ Thanks for RTFM. ☺️
|
|
|
909
794
|
[🖐contrib-rocks]: https://contrib.rocks
|
|
910
795
|
[🖐contributors]: https://github.com/structuredmerge/structuredmerge-ruby/graphs/contributors
|
|
911
796
|
[🖐contributors-img]: https://contrib.rocks/image?repo=structuredmerge/structuredmerge-ruby
|
|
912
|
-
[🚎contributors-gl]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/graphs/main
|
|
913
797
|
[🪇conduct]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CODE_OF_CONDUCT.md
|
|
914
798
|
[🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
|
|
915
799
|
[📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
|
|
@@ -923,7 +807,7 @@ Thanks for RTFM. ☺️
|
|
|
923
807
|
[📌gitmoji]: https://gitmoji.dev
|
|
924
808
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
925
809
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
926
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-12.
|
|
810
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-12.149-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
927
811
|
[🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
|
|
928
812
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
929
813
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -932,7 +816,6 @@ Thanks for RTFM. ☺️
|
|
|
932
816
|
[📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only_OR_PolyForm--Small--Business--1.0.0-259D6C.svg
|
|
933
817
|
[📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
|
|
934
818
|
[📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-%E2%9C%97-C0392B.svg?style=flat&logo=Apache
|
|
935
|
-
|
|
936
819
|
[📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
|
|
937
820
|
[📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
|
|
938
821
|
[🚎yard-current]: http://rubydoc.info/gems/kettle-jem
|
|
@@ -944,14 +827,3 @@ Thanks for RTFM. ☺️
|
|
|
944
827
|
[💎appraisal2]: https://github.com/appraisal-rb/appraisal2
|
|
945
828
|
[💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
|
|
946
829
|
[💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
|
|
947
|
-
|
|
948
|
-
<!-- kettle-jem:metadata:start -->
|
|
949
|
-
| Field | Value |
|
|
950
|
-
|---|---|
|
|
951
|
-
| Package | kettle-jem |
|
|
952
|
-
| Description | 🔮 Kettle::Jem provides gem scaffolding, templating, and setup automation using the *-merge gem family for AST-based file merging and token-resolver for template token resolution. Includes MergerConfig presets, YAML recipes, and a complete gem template scaffold. |
|
|
953
|
-
| Homepage | https://github.com/structuredmerge/structuredmerge-ruby |
|
|
954
|
-
| Source | https://github.com/structuredmerge/structuredmerge-ruby |
|
|
955
|
-
| License | `AGPL-3.0-only` OR `PolyForm-Small-Business-1.0.0` |
|
|
956
|
-
| Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/kettle-dev, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/kettle-jem, https://www.buymeacoffee.com/pboling |
|
|
957
|
-
<!-- kettle-jem:metadata:end -->
|
|
@@ -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": {
|
|
@@ -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
|
|
@@ -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}
|
|
@@ -31,6 +31,7 @@ jobs:
|
|
|
31
31
|
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
|
|
32
32
|
name: Specs ${{ matrix.os }} ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
|
33
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:
|
|
@@ -66,7 +67,10 @@ jobs:
|
|
|
66
67
|
id: bundleAppraisalAttempt2
|
|
67
68
|
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
|
|
68
69
|
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' }}
|
|
69
|
-
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
|
|
70
74
|
|
|
71
75
|
- name: Restore RSpec status log
|
|
72
76
|
if: "${{!env.ACT}}"
|
|
@@ -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' }}
|
|
@@ -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
|
|
@@ -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
|
|
@@ -73,9 +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:
|
|
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
|
|
79
85
|
|
|
80
86
|
- name: Restore RSpec status log
|
|
81
87
|
if: "${{!env.ACT}}"
|
|
@@ -134,8 +140,12 @@ jobs:
|
|
|
134
140
|
|
|
135
141
|
- name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
|
|
136
142
|
id: bundleAppraisalAttempt2
|
|
143
|
+
# If bundleAppraisalAttempt1 failed, clean lock/vendor and retry; Otherwise skip.
|
|
137
144
|
if: ${{ !env.ACT && steps.bundleAppraisalAttempt1.outcome == 'failure' }}
|
|
138
|
-
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
|
|
139
149
|
|
|
140
150
|
- name: Restore RSpec status log
|
|
141
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:
|
|
@@ -30,6 +39,7 @@ jobs:
|
|
|
30
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
|
|
@@ -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:
|
|
@@ -30,6 +39,7 @@ jobs:
|
|
|
30
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
|
|
@@ -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:
|
|
@@ -30,6 +39,7 @@ jobs:
|
|
|
30
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
|
|
@@ -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:
|
|
@@ -30,6 +39,7 @@ jobs:
|
|
|
30
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
|
|
@@ -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:
|
|
@@ -30,6 +39,7 @@ jobs:
|
|
|
30
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
|
|
@@ -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:
|
|
@@ -30,6 +39,7 @@ jobs:
|
|
|
30
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
|
|
@@ -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}}"
|
|
@@ -57,6 +57,7 @@ jobs:
|
|
|
57
57
|
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
|
|
58
58
|
name: Default rake task w/ main Gemfile.lock ${{ matrix.name_extra || '' }}
|
|
59
59
|
runs-on: ubuntu-latest
|
|
60
|
+
timeout-minutes: 30
|
|
60
61
|
continue-on-error: ${{ matrix.experimental }}
|
|
61
62
|
strategy:
|
|
62
63
|
fail-fast: false
|