kettle-dev 1.0.0 → 1.0.2
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/.devcontainer/devcontainer.json +26 -0
- data/.envrc +42 -0
- data/.git-hooks/commit-msg +41 -0
- data/.git-hooks/commit-subjects-goalie.txt +8 -0
- data/.git-hooks/footer-template.erb.txt +16 -0
- data/.git-hooks/prepare-commit-msg +20 -0
- data/.github/FUNDING.yml +13 -0
- data/.github/dependabot.yml +11 -0
- data/.github/workflows/ancient.yml +80 -0
- data/.github/workflows/auto-assign.yml +21 -0
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/coverage.yml +130 -0
- data/.github/workflows/current.yml +88 -0
- data/.github/workflows/dependency-review.yml +20 -0
- data/.github/workflows/discord-notifier.yml +38 -0
- data/.github/workflows/heads.yml +87 -0
- data/.github/workflows/jruby.yml +79 -0
- data/.github/workflows/legacy.yml +70 -0
- data/.github/workflows/locked_deps.yml +88 -0
- data/.github/workflows/opencollective.yml +40 -0
- data/.github/workflows/style.yml +67 -0
- data/.github/workflows/supported.yml +85 -0
- data/.github/workflows/truffle.yml +78 -0
- data/.github/workflows/unlocked_deps.yml +87 -0
- data/.github/workflows/unsupported.yml +78 -0
- data/.gitignore +48 -0
- data/.gitlab-ci.yml +45 -0
- data/.junie/guidelines-rbs.md +49 -0
- data/.junie/guidelines.md +132 -0
- data/.opencollective.yml +3 -0
- data/.qlty/qlty.toml +79 -0
- data/.rspec +8 -0
- data/.rubocop.yml +13 -0
- data/.simplecov +7 -0
- data/.tool-versions +1 -0
- data/.yard_gfm_support.rb +22 -0
- data/.yardopts +11 -0
- data/Appraisal.root.gemfile +12 -0
- data/Appraisals +120 -0
- data/CHANGELOG.md +26 -5
- data/Gemfile +32 -0
- data/Rakefile +99 -0
- data/checksums/kettle-dev-1.0.1.gem.sha256 +1 -0
- data/checksums/kettle-dev-1.0.1.gem.sha512 +1 -0
- data/checksums/kettle-dev-1.0.2.gem.sha256 +1 -0
- data/checksums/kettle-dev-1.0.2.gem.sha512 +1 -0
- data/exe/kettle-commit-msg +185 -0
- data/exe/kettle-readme-backers +355 -0
- data/exe/kettle-release +327 -0
- data/gemfiles/modular/coverage.gemfile +6 -0
- data/gemfiles/modular/documentation.gemfile +11 -0
- data/gemfiles/modular/style.gemfile +16 -0
- data/lib/kettle/dev/rakelib/appraisal.rake +40 -0
- data/lib/kettle/dev/rakelib/bench.rake +58 -0
- data/lib/kettle/dev/rakelib/bundle_audit.rake +18 -0
- data/lib/kettle/dev/rakelib/ci.rake +348 -0
- data/lib/kettle/dev/rakelib/install.rake +304 -0
- data/lib/kettle/dev/rakelib/reek.rake +34 -0
- data/lib/kettle/dev/rakelib/require_bench.rake +7 -0
- data/lib/kettle/dev/rakelib/rubocop_gradual.rake +9 -0
- data/lib/kettle/dev/rakelib/spec_test.rake +42 -0
- data/lib/kettle/dev/rakelib/template.rake +413 -0
- data/lib/kettle/dev/rakelib/yard.rake +33 -0
- data/lib/kettle/dev/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +74 -5
- metadata.gz.sig +0 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
name: Heads
|
2
|
+
|
3
|
+
env:
|
4
|
+
K_SOUP_COV_DO: false
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- 'main'
|
10
|
+
tags:
|
11
|
+
- '!*' # Do not execute on tags
|
12
|
+
pull_request:
|
13
|
+
# types specification prevents double build on push & pull request
|
14
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
15
|
+
types: [opened, synchronize]
|
16
|
+
branches:
|
17
|
+
- '*'
|
18
|
+
# Allow manually triggering the workflow.
|
19
|
+
workflow_dispatch:
|
20
|
+
|
21
|
+
permissions:
|
22
|
+
contents: read
|
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: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !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
|
+
# NOTE: Heads use default rubygems / bundler; their defaults are custom, unreleased, and from the future!
|
43
|
+
# ruby-head
|
44
|
+
- ruby: "ruby-head"
|
45
|
+
appraisal: "head"
|
46
|
+
exec_cmd: "rake test"
|
47
|
+
gemfile: "Appraisal.root"
|
48
|
+
rubygems: default
|
49
|
+
bundler: default
|
50
|
+
|
51
|
+
# # truffleruby-head
|
52
|
+
# - ruby: "truffleruby-head"
|
53
|
+
# appraisal: "head"
|
54
|
+
# exec_cmd: "rake test"
|
55
|
+
# gemfile: "Appraisal.root"
|
56
|
+
# rubygems: default
|
57
|
+
# bundler: default
|
58
|
+
|
59
|
+
# jruby-head
|
60
|
+
- ruby: "jruby-head"
|
61
|
+
appraisal: "head"
|
62
|
+
exec_cmd: "rake test"
|
63
|
+
gemfile: "Appraisal.root"
|
64
|
+
rubygems: default
|
65
|
+
bundler: default
|
66
|
+
|
67
|
+
steps:
|
68
|
+
- name: Checkout
|
69
|
+
uses: actions/checkout@v5
|
70
|
+
|
71
|
+
- name: Setup Ruby & RubyGems
|
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 main Gemfile at all.
|
82
|
+
- name: Install Root Appraisal
|
83
|
+
run: bundle
|
84
|
+
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
85
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
86
|
+
- name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
|
87
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
name: JRuby
|
2
|
+
|
3
|
+
env:
|
4
|
+
K_SOUP_COV_DO: false
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- 'main'
|
10
|
+
tags:
|
11
|
+
- '!*' # Do not execute on tags
|
12
|
+
pull_request:
|
13
|
+
# types specification prevents double build on push & pull request
|
14
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
15
|
+
types: [opened, synchronize]
|
16
|
+
branches:
|
17
|
+
- '*'
|
18
|
+
# Allow manually triggering the workflow.
|
19
|
+
workflow_dispatch:
|
20
|
+
|
21
|
+
permissions:
|
22
|
+
contents: read
|
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: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !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-22.04
|
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
|
+
matrix:
|
40
|
+
include:
|
41
|
+
# # NoMethodError: undefined method `resolve_feature_path' for #<Array:0x566f4659>
|
42
|
+
# # <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
|
43
|
+
# # jruby-9.3 (targets Ruby 2.6 compatibility)
|
44
|
+
# - ruby: "jruby-9.3"
|
45
|
+
# appraisal: "ruby-2-6"
|
46
|
+
# exec_cmd: "rake test"
|
47
|
+
# gemfile: "Appraisal.root"
|
48
|
+
# rubygems: default
|
49
|
+
# bundler: default
|
50
|
+
|
51
|
+
# jruby-9.4 (targets Ruby 3.1 compatibility)
|
52
|
+
- ruby: "jruby-9.4"
|
53
|
+
appraisal: "ruby-3-1"
|
54
|
+
exec_cmd: "rake test"
|
55
|
+
gemfile: "Appraisal.root"
|
56
|
+
rubygems: default
|
57
|
+
bundler: default
|
58
|
+
|
59
|
+
steps:
|
60
|
+
- name: Checkout
|
61
|
+
uses: actions/checkout@v5
|
62
|
+
|
63
|
+
- name: Setup Ruby & RubyGems
|
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 main Gemfile at all.
|
74
|
+
- name: Install Root Appraisal
|
75
|
+
run: bundle
|
76
|
+
- name: Appraisal for ${{ matrix.appraisal }}
|
77
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
78
|
+
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
|
79
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
name: MRI 3.0 (EOL)
|
2
|
+
|
3
|
+
env:
|
4
|
+
K_SOUP_COV_DO: false
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- 'main'
|
10
|
+
tags:
|
11
|
+
- '!*' # Do not execute on tags
|
12
|
+
pull_request:
|
13
|
+
# types specification prevents double build on push & pull request
|
14
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
15
|
+
types: [opened, synchronize]
|
16
|
+
branches:
|
17
|
+
- '*'
|
18
|
+
# Allow manually triggering the workflow.
|
19
|
+
workflow_dispatch:
|
20
|
+
|
21
|
+
permissions:
|
22
|
+
contents: read
|
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: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !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-22.04
|
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: false
|
40
|
+
matrix:
|
41
|
+
include:
|
42
|
+
# Ruby 3.0
|
43
|
+
- ruby: "ruby-3.0"
|
44
|
+
appraisal: "ruby-3-0"
|
45
|
+
exec_cmd: "rake test"
|
46
|
+
gemfile: "Appraisal.root"
|
47
|
+
rubygems: '3.5.23'
|
48
|
+
bundler: '2.5.23'
|
49
|
+
|
50
|
+
steps:
|
51
|
+
- name: Checkout
|
52
|
+
uses: actions/checkout@v5
|
53
|
+
|
54
|
+
- name: Setup Ruby & RubyGems
|
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 main Gemfile at all.
|
65
|
+
- name: Install Root Appraisal
|
66
|
+
run: bundle
|
67
|
+
- name: Appraisal for ${{ matrix.appraisal }}
|
68
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
69
|
+
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
|
70
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,88 @@
|
|
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
|
+
# types specification prevents double build on push & pull request
|
45
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
46
|
+
types: [opened, synchronize]
|
47
|
+
branches:
|
48
|
+
- '*'
|
49
|
+
# Allow manually triggering the workflow.
|
50
|
+
workflow_dispatch:
|
51
|
+
|
52
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
53
|
+
concurrency:
|
54
|
+
# The concurrency group contains the workflow name and the branch name.
|
55
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
56
|
+
cancel-in-progress: true
|
57
|
+
|
58
|
+
jobs:
|
59
|
+
test:
|
60
|
+
if: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')
|
61
|
+
name: Default rake task w/ main Gemfile.lock ${{ matrix.name_extra || '' }}
|
62
|
+
runs-on: ubuntu-latest
|
63
|
+
continue-on-error: ${{ matrix.experimental }}
|
64
|
+
strategy:
|
65
|
+
fail-fast: false
|
66
|
+
matrix:
|
67
|
+
include:
|
68
|
+
# Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
|
69
|
+
- ruby: "ruby"
|
70
|
+
exec_cmd: "rake"
|
71
|
+
rubygems: latest
|
72
|
+
bundler: latest
|
73
|
+
experimental: false
|
74
|
+
|
75
|
+
steps:
|
76
|
+
- name: Checkout
|
77
|
+
uses: actions/checkout@v5
|
78
|
+
|
79
|
+
- name: Setup Ruby & RubyGems
|
80
|
+
uses: ruby/setup-ruby@v1
|
81
|
+
with:
|
82
|
+
ruby-version: ${{ matrix.ruby }}
|
83
|
+
rubygems: ${{ matrix.rubygems }}
|
84
|
+
bundler: ${{ matrix.bundler }}
|
85
|
+
bundler-cache: true
|
86
|
+
|
87
|
+
- name: Checks the kitchen sink via ${{ matrix.exec_cmd }}
|
88
|
+
run: bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,40 @@
|
|
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@v5
|
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
|
@@ -0,0 +1,67 @@
|
|
1
|
+
name: Style
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- 'main'
|
7
|
+
tags:
|
8
|
+
- '!*' # Do not execute on tags
|
9
|
+
pull_request:
|
10
|
+
# types specification prevents double build on push & pull request
|
11
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
12
|
+
types: [opened, synchronize]
|
13
|
+
branches:
|
14
|
+
- '*'
|
15
|
+
# Allow manually triggering the workflow.
|
16
|
+
workflow_dispatch:
|
17
|
+
|
18
|
+
permissions:
|
19
|
+
contents: read
|
20
|
+
|
21
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
22
|
+
concurrency:
|
23
|
+
# The concurrency group contains the workflow name and the branch name.
|
24
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
25
|
+
cancel-in-progress: true
|
26
|
+
|
27
|
+
jobs:
|
28
|
+
rubocop:
|
29
|
+
if: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')
|
30
|
+
name: Style on ${{ matrix.ruby }}@current
|
31
|
+
runs-on: ubuntu-latest
|
32
|
+
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
33
|
+
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
34
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
|
35
|
+
strategy:
|
36
|
+
fail-fast: false
|
37
|
+
matrix:
|
38
|
+
include:
|
39
|
+
# Style
|
40
|
+
- ruby: "ruby"
|
41
|
+
appraisal: "style"
|
42
|
+
exec_cmd: "rake rubocop_gradual:check"
|
43
|
+
gemfile: "Appraisal.root"
|
44
|
+
rubygems: latest
|
45
|
+
bundler: latest
|
46
|
+
|
47
|
+
steps:
|
48
|
+
- name: Checkout
|
49
|
+
uses: actions/checkout@v5
|
50
|
+
|
51
|
+
- name: Setup Ruby & RubyGems
|
52
|
+
uses: ruby/setup-ruby@v1
|
53
|
+
with:
|
54
|
+
ruby-version: ${{ matrix.ruby }}
|
55
|
+
rubygems: ${{ matrix.rubygems }}
|
56
|
+
bundler: ${{ matrix.bundler }}
|
57
|
+
bundler-cache: false
|
58
|
+
|
59
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
60
|
+
# We need to do this first to get appraisal installed.
|
61
|
+
# NOTE: This does not use the main Gemfile at all.
|
62
|
+
- name: Install Root Appraisal
|
63
|
+
run: bundle
|
64
|
+
- name: Appraisal for ${{ matrix.appraisal }}
|
65
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
66
|
+
- name: Run ${{ matrix.appraisal }} checks via ${{ matrix.exec_cmd }}
|
67
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
name: MRI Non-EOL
|
2
|
+
|
3
|
+
env:
|
4
|
+
K_SOUP_COV_DO: false
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- 'main'
|
10
|
+
tags:
|
11
|
+
- '!*' # Do not execute on tags
|
12
|
+
pull_request:
|
13
|
+
# types specification prevents double build on push & pull request
|
14
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
15
|
+
types: [opened, synchronize]
|
16
|
+
branches:
|
17
|
+
- '*'
|
18
|
+
# Allow manually triggering the workflow.
|
19
|
+
workflow_dispatch:
|
20
|
+
|
21
|
+
permissions:
|
22
|
+
contents: read
|
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: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !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
|
+
matrix:
|
40
|
+
include:
|
41
|
+
# Ruby 3.1
|
42
|
+
- ruby: "ruby-3.1"
|
43
|
+
appraisal: "ruby-3-1"
|
44
|
+
exec_cmd: "rake test"
|
45
|
+
gemfile: "Appraisal.root"
|
46
|
+
rubygems: latest
|
47
|
+
bundler: latest
|
48
|
+
|
49
|
+
# Ruby 3.2
|
50
|
+
- ruby: "ruby-3.2"
|
51
|
+
appraisal: "ruby-3-2"
|
52
|
+
exec_cmd: "rake test"
|
53
|
+
gemfile: "Appraisal.root"
|
54
|
+
rubygems: latest
|
55
|
+
bundler: latest
|
56
|
+
|
57
|
+
# Ruby 3.3
|
58
|
+
- ruby: "ruby-3.3"
|
59
|
+
appraisal: "ruby-3-3"
|
60
|
+
exec_cmd: "rake test"
|
61
|
+
gemfile: "Appraisal.root"
|
62
|
+
rubygems: latest
|
63
|
+
bundler: latest
|
64
|
+
|
65
|
+
steps:
|
66
|
+
- name: Checkout
|
67
|
+
uses: actions/checkout@v5
|
68
|
+
|
69
|
+
- name: Setup Ruby & RubyGems
|
70
|
+
uses: ruby/setup-ruby@v1
|
71
|
+
with:
|
72
|
+
ruby-version: ${{ matrix.ruby }}
|
73
|
+
rubygems: ${{ matrix.rubygems }}
|
74
|
+
bundler: ${{ matrix.bundler }}
|
75
|
+
bundler-cache: false
|
76
|
+
|
77
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
78
|
+
# We need to do this first to get appraisal installed.
|
79
|
+
# NOTE: This does not use the main Gemfile at all.
|
80
|
+
- name: Install Root Appraisal
|
81
|
+
run: bundle
|
82
|
+
- name: Appraisal for ${{ matrix.ruby }} ${{ matrix.appraisal }}
|
83
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
84
|
+
- name: Tests for ${{ matrix.ruby }} ${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
|
85
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
name: Truffle
|
2
|
+
|
3
|
+
env:
|
4
|
+
K_SOUP_COV_DO: false
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- 'main'
|
10
|
+
tags:
|
11
|
+
- '!*' # Do not execute on tags
|
12
|
+
pull_request:
|
13
|
+
# types specification prevents double build on push & pull request
|
14
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
15
|
+
types: [opened, synchronize]
|
16
|
+
branches:
|
17
|
+
- '*'
|
18
|
+
# Allow manually triggering the workflow.
|
19
|
+
workflow_dispatch:
|
20
|
+
|
21
|
+
permissions:
|
22
|
+
contents: read
|
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: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !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-22.04
|
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
|
+
matrix:
|
40
|
+
include:
|
41
|
+
# NOTE: truffleruby does not support upgrading rubygems.
|
42
|
+
# truffleruby-23.0 (targets Ruby 3.1 compatibility)
|
43
|
+
- ruby: "truffleruby-23.0"
|
44
|
+
appraisal: "ruby-3-1"
|
45
|
+
exec_cmd: "rake test"
|
46
|
+
gemfile: "Appraisal.root"
|
47
|
+
rubygems: default
|
48
|
+
bundler: default
|
49
|
+
|
50
|
+
# truffleruby-23.1 (targets Ruby 3.2 compatibility)
|
51
|
+
- ruby: "truffleruby-23.1"
|
52
|
+
appraisal: "ruby-3-2"
|
53
|
+
exec_cmd: "rake test"
|
54
|
+
gemfile: "Appraisal.root"
|
55
|
+
rubygems: default
|
56
|
+
bundler: default
|
57
|
+
|
58
|
+
steps:
|
59
|
+
- name: Checkout
|
60
|
+
uses: actions/checkout@v5
|
61
|
+
|
62
|
+
- name: Setup Ruby & RubyGems
|
63
|
+
uses: ruby/setup-ruby@v1
|
64
|
+
with:
|
65
|
+
ruby-version: ${{ matrix.ruby }}
|
66
|
+
rubygems: ${{ matrix.rubygems }}
|
67
|
+
bundler: ${{ matrix.bundler }}
|
68
|
+
bundler-cache: false
|
69
|
+
|
70
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
71
|
+
# We need to do this first to get appraisal installed.
|
72
|
+
# NOTE: This does not use the main Gemfile at all.
|
73
|
+
- name: Install Root Appraisal
|
74
|
+
run: bundle
|
75
|
+
- name: Appraisal for ${{ matrix.appraisal }}
|
76
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
77
|
+
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
|
78
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,87 @@
|
|
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
|
+
# types specification prevents double build on push & pull request
|
35
|
+
# See: https://github.com/Shopify/ruby-style-guide/pull/235#issuecomment-777623642
|
36
|
+
types: [opened, synchronize]
|
37
|
+
branches:
|
38
|
+
- '*'
|
39
|
+
# Allow manually triggering the workflow.
|
40
|
+
workflow_dispatch:
|
41
|
+
|
42
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
43
|
+
concurrency:
|
44
|
+
# The concurrency group contains the workflow name and the branch name.
|
45
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
46
|
+
cancel-in-progress: true
|
47
|
+
|
48
|
+
jobs:
|
49
|
+
test:
|
50
|
+
if: (github.event_name == 'push' || github.event.pull_request.head.repo.owner.login != 'kettle-rb') && !contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')
|
51
|
+
name: Default rake task w/ unlocked deps ${{ matrix.name_extra || '' }}
|
52
|
+
runs-on: ubuntu-latest
|
53
|
+
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
54
|
+
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
55
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
|
56
|
+
strategy:
|
57
|
+
matrix:
|
58
|
+
include:
|
59
|
+
# Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
|
60
|
+
- ruby: "ruby"
|
61
|
+
appraisal_name: "unlocked_deps"
|
62
|
+
exec_cmd: "rake"
|
63
|
+
gemfile: "Appraisal.root"
|
64
|
+
rubygems: latest
|
65
|
+
bundler: latest
|
66
|
+
|
67
|
+
steps:
|
68
|
+
- name: Checkout
|
69
|
+
uses: actions/checkout@v5
|
70
|
+
|
71
|
+
- name: Setup Ruby & RubyGems
|
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 main Gemfile at all.
|
82
|
+
- name: Install Root Appraisal
|
83
|
+
run: bundle
|
84
|
+
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal_name }}
|
85
|
+
run: bundle exec appraisal ${{ matrix.appraisal_name }} bundle
|
86
|
+
- name: Run ${{ matrix.exec_cmd }} on ${{ matrix.ruby }}@${{ matrix.appraisal_name }}
|
87
|
+
run: bundle exec appraisal ${{ matrix.appraisal_name }} bundle exec ${{ matrix.exec_cmd }}
|