kettle-dev 1.2.3 → 2.0.0

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 (133) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +176 -3
  4. data/CITATION.cff +2 -2
  5. data/CONTRIBUTING.md +11 -17
  6. data/README.md +390 -319
  7. data/exe/kettle-dev-setup +12 -63
  8. data/exe/kettle-gh-release +82 -0
  9. data/lib/kettle/dev/gem_spec_reader.rb +2 -2
  10. data/lib/kettle/dev/open_collective_config.rb +12 -0
  11. data/lib/kettle/dev/rakelib/yard.rake +15 -0
  12. data/lib/kettle/dev/tasks/ci_task.rb +4 -4
  13. data/lib/kettle/dev/version.rb +1 -1
  14. data/lib/kettle/dev.rb +4 -12
  15. data/sig/kettle/dev/source_merger.rbs +40 -56
  16. data.tar.gz.sig +0 -0
  17. metadata +15 -144
  18. metadata.gz.sig +0 -0
  19. data/.aiignore.example +0 -19
  20. data/.devcontainer/apt-install/devcontainer-feature.json +0 -9
  21. data/.devcontainer/apt-install/install.sh +0 -11
  22. data/.devcontainer/devcontainer.json +0 -28
  23. data/.env.local.example +0 -31
  24. data/.envrc +0 -47
  25. data/.envrc.example +0 -51
  26. data/.envrc.no-osc.example +0 -51
  27. data/.git-hooks/commit-msg +0 -54
  28. data/.git-hooks/commit-subjects-goalie.txt +0 -8
  29. data/.git-hooks/footer-template.erb.txt +0 -16
  30. data/.git-hooks/prepare-commit-msg +0 -8
  31. data/.github/.codecov.yml.example +0 -14
  32. data/.github/FUNDING.yml +0 -13
  33. data/.github/FUNDING.yml.no-osc.example +0 -13
  34. data/.github/dependabot.yml +0 -13
  35. data/.github/workflows/ancient.yml +0 -83
  36. data/.github/workflows/ancient.yml.example +0 -81
  37. data/.github/workflows/auto-assign.yml +0 -21
  38. data/.github/workflows/codeql-analysis.yml +0 -70
  39. data/.github/workflows/coverage.yml +0 -127
  40. data/.github/workflows/coverage.yml.example +0 -127
  41. data/.github/workflows/current.yml +0 -116
  42. data/.github/workflows/current.yml.example +0 -115
  43. data/.github/workflows/dep-heads.yml +0 -117
  44. data/.github/workflows/dependency-review.yml +0 -20
  45. data/.github/workflows/discord-notifier.yml.example +0 -39
  46. data/.github/workflows/heads.yml +0 -117
  47. data/.github/workflows/heads.yml.example +0 -116
  48. data/.github/workflows/jruby.yml +0 -82
  49. data/.github/workflows/jruby.yml.example +0 -72
  50. data/.github/workflows/legacy.yml +0 -76
  51. data/.github/workflows/license-eye.yml +0 -40
  52. data/.github/workflows/locked_deps.yml +0 -85
  53. data/.github/workflows/opencollective.yml +0 -40
  54. data/.github/workflows/style.yml +0 -67
  55. data/.github/workflows/supported.yml +0 -75
  56. data/.github/workflows/truffle.yml +0 -99
  57. data/.github/workflows/unlocked_deps.yml +0 -84
  58. data/.github/workflows/unsupported.yml +0 -76
  59. data/.gitignore +0 -50
  60. data/.gitlab-ci.yml.example +0 -134
  61. data/.idea/.gitignore +0 -45
  62. data/.junie/guidelines-rbs.md +0 -49
  63. data/.junie/guidelines.md +0 -141
  64. data/.junie/guidelines.md.example +0 -140
  65. data/.licenserc.yaml +0 -7
  66. data/.opencollective.yml +0 -3
  67. data/.opencollective.yml.example +0 -3
  68. data/.qlty/qlty.toml +0 -79
  69. data/.rspec +0 -9
  70. data/.rubocop.yml +0 -13
  71. data/.rubocop_rspec.yml +0 -33
  72. data/.simplecov +0 -16
  73. data/.simplecov.example +0 -11
  74. data/.tool-versions +0 -1
  75. data/.yardignore +0 -13
  76. data/.yardopts +0 -14
  77. data/Appraisal.root.gemfile +0 -10
  78. data/Appraisals +0 -151
  79. data/Appraisals.example +0 -102
  80. data/CHANGELOG.md.example +0 -47
  81. data/CONTRIBUTING.md.example +0 -227
  82. data/FUNDING.md.no-osc.example +0 -63
  83. data/Gemfile +0 -40
  84. data/Gemfile.example +0 -34
  85. data/README.md.example +0 -570
  86. data/README.md.no-osc.example +0 -536
  87. data/Rakefile.example +0 -68
  88. data/gemfiles/modular/coverage.gemfile +0 -6
  89. data/gemfiles/modular/debug.gemfile +0 -13
  90. data/gemfiles/modular/documentation.gemfile +0 -14
  91. data/gemfiles/modular/erb/r2/v3.0.gemfile +0 -1
  92. data/gemfiles/modular/erb/r2.3/default.gemfile +0 -6
  93. data/gemfiles/modular/erb/r2.6/v2.2.gemfile +0 -3
  94. data/gemfiles/modular/erb/r3/v5.0.gemfile +0 -1
  95. data/gemfiles/modular/erb/r3.1/v4.0.gemfile +0 -2
  96. data/gemfiles/modular/erb/vHEAD.gemfile +0 -2
  97. data/gemfiles/modular/injected.gemfile +0 -60
  98. data/gemfiles/modular/mutex_m/r2/v0.3.gemfile +0 -2
  99. data/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile +0 -3
  100. data/gemfiles/modular/mutex_m/r3/v0.3.gemfile +0 -2
  101. data/gemfiles/modular/mutex_m/vHEAD.gemfile +0 -2
  102. data/gemfiles/modular/optional.gemfile +0 -8
  103. data/gemfiles/modular/optional.gemfile.example +0 -5
  104. data/gemfiles/modular/runtime_heads.gemfile +0 -10
  105. data/gemfiles/modular/runtime_heads.gemfile.example +0 -8
  106. data/gemfiles/modular/stringio/r2/v3.0.gemfile +0 -5
  107. data/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile +0 -4
  108. data/gemfiles/modular/stringio/r3/v3.0.gemfile +0 -5
  109. data/gemfiles/modular/stringio/vHEAD.gemfile +0 -2
  110. data/gemfiles/modular/style.gemfile +0 -25
  111. data/gemfiles/modular/style.gemfile.example +0 -25
  112. data/gemfiles/modular/templating.gemfile +0 -3
  113. data/gemfiles/modular/x_std_libs/r2/libs.gemfile +0 -3
  114. data/gemfiles/modular/x_std_libs/r2.3/libs.gemfile +0 -3
  115. data/gemfiles/modular/x_std_libs/r2.4/libs.gemfile +0 -3
  116. data/gemfiles/modular/x_std_libs/r2.6/libs.gemfile +0 -3
  117. data/gemfiles/modular/x_std_libs/r3/libs.gemfile +0 -3
  118. data/gemfiles/modular/x_std_libs/r3.1/libs.gemfile +0 -3
  119. data/gemfiles/modular/x_std_libs/vHEAD.gemfile +0 -3
  120. data/gemfiles/modular/x_std_libs.gemfile +0 -2
  121. data/kettle-dev.gemspec.example +0 -154
  122. data/lib/kettle/dev/modular_gemfiles.rb +0 -119
  123. data/lib/kettle/dev/prism_appraisals.rb +0 -351
  124. data/lib/kettle/dev/prism_gemfile.rb +0 -177
  125. data/lib/kettle/dev/prism_gemspec.rb +0 -284
  126. data/lib/kettle/dev/prism_utils.rb +0 -201
  127. data/lib/kettle/dev/rakelib/install.rake +0 -10
  128. data/lib/kettle/dev/rakelib/template.rake +0 -10
  129. data/lib/kettle/dev/setup_cli.rb +0 -403
  130. data/lib/kettle/dev/source_merger.rb +0 -622
  131. data/lib/kettle/dev/tasks/install_task.rb +0 -553
  132. data/lib/kettle/dev/tasks/template_task.rb +0 -975
  133. data/lib/kettle/dev/template_helpers.rb +0 -685
