Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
e86da63
📝 Documentation updates
pboling May 16, 2025
0517d7f
👷 Fix CodeCov integration
pboling May 16, 2025
260343c
👷 Coverage workflow needs write privilege on pull_requests
pboling May 16, 2025
cb0311f
⬆️ Allow jwt v3, and faraday head
pboling May 16, 2025
2cd83bd
🔨 kettle-soup-cover rake task
pboling May 16, 2025
514be0e
🔨 stone_checksums rake task
pboling May 16, 2025
db7f1b4
🚨 Linting
pboling May 16, 2025
208286d
🔨 binstub for appraisal
pboling May 16, 2025
9b98828
🚨 Linting
pboling May 16, 2025
9a940f1
🚚 Ruby 3.1 to legacy workflow
pboling May 16, 2025
41463bc
💚 JWT.encode requires minimum key length of 2048
pboling May 16, 2025
cbfefad
🚚 Disable danger workflow
pboling May 16, 2025
f2030e4
🚚 Disable danger workflow
pboling May 16, 2025
bb471b2
✅ test against rack v1.2, v1.6, v2, v3, and head
pboling May 16, 2025
99e71db
✅ Remove ruby 2.2 test harness
pboling May 16, 2025
1dbd44b
✅ Test matrix for multi_xml v0.5, v0.6, v0.7, and head
pboling May 16, 2025
d022da0
✅ Test matrix for logger v1.2, v1.5, v1.7, and head
pboling May 16, 2025
bfdbbcd
➕ logger
pboling May 16, 2025
62c80bd
⬆️ silent_stream v1.0.11
pboling May 16, 2025
9700efe
📝 Improve Keep-a-Changelog formatting
pboling May 16, 2025
54ade7e
📝 Improve Keep-a-Changelog formatting
pboling May 16, 2025
830fb08
📝 Documentation updates
pboling May 16, 2025
20349af
📝 Documentation updates
pboling May 16, 2025
068e90b
📝 Documentation updates
pboling May 16, 2025
2411513
📝 Documentation updates
pboling May 16, 2025
5342967
📝 Documentation updates
pboling May 16, 2025
b19c167
🧑‍💻 devcontainer
pboling May 16, 2025
bee66a1
🧑‍💻 hoist permissions in GHA workflows
pboling May 16, 2025
464ba4a
🚨 Linting
pboling May 16, 2025
7449a10
🧑‍💻 Allow concurrent local development of rubocop-lts
pboling May 16, 2025
780a024
🚨 Linting
pboling May 16, 2025
ed0a26a
📝 Documentation
pboling May 16, 2025
b55bf50
🧑‍💻 REEK HAS FOUND SMELLS
pboling May 16, 2025
9dcd76c
🔖 Prepare release v2.0.10
pboling May 16, 2025
e12649d
📝 Documentation
pboling May 16, 2025
364e695
👷 Automatic GHA workflow step retry
pboling May 16, 2025
64ff836
👷 Attempt different value for filename
pboling May 16, 2025
e00fe4f
✏️ Fix syntax error in heads.yml
pboling May 16, 2025
8bd1ab2
👷 Add back XML export
pboling May 16, 2025
075cc1f
👷 Fix deprecation warning
pboling May 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ruby
{
"name": "Ruby",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/ruby:1-3-bookworm",

// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],

// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "ruby --version",

// Configure tool-specific properties.
"customizations" : {
"jetbrains" : {
"backend" : "RubyMine"
}
},

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}
3 changes: 3 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to
# Internal Debugging Controls
export DEBUG=false # do not allow byebug statements (override in .env.local)

# Concurrently developing the rubocop-lts suite?
export RUBOCOP_LTS_LOCAL=false

# .env would override anything in this file, if `dotenv` is uncommented below.
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments,
# and that is why we generally want to leave it commented out.
Expand Down
File renamed without changes.
3 changes: 3 additions & 0 deletions .github/workflows/ancient.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: MRI 2.3, 2.4, 2.5 (EOL)

permissions:
contents: read

on:
push:
branches:
Expand Down
53 changes: 29 additions & 24 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
name: Test Coverage

permissions:
contents: read
pull-requests: write

env:
K_SOUP_COV_MIN_BRANCH: 100
K_SOUP_COV_MIN_LINE: 100
K_SOUP_COV_MIN_HARD: true
K_SOUP_COV_FORMATTERS: "html,rcov,lcov,json,tty"
K_SOUP_COV_FORMATTERS: "html,xml,rcov,lcov,json,tty"
K_SOUP_COV_DO: true
K_SOUP_COV_MULTI_FORMATTERS: true
K_SOUP_COV_COMMAND_NAME: "RSpec Coverage"
Expand All @@ -22,9 +26,6 @@ on:
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
Expand Down Expand Up @@ -73,6 +74,30 @@ jobs:
- name: Tests for ${{ matrix.ruby }}@current via ${{ matrix.exec_cmd }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}

