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,72 +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
- # jruby-9.4 (targets Ruby 3.1 compatibility)
40
- - ruby: "jruby-9.4"
41
- appraisal: "ruby-3-1"
42
- exec_cmd: "rake test"
43
- gemfile: "Appraisal.root"
44
- rubygems: default
45
- bundler: default
46
-
47
- steps:
48
- - name: Checkout
49
- if: ${{ !env.ACT }}
50
- uses: actions/checkout@v6
51
-
52
- - name: Setup Ruby & RubyGems
53
- if: ${{ !env.ACT }}
54
- uses: ruby/setup-ruby@v1
55
- with:
56
- ruby-version: ${{ matrix.ruby }}
57
- rubygems: ${{ matrix.rubygems }}
58
- bundler: ${{ matrix.bundler }}
59
- bundler-cache: false
60
-
61
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
62
- # We need to do this first to get appraisal installed.
63
- # NOTE: This does not use the primary Gemfile at all.
64
- - name: Install Root Appraisal
65
- if: ${{ !env.ACT }}
66
- run: bundle
67
- - name: Appraisal for ${{ matrix.appraisal }}
68
- if: ${{ !env.ACT }}
69
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
70
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
71
- if: ${{ !env.ACT }}
72
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,76 +0,0 @@
1
- name: MRI 3.0, 3.1 (EOL)
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
- fail-fast: false
38
- matrix:
39
- include:
40
- # Ruby 3.0
41
- - ruby: "ruby-3.0"
42
- appraisal: "ruby-3-0"
43
- exec_cmd: "rake test"
44
- gemfile: "Appraisal.root"
45
- rubygems: '3.5.23'
46
- bundler: '2.5.23'
47
-
48
- # Ruby 3.1
49
- - ruby: "ruby-3.1"
50
- appraisal: "ruby-3-1"
51
- exec_cmd: "rake test"
52
- gemfile: "Appraisal.root"
53
- rubygems: '3.6.9'
54
- bundler: '2.6.9'
55
-
56
- steps:
57
- - name: Checkout
58
- uses: actions/checkout@v6
59
-
60
- - name: Setup Ruby & RubyGems
61
- uses: ruby/setup-ruby@v1
62
- with:
63
- ruby-version: ${{ matrix.ruby }}
64
- rubygems: ${{ matrix.rubygems }}
65
- bundler: ${{ matrix.bundler }}
66
- bundler-cache: false
67
-
68
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
69
- # We need to do this first to get appraisal installed.
70
- # NOTE: This does not use the primary Gemfile at all.
71
- - name: Install Root Appraisal
72
- run: bundle
73
- - name: Appraisal for ${{ matrix.appraisal }}
74
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
75
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
76
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,40 +0,0 @@
1
- name: Apache SkyWalking Eyes
2
-
3
- permissions:
4
- contents: read
5
-
6
- on:
7
- push:
8
- branches:
9
- - 'main'
10
- - '*-stable'
11
- tags:
12
- - '!*' # Do not execute on tags
13
- pull_request:
14
- branches:
15
- - '*'
16
- # Allow manually triggering the workflow.
17
- workflow_dispatch:
18
-
19
- # Cancels all previous workflow runs for the same branch that have not yet completed.
20
- concurrency:
21
- # The concurrency group contains the workflow name and the branch name.
22
- group: "${{ github.workflow }}-${{ github.ref }}"
23
- cancel-in-progress: true
24
-
25
- jobs:
26
- license-check:
27
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
28
- runs-on: ubuntu-latest
29
- steps:
30
- - name: Checkout
31
- uses: actions/checkout@v6
32
-
33
- - name: Check Dependencies' License
34
- uses: apache/skywalking-eyes/dependency@main
35
- with:
36
- config: .licenserc.yaml
37
- # Ruby packages declared as dependencies in gemspecs or Gemfiles are
38
- # typically consumed as binaries; enable weak-compatibility
39
- # so permissive and weak-copyleft combinations are treated as compatible.
40
- flags: --weak-compatible
@@ -1,85 +0,0 @@
1
- ---
2
- # Lock/Unlock Deps Pattern
3
- #
4
- # Two often conflicting goals resolved!
5
- #
6
- # - unlocked_deps.yml
7
- # - All runtime & dev dependencies, but does not have a `gemfiles/*.gemfile.lock` committed
8
- # - Uses an Appraisal2 "unlocked_deps" gemfile, and the current MRI Ruby release
9
- # - Know when new dependency releases will break local dev with unlocked dependencies
10
- # - Broken workflow indicates that new releases of dependencies may not work
11
- #
12
- # - locked_deps.yml
13
- # - All runtime & dev dependencies, and has a `Gemfile.lock` committed
14
- # - Uses the project's main Gemfile, and the current MRI Ruby release
15
- # - Matches what contributors and maintainers use locally for development
16
- # - Broken workflow indicates that a new contributor will have a bad time
17
- #
18
- name: Deps Locked
19
-
20
- permissions:
21
- contents: read
22
-
23
- env:
24
- # Running coverage, but not validating minimum coverage,
25
- # because it would be redundant with the coverage workflow.
26
- # Also we can validate all output formats without breaking CodeCov,
27
- # since we aren't submitting these reports anywhere.
28
- K_SOUP_COV_MIN_BRANCH: 71
29
- K_SOUP_COV_MIN_LINE: 86
30
- K_SOUP_COV_MIN_HARD: false
31
- K_SOUP_COV_FORMATTERS: "html,xml,rcov,lcov,json,tty"
32
- K_SOUP_COV_DO: true
33
- K_SOUP_COV_MULTI_FORMATTERS: true
34
- K_SOUP_COV_COMMAND_NAME: "Test Coverage"
35
-
36
- on:
37
- push:
38
- branches:
39
- - 'main'
40
- - '*-stable'
41
- tags:
42
- - '!*' # Do not execute on tags
43
- pull_request:
44
- branches:
45
- - '*'
46
- # Allow manually triggering the workflow.
47
- workflow_dispatch:
48
-
49
- # Cancels all previous workflow runs for the same branch that have not yet completed.
50
- concurrency:
51
- # The concurrency group contains the workflow name and the branch name.
52
- group: "${{ github.workflow }}-${{ github.ref }}"
53
- cancel-in-progress: true
54
-
55
- jobs:
56
- test:
57
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
58
- name: Default rake task w/ main Gemfile.lock ${{ matrix.name_extra || '' }}
59
- runs-on: ubuntu-latest
60
- continue-on-error: ${{ matrix.experimental }}
61
- strategy:
62
- fail-fast: false
63
- matrix:
64
- include:
65
- # Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
66
- - ruby: "ruby"
67
- exec_cmd: "rake"
68
- rubygems: latest
69
- bundler: latest
70
- experimental: false
71
-
72
- steps:
73
- - name: Checkout
74
- uses: actions/checkout@v6
75
-
76
- - name: Setup Ruby & RubyGems
77
- uses: ruby/setup-ruby@v1
78
- with:
79
- ruby-version: ${{ matrix.ruby }}
80
- rubygems: ${{ matrix.rubygems }}
81
- bundler: ${{ matrix.bundler }}
82
- bundler-cache: true
83
-
84
- - name: Checks the kitchen sink via ${{ matrix.exec_cmd }}
85
- run: bundle exec ${{ matrix.exec_cmd }}
@@ -1,40 +0,0 @@
1
- name: Open Collective Backers
2
-
3
- on:
4
- schedule:
5
- # Run once a week on Sunday at 12:00 AM UTC
6
- - cron: '0 0 * * 0'
7
- workflow_dispatch:
8
-
9
- permissions:
10
- contents: write
11
-
12
- jobs:
13
- update-backers:
14
- runs-on: ubuntu-latest
15
- steps:
16
- - uses: actions/checkout@v6
17
- with:
18
- persist-credentials: false
19
- - name: Setup Ruby & RubyGems
20
- uses: ruby/setup-ruby@v1
21
- with:
22
- ruby-version: ruby
23
- rubygems: default
24
- bundler: default
25
- bundler-cache: true
26
-
27
- - name: README Update
28
- env:
29
- # Keep GITHUB_TOKEN for any tools/scripts expecting it, mapped to the same secret
30
- GITHUB_TOKEN: ${{ secrets.README_UPDATER_TOKEN }}
31
- README_UPDATER_TOKEN: ${{ secrets.README_UPDATER_TOKEN }}
32
- REPO: ${{ github.repository }}
33
- run: |
34
- git config user.name 'autobolt'
35
- git config user.email 'autobots@9thbit.net'
36
- # Use the configured token for authenticated pushes
37
- git remote set-url origin "https://x-access-token:${README_UPDATER_TOKEN}@github.com/${REPO}.git"
38
- bin/kettle-readme-backers
39
- # Push back to the same branch/ref that triggered the workflow (default branch for schedule)
40
- git push origin HEAD
@@ -1,67 +0,0 @@
1
- name: Style
2
-
3
- permissions:
4
- contents: read
5
-
6
- on:
7
- push:
8
- branches:
9
- - 'main'
10
- - '*-stable'
11
- tags:
12
- - '!*' # Do not execute on tags
13
- pull_request:
14
- branches:
15
- - '*'
16
- # Allow manually triggering the workflow.
17
- workflow_dispatch:
18
-
19
- # Cancels all previous workflow runs for the same branch that have not yet completed.
20
- concurrency:
21
- # The concurrency group contains the workflow name and the branch name.
22
- group: "${{ github.workflow }}-${{ github.ref }}"
23
- cancel-in-progress: true
24
-
25
- jobs:
26
- rubocop:
27
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
28
- name: Style on ${{ matrix.ruby }}@current
29
- runs-on: ubuntu-latest
30
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
31
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
32
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
33
- strategy:
34
- fail-fast: false
35
- matrix:
36
- include:
37
- # Style
38
- - ruby: "ruby"
39
- appraisal: "style"
40
- exec_cmd: "rake rubocop_gradual:check"
41
- gemfile: "Appraisal.root"
42
- rubygems: latest
43
- bundler: latest
44
-
45
- steps:
46
- - name: Checkout
47
- uses: actions/checkout@v6
48
-
49
- - name: Setup Ruby & RubyGems
50
- uses: ruby/setup-ruby@v1
51
- with:
52
- ruby-version: ${{ matrix.ruby }}
53
- rubygems: ${{ matrix.rubygems }}
54
- bundler: ${{ matrix.bundler }}
55
- bundler-cache: false
56
-
57
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
58
- # We need to do this first to get appraisal installed.
59
- # NOTE: This does not use the primary Gemfile at all.
60
- - name: Install Root Appraisal
61
- run: bundle
62
- - name: Appraisal for ${{ matrix.appraisal }}
63
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
64
- - name: Run ${{ matrix.appraisal }} checks via ${{ matrix.exec_cmd }}
65
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
66
- - name: Validate RBS Types
67
- run: bundle exec appraisal ${{ matrix.appraisal }} bin/rbs validate
@@ -1,75 +0,0 @@
1
- name: MRI Non-EOL
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
- matrix:
38
- include:
39
- # Ruby 3.2
40
- - ruby: "ruby-3.2"
41
- appraisal: "ruby-3-2"
42
- exec_cmd: "rake test"
43
- gemfile: "Appraisal.root"
44
- rubygems: latest
45
- bundler: latest
46
-
47
- # Ruby 3.3
48
- - ruby: "ruby-3.3"
49
- appraisal: "ruby-3-3"
50
- exec_cmd: "rake test"
51
- gemfile: "Appraisal.root"
52
- rubygems: latest
53
- bundler: latest
54
-
55
- steps:
56
- - name: Checkout
57
- uses: actions/checkout@v6
58
-
59
- - name: Setup Ruby & RubyGems
60
- uses: ruby/setup-ruby@v1
61
- with:
62
- ruby-version: ${{ matrix.ruby }}
63
- rubygems: ${{ matrix.rubygems }}
64
- bundler: ${{ matrix.bundler }}
65
- bundler-cache: false
66
-
67
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
68
- # We need to do this first to get appraisal installed.
69
- # NOTE: This does not use the primary Gemfile at all.
70
- - name: Install Root Appraisal
71
- run: bundle
72
- - name: Appraisal for ${{ matrix.ruby }} ${{ matrix.appraisal }}
73
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
74
- - name: Tests for ${{ matrix.ruby }} ${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
75
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,99 +0,0 @@
1
- name: Truffle
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
- # NOTE: truffleruby does not support upgrading rubygems.
40
- # truffleruby-23.1 (targets Ruby 3.2 compatibility)
41
- - ruby: "truffleruby-23.1"
42
- appraisal: "ruby-3-2"
43
- exec_cmd: "rake test"
44
- gemfile: "Appraisal.root"
45
- rubygems: default
46
- bundler: default
47
-
48
- steps:
49
- - name: Checkout
50
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
51
- uses: actions/checkout@v6
52
-
53
- - name: Setup Ruby & RubyGems
54
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
55
- uses: ruby/setup-ruby@v1
56
- with:
57
- ruby-version: ${{ matrix.ruby }}
58
- rubygems: ${{ matrix.rubygems }}
59
- bundler: ${{ matrix.bundler }}
60
- bundler-cache: false
61
-
62
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
63
- # We need to do this first to get appraisal installed.
64
- # NOTE: This does not use the primary Gemfile at all.
65
- - name: Install Root Appraisal
66
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
67
- run: bundle
68
-
69
- - name: "[Attempt 1] Install Root Appraisal"
70
- id: bundleAttempt1
71
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
72
- run: bundle
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] Install Root Appraisal"
78
- id: bundleAttempt2
79
- # If bundleAttempt1 failed, try again here; Otherwise skip.
80
- 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')) }}
81
- run: bundle
82
-
83
- - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
84
- id: bundleAppraisalAttempt1
85
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
86
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
87
- # Continue to the next step on failure
88
- continue-on-error: true
89
-
90
- # Effectively an automatic retry of the previous step.
91
- - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
92
- id: bundleAppraisalAttempt2
93
- # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
94
- 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')) }}
95
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
96
-
97
- - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
98
- if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
99
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -1,84 +0,0 @@
1
- ---
2
- # Lock/Unlock Deps Pattern
3
- #
4
- # Two often conflicting goals resolved!
5
- #
6
- # - unlocked_deps.yml
7
- # - All runtime & dev dependencies, but does not have a `gemfiles/*.gemfile.lock` committed
8
- # - Uses an Appraisal2 "unlocked_deps" gemfile, and the current MRI Ruby release
9
- # - Know when new dependency releases will break local dev with unlocked dependencies
10
- # - Broken workflow indicates that new releases of dependencies may not work
11
- #
12
- # - locked_deps.yml
13
- # - All runtime & dev dependencies, and has a `Gemfile.lock` committed
14
- # - Uses the project's main Gemfile, and the current MRI Ruby release
15
- # - Matches what contributors and maintainers use locally for development
16
- # - Broken workflow indicates that a new contributor will have a bad time
17
- #
18
- name: Deps Unlocked
19
-
20
- permissions:
21
- contents: read
22
-
23
- env:
24
- K_SOUP_COV_DO: false
25
-
26
- on:
27
- push:
28
- branches:
29
- - 'main'
30
- - '*-stable'
31
- tags:
32
- - '!*' # Do not execute on tags
33
- pull_request:
34
- branches:
35
- - '*'
36
- # Allow manually triggering the workflow.
37
- workflow_dispatch:
38
-
39
- # Cancels all previous workflow runs for the same branch that have not yet completed.
40
- concurrency:
41
- # The concurrency group contains the workflow name and the branch name.
42
- group: "${{ github.workflow }}-${{ github.ref }}"
43
- cancel-in-progress: true
44
-
45
- jobs:
46
- test:
47
- if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
48
- name: Default rake task w/ unlocked deps ${{ matrix.name_extra || '' }}
49
- runs-on: ubuntu-latest
50
- continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
51
- env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
52
- BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
53
- strategy:
54
- matrix:
55
- include:
56
- # Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
57
- - ruby: "ruby"
58
- appraisal: "unlocked_deps"
59
- exec_cmd: "rake"
60
- gemfile: "Appraisal.root"
61
- rubygems: latest
62
- bundler: latest
63
-
64
- steps:
65
- - name: Checkout
66
- uses: actions/checkout@v6
67
-
68
- - name: Setup Ruby & RubyGems
69
- uses: ruby/setup-ruby@v1
70
- with:
71
- ruby-version: ${{ matrix.ruby }}
72
- rubygems: ${{ matrix.rubygems }}
73
- bundler: ${{ matrix.bundler }}
74
- bundler-cache: false
75
-
76
- # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
77
- # We need to do this first to get appraisal installed.
78
- # NOTE: This does not use the primary Gemfile at all.
79
- - name: Install Root Appraisal
80
- run: bundle
81
- - name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}
82
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle
83
- - name: Run ${{ matrix.exec_cmd }} on ${{ matrix.ruby }}@${{ matrix.appraisal }}
84
- run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}