Fix ruby 2 7 #630
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: rake | ||
on: | ||
push: | ||
branches: [ main ] | ||
paths-ignore: | ||
- 'docs/**' | ||
- '**.adoc' | ||
- '**.md' | ||
- .github/workflows/release.yml | ||
pull_request: | ||
workflow_dispatch: | ||
concurrency: | ||
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}' | ||
cancel-in-progress: true | ||
# bundler/rubygems 2.3.22 is a minimal requirement to support gnu/musl differentiation | ||
# https://github.com/rubygems/rubygems/pull/4488 | ||
jobs: | ||
rubocop: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
- name: Install Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: 3.1 | ||
bundler-cache: true | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
- name: Rubocop | ||
run: bundle exec rake rubocop | ||
rake: | ||
name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }} | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ruby: [ '3.2', '3.1', '3.0', '2.7' ] | ||
os: [ ubuntu-latest, windows-latest, macos-latest ] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
- name: Setup packages | ||
if: startsWith(matrix.os, 'macos') | ||
run: brew install autoconf automake libtool | ||
- name: Install Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: ${{ matrix.ruby }} | ||
# Rice gem has issues with bundler cache | ||
# more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126 | ||
# but it is not the only issue | ||
bundler-cache: false | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
with: | ||
bundler-cache: true | ||
- name: Process cache | ||
uses: actions/cache@v3 | ||
id: cache | ||
with: | ||
path: lib/expressir/express/express_parser.* | ||
key: v4-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('ext/express-parser/extconf.rb', 'ext/express-parser/antlrgen/**', 'ext/express-parser/express_parser.cpp', '.git/modules/ext/express-parser/antlr4-upstream/HEAD') }} | ||
- name: Build native extension | ||
if: steps.cache.outputs.cache-hit != 'true' | ||
run: bundle exec rake compile | ||
- name: Run tests | ||
run: | | ||
bundle exec rake | ||
cat .rspec_status | ||
# test release workflow | ||
pack-ruby: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
- name: Setup Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: '3.1' | ||
bundler: ${{ env.BUNDLER_VER }} | ||
bundler-cache: false | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
- name: Build gem without native extension | ||
run: gem build expressir.gemspec | ||
- name: Package gem without native extension | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: pkg-ruby | ||
path: expressir-*.gem | ||
pack: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
platform: [ linux-gnu, windows, darwin ] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
- name: Setup Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: '3.1' | ||
bundler-cache: false | ||
bundler: ${{ env.BUNDLER_VER }} | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
- name: Enable swap | ||
run: | | ||
sudo fallocate -l 15g /compile.swap | ||
sudo chmod 600 /compile.swap | ||
sudo mkswap /compile.swap | ||
sudo swapon /compile.swap | ||
sudo swapon --all --verbose | ||
- name: Build gem with native extension | ||
run: bundle exec rake gem:${{ matrix.platform }} | ||
- name: Package gem with native extension | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: pkg-${{ matrix.platform }} | ||
path: pkg/*.gem | ||
verify-ruby: | ||
name: verify ruby gem on ruby-${{ matrix.ruby }} ${{ matrix.os }} | ||
needs: pack-ruby | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ruby: [ '3.2', '3.1', '3.0', '2.7' ] | ||
os: [ ubuntu-latest, windows-latest, macos-latest ] | ||
steps: | ||
- name: Install Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: ${{ matrix.ruby }} | ||
bundler-cache: false | ||
bundler: ${{ env.BUNDLER_VER }} | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
- name: Download packaged gem | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: pkg-ruby | ||
path: pkg | ||
- name: Install gem | ||
run: gem install -l pkg/expressir-*.gem | ||
- name: Verify | ||
run: | | ||
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'") | ||
ruby bin/rspec | ||
cat .rspec_status || echo ".rspec_status was not found" | ||
verify-darwin: | ||
name: verify MacOS binary gem on ruby-${{ matrix.ruby }} | ||
needs: pack | ||
runs-on: macos-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ruby: [ '3.2', '3.1', '3.0', '2.7' ] | ||
steps: | ||
- name: Install Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: ${{ matrix.ruby }} | ||
bundler-cache: false | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
- name: Download packaged gem | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: pkg-darwin | ||
path: pkg | ||
- name: Install binary gem | ||
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem | ||
# MacOS with have something like x86_64-darwin19, others just x86_64-linux | ||
- name: Verify | ||
run: | | ||
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'") | ||
ruby bin/rspec | ||
cat .rspec_status || echo ".rspec_status was not found" | ||
verify-linux-gnu: | ||
name: verify Linux (gnu) binary gem on ruby-${{ matrix.ruby }} | ||
needs: pack | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ruby: [ '3.2', '3.1', '3.0', '2.7' ] | ||
steps: | ||
- name: Install Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: ${{ matrix.ruby }} | ||
bundler-cache: false | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
- name: Download packaged gem | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: pkg-linux-gnu | ||
path: pkg | ||
- name: Install binary gem | ||
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM")-gnu.gem | ||
- name: Verify | ||
run: | | ||
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'") | ||
ruby bin/rspec | ||
cat .rspec_status || echo ".rspec_status was not found" | ||
verify-windows: | ||
name: verify Windows binary gem on ruby-${{ matrix.ruby }} | ||
needs: pack | ||
continue-on-error: true | ||
runs-on: windows-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ruby: [ '3.2', '3.1', '3.0', '2.7' ] | ||
steps: | ||
- name: Install Ruby | ||
uses: ruby/setup-ruby@master | ||
with: | ||
ruby-version: ${{ matrix.ruby }} | ||
bundler-cache: false | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Bundle | ||
run: bundle install --jobs 4 --retry 3 | ||
- name: Download packaged gem | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: pkg-windows | ||
path: pkg | ||
- name: Install binary gem | ||
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem | ||
- name: Verify | ||
run: | | ||
cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'") | ||
ruby bin/rspec | ||
cat .rspec_status || echo ".rspec_status was not found" |