# Do SaaS coverage uploads first
- name: Upload coverage to Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Upload coverage to QLTY
uses: qltysh/qlty-action/coverage@main
with:
token: ${{secrets.QLTY_COVERAGE_TOKEN}}
files: coverage/.resultset.json
continue-on-error: ${{ matrix.experimental != 'false' }}

# Build will fail here if coverage upload fails
# which will hopefully be noticed for the lack of code coverage comments
- name: Upload coverage to CodeCov
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true # optional (default = false)
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true # optional (default = false)

# Then PR comments
- name: Code Coverage Summary Report
uses: irongut/[email protected]
if: ${{ github.event_name == 'pull_request' }}
Expand All @@ -95,23 +120,3 @@ jobs:
recreate: true
path: code-coverage-results.md
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Upload coverage to Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Upload coverage to QLTY
uses: qltysh/qlty-action/coverage@main
with:
coverage-token: ${{secrets.QLTY_COVERAGE_TOKEN}}
files: coverage/.resultset.json
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Upload coverage to CodeCov
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true # optional (default = false)
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true # optional (default = false)
87 changes: 87 additions & 0 deletions .github/workflows/current-runtime-heads.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Targets the evergreen latest release of ruby, truffleruby, and jruby
# and tests against the HEAD of runtime dependencies
name: Runtime Deps @ HEAD

permissions:
contents: read

env:
K_SOUP_COV_DO: false

on:
push:
branches:
- 'main'
- '*-stable'
tags:
- '!*' # Do not execute on tags
pull_request:
branches:
- '*'
# Allow manually triggering the workflow.
workflow_dispatch:

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
test:
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
strategy:
matrix:
include:
# Ruby 3.4
- ruby: "ruby"
appraisal: "current-runtime-heads"
exec_cmd: "rake test"
gemfile: "Appraisal.root"
rubygems: latest
bundler: latest

# truffleruby-24.1
# (according to documentation: targets Ruby 3.3 compatibility)
# (according to runtime: targets Ruby 3.2 compatibility)
- ruby: "truffleruby"
appraisal: "current-runtime-heads"
exec_cmd: "rake test"
gemfile: "Appraisal.root"
rubygems: default
bundler: default

# jruby-10.0 (targets Ruby 3.4 compatibility)
- ruby: "jruby"
appraisal: "current-runtime-heads"
exec_cmd: "rake test"
gemfile: "Appraisal.root"
rubygems: default
bundler: default

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Ruby & RubyGems
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
bundler: ${{ matrix.bundler }}
bundler-cache: false

# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
# We need to do this first to get appraisal installed.
# NOTE: This does not use the primary Gemfile at all.
- name: Install Root Appraisal
run: bundle
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
- name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
6 changes: 3 additions & 3 deletions .github/workflows/current.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Targets the evergreen latest release of ruby, truffleruby, and jruby
name: Current

permissions:
contents: read

env:
K_SOUP_COV_DO: false

Expand All @@ -17,9 +20,6 @@ on:
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
Expand Down
22 changes: 17 additions & 5 deletions .github/workflows/heads.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: Heads

permissions:
contents: read

env:
K_SOUP_COV_DO: false

Expand All @@ -16,9 +19,6 @@ on:
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
Expand Down Expand Up @@ -77,9 +77,21 @@ jobs:
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
# We need to do this first to get appraisal installed.
# NOTE: This does not use the primary Gemfile at all.
- name: Install Root Appraisal
- name: "Install Root Appraisal"
run: bundle
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}

- name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
id: bundleAttempt1
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
# Continue to the next step on failure
continue-on-error: true

# Effectively an automatic retry of the previous step.
- name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
id: bundleAttempt2
# If bundleAttempt1 failed, try again here; Otherwise skip.
if: steps.bundleAttempt1.outcome == 'failure'
run: bundle exec appraisal ${{ matrix.appraisal }} bundle

- name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
6 changes: 3 additions & 3 deletions .github/workflows/jruby.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: JRuby

permissions:
contents: read

env:
K_SOUP_COV_DO: false

Expand All @@ -16,9 +19,6 @@ on:
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
Expand Down
16 changes: 12 additions & 4 deletions .github/workflows/legacy.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
name: MRI 3.0 (EOL)
name: MRI 3.0, 3.1 (EOL)

permissions:
contents: read

env:
K_SOUP_COV_DO: false
Expand All @@ -16,9 +19,6 @@ on:
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
Expand All @@ -37,6 +37,14 @@ jobs:
fail-fast: false
matrix:
include:
# Ruby 3.1
- ruby: "ruby-3.1"
appraisal: "ruby-3-1"
exec_cmd: "rake test"
gemfile: "Appraisal.root"
rubygems: latest
bundler: latest

# Ruby 3.0
- ruby: "ruby-3.0"
appraisal: "ruby-3-0"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Targets the evergreen latest release of ruby, truffleruby, and jruby
name: MacOS

permissions:
contents: read

env:
K_SOUP_COV_DO: false

Expand All @@ -17,9 +20,6 @@ on:
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/style.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: Style

permissions:
contents: read

on:
push:
branches:
Expand All @@ -13,9 +16,6 @@ on:
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
Expand Down
Loading