@@ -1,115 +0,0 @@
1
- # Targets the evergreen latest release of ruby, truffleruby, and jruby
2
- name: Current
3
-
4
- permissions:
5
- contents: read
6
-
7
- env:
8
- K_SOUP_COV_DO: false
9
-
10
- on:
11
- push:
12
- branches:
13
- - 'main'
14
- - '*-stable'
15
- tags:
16
- - '!*' # Do not execute on tags
17
- pull_request:
18
- branches:
19
- - '*'
20
- # Allow manually triggering the workflow.
21
- workflow_dispatch:
22
-
23
- # Cancels all previous workflow runs for the same branch that have not yet completed.
24
- concurrency:
25
- # The concurrency group contains the workflow name and the branch name.
26
- group: "${{ github.workflow }}-${{ github.ref }}"
27
- cancel-in-progress: true
28
-
29
- jobs:
30
- test:
31
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
32
- name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
33
- runs-on: ubuntu-latest
34
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
35
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
36
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
37
- strategy:
38
- matrix:
39
- include:
40
- # Ruby 3.4
41
- - ruby: "ruby"
42
- appraisal: "current"
43
- exec_cmd: "rake test"
44
- gemfile: "Appraisal.root"
45
- rubygems: latest
46
- bundler: latest
47
-
48
- # truffleruby-24.1 (targets Ruby 3.3 compatibility)
49
- - ruby: "truffleruby"
50
- appraisal: "current"
51
- exec_cmd: "rake test"
52
- gemfile: "Appraisal.root"
53
- rubygems: default
54
- bundler: default
55
-
56
- # jruby-10.0 (targets Ruby 3.4 compatibility)
57
- - ruby: "jruby"
58
- appraisal: "current"
59
- exec_cmd: "rake test"
60
- gemfile: "Appraisal.root"
61
- rubygems: default
62
- bundler: default
63
-
64
- steps:
65
- - name: Checkout
66
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
67
- uses: actions/checkout@v6
68
-
69
- - name: Setup Ruby & RubyGems
70
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
71
- uses: ruby/setup-ruby@v1
72
- with:
73
- ruby-version: ${{ matrix.ruby }}
74
- rubygems: ${{ matrix.rubygems }}
75
- bundler: ${{ matrix.bundler }}
76
- bundler-cache: false
77
-
78
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
79
- # We need to do this first to get appraisal installed.
80
- # NOTE: This does not use the primary Gemfile at all.
81
- - name: Install Root Appraisal
82
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
83
- run: bundle
84
-
85
- - name: "[Attempt 1] Install Root Appraisal"
86
- id: bundleAttempt1
87
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
88
- run: bundle
89
- # Continue to the next step on failure
90
- continue-on-error: true
91
-
92
- # Effectively an automatic retry of the previous step.
93
- - name: "[Attempt 2] Install Root Appraisal"
94
- id: bundleAttempt2
95
- # If bundleAttempt1 failed, try again here; Otherwise skip.
96
- if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
97
- run: bundle
98
-
99
- - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
100
- id: bundleAppraisalAttempt1
101
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
102
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
103
- # Continue to the next step on failure
104
- continue-on-error: true
105
-
106
- # Effectively an automatic retry of the previous step.
107
- - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
108
- id: bundleAppraisalAttempt2
109
- # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
110
- if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
111
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
112
-
113
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
114
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
115
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,117 +0,0 @@
1
- # Targets the evergreen latest release of ruby, truffleruby, and jruby
2
- # and tests against the HEAD of runtime dependencies
3
- name: Runtime Deps @ HEAD
4
-
5
- permissions:
6
- contents: read
7
-
8
- env:
9
- K_SOUP_COV_DO: false
10
-
11
- on:
12
- push:
13
- branches:
14
- - 'main'
15
- - '*-stable'
16
- tags:
17
- - '!*' # Do not execute on tags
18
- pull_request:
19
- branches:
20
- - '*'
21
- # Allow manually triggering the workflow.
22
- workflow_dispatch:
23
-
24
- # Cancels all previous workflow runs for the same branch that have not yet completed.
25
- concurrency:
26
- # The concurrency group contains the workflow name and the branch name.
27
- group: "${{ github.workflow }}-${{ github.ref }}"
28
- cancel-in-progress: true
29
-
30
- jobs:
31
- test:
32
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
33
- name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
34
- runs-on: ubuntu-latest
35
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
36
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
37
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
38
- strategy:
39
- fail-fast: true
40
- matrix:
41
- include:
42
- # Ruby 3.4
43
- - ruby: "ruby"
44
- appraisal: "dep-heads"
45
- exec_cmd: "rake test"
46
- gemfile: "Appraisal.root"
47
- rubygems: latest
48
- bundler: latest
49
-
50
- # truffleruby-24.1 (targets Ruby 3.3 compatibility)
51
- - ruby: "truffleruby"
52
- appraisal: "dep-heads"
53
- exec_cmd: "rake test"
54
- gemfile: "Appraisal.root"
55
- rubygems: default
56
- bundler: default
57
-
58
- # jruby-10.0 (targets Ruby 3.4 compatibility)
59
- - ruby: "jruby"
60
- appraisal: "dep-heads"
61
- exec_cmd: "rake test"
62
- gemfile: "Appraisal.root"
63
- rubygems: default
64
- bundler: default
65
-
66
- steps:
67
- - name: Checkout
68
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
69
- uses: actions/checkout@v6
70
-
71
- - name: Setup Ruby & RubyGems
72
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
73
- uses: ruby/setup-ruby@v1
74
- with:
75
- ruby-version: ${{ matrix.ruby }}
76
- rubygems: ${{ matrix.rubygems }}
77
- bundler: ${{ matrix.bundler }}
78
- bundler-cache: false
79
-
80
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
81
- # We need to do this first to get appraisal installed.
82
- # NOTE: This does not use the primary Gemfile at all.
83
- - name: Install Root Appraisal
84
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
85
- run: bundle
86
-
87
- - name: "[Attempt 1] Install Root Appraisal"
88
- id: bundleAttempt1
89
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
90
- run: bundle
91
- # Continue to the next step on failure
92
- continue-on-error: true
93
-
94
- # Effectively an automatic retry of the previous step.
95
- - name: "[Attempt 2] Install Root Appraisal"
96
- id: bundleAttempt2
97
- # If bundleAttempt1 failed, try again here; Otherwise skip.
98
- if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
99
- run: bundle
100
-
101
- - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
102
- id: bundleAppraisalAttempt1
103
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
104
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
105
- # Continue to the next step on failure
106
- continue-on-error: true
107
-
108
- # Effectively an automatic retry of the previous step.
109
- - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
110
- id: bundleAppraisalAttempt2
111
- # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
112
- if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
113
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
114
-
115
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
116
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
117
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,20 +0,0 @@
1
- # Dependency Review Action
2
- #
3
- # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
4
- #
5
- # Source repository: https://github.com/actions/dependency-review-action
6
- # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
7
- name: 'Dependency Review'
8
- on: [pull_request]
9
-
10
- permissions:
11
- contents: read
12
-
13
- jobs:
14
- dependency-review:
15
- runs-on: ubuntu-latest
16
- steps:
17
- - name: 'Checkout Repository'
18
- uses: actions/checkout@v6
19
- - name: 'Dependency Review'
20
- uses: actions/dependency-review-action@v4
@@ -1,39 +0,0 @@
1
- name: Discord Notify
2
-
3
- on:
4
- check_run:
5
- types: [completed]
6
- discussion:
7
- types: [ created ]
8
- discussion_comment:
9
- types: [ created ]
10
- fork:
11
- gollum:
12
- issues:
13
- types: [ opened ]
14
- issue_comment:
15
- types: [ created ]
16
- pull_request:
17
- types: [ opened, reopened, closed ]
18
- release:
19
- types: [ published ]
20
- watch:
21
- types: [ started ]
22
-
23
- # A workflow run is made up of one or more jobs that can run sequentially or in parallel
24
- jobs:
25
- # This workflow contains a single job called "build"
26
- notify:
27
- if: false
28
- # The type of runner that the job will run on
29
- runs-on: ubuntu-latest
30
-
31
- # Steps represent a sequence of tasks that will be executed as part of the job
32
- steps:
33
- - name: Actions Status Discord
34
- uses: sarisia/actions-status-discord@v1
35
- if: always()
36
- with:
37
- webhook: ${{ secrets.DISCORD_WEBHOOK }}
38
- status: ${{ job.status }}
39
- username: GitHub Actions
@@ -1,117 +0,0 @@
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
- test:
30
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].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 }}/${{ matrix.gemfile }}.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: "rake test"
45
- gemfile: "Appraisal.root"
46
- rubygems: default
47
- bundler: default
48
-
49
- # # Turn back on once allow-failures is a feature of GHA.
50
- # # truffleruby-head
51
- # - ruby: "truffleruby-head"
52
- # appraisal: "head"
53
- # exec_cmd: "rake test"
54
- # gemfile: "Appraisal.root"
55
- # rubygems: default
56
- # bundler: default
57
-
58
- # jruby-head
59
- - ruby: "jruby-head"
60
- appraisal: "head"
61
- exec_cmd: "rake test"
62
- gemfile: "Appraisal.root"
63
- rubygems: default
64
- bundler: default
65
-
66
- steps:
67
- - name: Checkout
68
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
69
- uses: actions/checkout@v6
70
-
71
- - name: Setup Ruby & RubyGems
72
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
73
- uses: ruby/setup-ruby@v1
74
- with:
75
- ruby-version: ${{ matrix.ruby }}
76
- rubygems: ${{ matrix.rubygems }}
77
- bundler: ${{ matrix.bundler }}
78
- bundler-cache: false
79
-
80
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
81
- # We need to do this first to get appraisal installed.
82
- # NOTE: This does not use the primary Gemfile at all.
83
- - name: Install Root Appraisal
84
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
85
- run: bundle
86
-
87
- - name: "[Attempt 1] Install Root Appraisal"
88
- id: bundleAttempt1
89
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
90
- run: bundle
91
- # Continue to the next step on failure
92
- continue-on-error: true
93
-
94
- # Effectively an automatic retry of the previous step.
95
- - name: "[Attempt 2] Install Root Appraisal"
96
- id: bundleAttempt2
97
- # If bundleAttempt1 failed, try again here; Otherwise skip.
98
- if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
99
- run: bundle
100
-
101
- - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
102
- id: bundleAppraisalAttempt1
103
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
104
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
105
- # Continue to the next step on failure
106
- continue-on-error: true
107
-
108
- # Effectively an automatic retry of the previous step.
109
- - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
110
- id: bundleAppraisalAttempt2
111
- # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
112
- if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
113
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
114
-
115
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
116
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
117
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,116 +0,0 @@
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
- test:
30
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].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 }}/${{ matrix.gemfile }}.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: "rake test"
45
- gemfile: "Appraisal.root"
46
- rubygems: default
47
- bundler: default
48
-
49
- # truffleruby-head
50
- - ruby: "truffleruby-head"
51
- appraisal: "head"
52
- exec_cmd: "rake test"
53
- gemfile: "Appraisal.root"
54
- rubygems: default
55
- bundler: default
56
-
57
- # jruby-head
58
- - ruby: "jruby-head"
59
- appraisal: "head"
60
- exec_cmd: "rake test"
61
- gemfile: "Appraisal.root"
62
- rubygems: default
63
- bundler: default
64
-
65
- steps:
66
- - name: Checkout
67
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
68
- uses: actions/checkout@v6
69
-
70
- - name: Setup Ruby & RubyGems
71
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
72
- uses: ruby/setup-ruby@v1
73
- with:
74
- ruby-version: ${{ matrix.ruby }}
75
- rubygems: ${{ matrix.rubygems }}
76
- bundler: ${{ matrix.bundler }}
77
- bundler-cache: false
78
-
79
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
80
- # We need to do this first to get appraisal installed.
81
- # NOTE: This does not use the primary Gemfile at all.
82
- - name: Install Root Appraisal
83
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
84
- run: bundle
85
-
86
- - name: "[Attempt 1] Install Root Appraisal"
87
- id: bundleAttempt1
88
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
89
- run: bundle
90
- # Continue to the next step on failure
91
- continue-on-error: true
92
-
93
- # Effectively an automatic retry of the previous step.
94
- - name: "[Attempt 2] Install Root Appraisal"
95
- id: bundleAttempt2
96
- # If bundleAttempt1 failed, try again here; Otherwise skip.
97
- if: ${{ steps.bundleAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
98
- run: bundle
99
-
100
- - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
101
- id: bundleAppraisalAttempt1
102
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
103
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
104
- # Continue to the next step on failure
105
- continue-on-error: true
106
-
107
- # Effectively an automatic retry of the previous step.
108
- - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
109
- id: bundleAppraisalAttempt2
110
- # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
111
- if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
112
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
113
-
114
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
115
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
116
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,82 +0,0 @@
1
- name: JRuby
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: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
31
- name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
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 }}/${{ matrix.gemfile }}.gemfile
36
- strategy:
37
- matrix:
38
- include:
39
- # # NoMethodError: undefined method `resolve_feature_path' for #<Array:0x566f4659>
40
- # # <main> at /home/runner/.rubies/jruby-9.3.15.0/lib/ruby/gems/shared/gems/erb-4.0.4-java/lib/erb/util.rb:9
41
- # # jruby-9.3 (targets Ruby 2.6 compatibility)
42
- # - ruby: "jruby-9.3"
43
- # appraisal: "ruby-2-6"
44
- # exec_cmd: "rake test"
45
- # gemfile: "Appraisal.root"
46
- # rubygems: default
47
- # bundler: default
48
-
49
- # jruby-9.4 (targets Ruby 3.1 compatibility)
50
- - ruby: "jruby-9.4"
51
- appraisal: "ruby-3-1"
52
- exec_cmd: "rake test"
53
- gemfile: "Appraisal.root"
54
- rubygems: default
55
- bundler: default
56
-
57
- steps:
58
- - name: Checkout
59
- if: ${{ !env.ACT }}
60
- uses: actions/checkout@v6
61
-
62
- - name: Setup Ruby & RubyGems
63
- if: ${{ !env.ACT }}
64
- uses: ruby/setup-ruby@v1
65
- with:
66
- ruby-version: ${{ matrix.ruby }}
67
- rubygems: ${{ matrix.rubygems }}
68
- bundler: ${{ matrix.bundler }}
69
- bundler-cache: false
70
-
71
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
72
- # We need to do this first to get appraisal installed.
73
- # NOTE: This does not use the primary Gemfile at all.
74
- - name: Install Root Appraisal
75
- if: ${{ !env.ACT }}
76
- run: bundle
77
- - name: Appraisal for ${{ matrix.appraisal }}
78
- if: ${{ !env.ACT }}
79
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
80
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
81
- if: ${{ !env.ACT }}
82
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}