Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
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
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# <<structuredmerge:git-drivers>> do not edit below this line
*.rb diff=smorg-ruby
*.rb diff=smorg-rb
# <</structuredmerge:git-drivers>>
16 changes: 13 additions & 3 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ concurrency:

jobs:
coverage:
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
name: Code Coverage on ${{ matrix.ruby }}@current
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
Expand All @@ -54,12 +54,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup Ruby & RubyGems
uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
uses: ruby/setup-ruby@a30dfa457ad68707b8b910ac3a244714b61c0626 # v1.320.0
with:
ruby-version: "${{ matrix.ruby }}"
rubygems: "${{ matrix.rubygems }}"
Expand All @@ -79,6 +79,16 @@ jobs:
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' }}
run: bundle exec appraisal ${{ matrix.appraisal }} install

- name: Restore RSpec status log
if: "${{!env.ACT}}"
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspec_status
key: rspec-status-coverage-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
restore-keys: |
rspec-status-coverage-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
rspec-status-coverage-${{matrix.ruby}}-${{matrix.appraisal}}-

- name: Tests for ${{ matrix.ruby }}@current via ${{ matrix.exec_cmd }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}

Expand Down
16 changes: 13 additions & 3 deletions .github/workflows/current.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ concurrency:

jobs:
test:
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
runs-on: ubuntu-latest
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
Expand All @@ -45,12 +45,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup Ruby & RubyGems
uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
uses: ruby/setup-ruby@a30dfa457ad68707b8b910ac3a244714b61c0626 # v1.320.0
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
Expand All @@ -70,5 +70,15 @@ jobs:
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' }}
run: bundle exec appraisal ${{ matrix.appraisal }} install

- name: Restore RSpec status log
if: "${{!env.ACT}}"
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspec_status
key: rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
restore-keys: |
rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-

- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
148 changes: 122 additions & 26 deletions .github/workflows/dep-heads.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Targets the evergreen latest release of ruby, truffleruby, and jruby
# and tests against the HEAD of runtime dependencies
# Targets enabled evergreen Ruby engines and tests against the HEAD of runtime dependencies
name: Runtime Deps @ HEAD

permissions:
Expand Down Expand Up @@ -28,13 +27,13 @@ concurrency:
cancel-in-progress: true

jobs:
test:
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
ruby:
if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
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 }}/Appraisal.root.gemfile
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
strategy:
fail-fast: true
matrix:
Expand All @@ -43,54 +42,151 @@ jobs:
- ruby: "ruby"
appraisal: "dep-heads"
exec_cmd: "kettle-test"
# Run directly from the generated appraisal Gemfile so setup-ruby
# does not bootstrap Appraisal.root.gemfile against dependency
# sources before this dep-heads appraisal is selected.
# This makes gemfiles/dep_heads.gemfile required checked-in output
# for repositories using this generated workflow.
bundle_gemfile: "gemfiles/dep_heads.gemfile"
direct_bundle: true
rubygems: latest
bundler: latest

# truffleruby-24.1 (targets Ruby 3.3 compatibility)
steps:
- name: Checkout
if: ${{ !env.ACT }}
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup Ruby & RubyGems
if: ${{ !env.ACT }}
uses: ruby/setup-ruby@a30dfa457ad68707b8b910ac3a244714b61c0626 # v1.320.0
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
bundler: ${{ matrix.bundler }}
bundler-cache: true

- name: Restore RSpec status log
if: "${{!env.ACT}}"
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspec_status
key: rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
restore-keys: |
rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-

- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
if: ${{ !env.ACT }}
run: bundle exec ${{ matrix.exec_cmd }}

truffleruby:
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'truffleruby/'))"
name: Specs truffleruby@dep-heads
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
strategy:
fail-fast: true
matrix:
include:
- ruby: "truffleruby"
appraisal: "dep-heads"
exec_cmd: "kettle-test"
# Run directly from the generated appraisal Gemfile so setup-ruby
# does not bootstrap Appraisal.root.gemfile against dependency
# sources before this dep-heads appraisal is selected.
# This makes gemfiles/dep_heads.gemfile required checked-in output
# for repositories using this generated workflow.
bundle_gemfile: "gemfiles/dep_heads.gemfile"
direct_bundle: true
rubygems: default
bundler: default

# jruby-10.0 (targets Ruby 3.4 compatibility)
steps:
- name: Checkout
if: ${{ !env.ACT }}
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup Ruby & RubyGems
if: ${{ !env.ACT }}
uses: ruby/setup-ruby@a30dfa457ad68707b8b910ac3a244714b61c0626 # v1.320.0
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
bundler: ${{ matrix.bundler }}
bundler-cache: true

- name: Restore RSpec status log
if: "${{!env.ACT}}"
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspec_status
key: rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
restore-keys: |
rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-

- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
if: ${{ !env.ACT }}
run: bundle exec ${{ matrix.exec_cmd }}

jruby:
if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/'))"
name: Specs jruby@dep-heads
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
strategy:
fail-fast: true
matrix:
include:
- ruby: "jruby"
appraisal: "dep-heads"
exec_cmd: "kettle-test"
# Run directly from the generated appraisal Gemfile so setup-ruby
# does not bootstrap Appraisal.root.gemfile against dependency
# sources before this dep-heads appraisal is selected.
# This makes gemfiles/dep_heads.gemfile required checked-in output
# for repositories using this generated workflow.
bundle_gemfile: "gemfiles/dep_heads.gemfile"
direct_bundle: true
rubygems: default
bundler: default
experimental: true

steps:
- name: Checkout
if: ${{ !env.ACT || (! startsWith(matrix.ruby, 'jruby') && !startsWith(matrix.ruby, 'truffleruby')) }}
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
if: ${{ !env.ACT }}
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup Ruby & RubyGems
if: ${{ !env.ACT || (! startsWith(matrix.ruby, 'jruby') && !startsWith(matrix.ruby, 'truffleruby')) }}
uses: ruby/setup-ruby@d45b1a4e94b71acab930e56e79c6aa188764e7f9 # v1.316.0
if: ${{ !env.ACT }}
uses: ruby/setup-ruby@a30dfa457ad68707b8b910ac3a244714b61c0626 # v1.320.0
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
bundler: ${{ matrix.bundler }}
bundler-cache: true

- name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
id: bundleAppraisalAttempt1
if: ${{ !env.ACT || (! startsWith(matrix.ruby, 'jruby') && !startsWith(matrix.ruby, 'truffleruby')) }}
run: bundle exec appraisal ${{ matrix.appraisal }} install
# 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: bundleAppraisalAttempt2
# If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' && (!env.ACT || (! startsWith(matrix.ruby, 'jruby') && !startsWith(matrix.ruby, 'truffleruby'))) }}
run: bundle exec appraisal ${{ matrix.appraisal }} install
- name: Restore RSpec status log
if: "${{!env.ACT}}"
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspec_status
key: rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
restore-keys: |
rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-

- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
if: ${{ !env.ACT || (! startsWith(matrix.ruby, 'jruby') && !startsWith(matrix.ruby, 'truffleruby')) }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
if: ${{ !env.ACT }}
run: bundle exec ${{ matrix.exec_cmd }}
2 changes: 1 addition & 1 deletion .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: 'Dependency Review'
Expand Down
Loading
Loading