Skip to content

fix: return code in cli #700

fix: return code in cli

fix: return code in cli #700

Workflow file for this run

name: rake
on:
push:
branches: [ main ]
paths-ignore:
- 'docs/**'
- '**.adoc'
- '**.md'
- .github/workflows/release.yml
- .github/workflows/codeql.yml
pull_request:
workflow_dispatch:
concurrency:
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
cancel-in-progress: true
env:
RUBYGEM_VER: 3.4.22
BUNDLER_VER: 2.4.22
# Forcing bundler version to ensure that it is consistent everywhere and
# does not cause bundler gem reinstalls
# 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: ${{ env.BUNDLER_VER }}
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 }}
bundler: ${{ env.BUNDLER_VER }}
# 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
- name: Process cache
uses: actions/cache@v4
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
rake-alpine:
name: test on ruby-${{ matrix.ruby }} alpine container
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
container: ruby:${{ matrix.ruby }}-alpine
steps:
- name: Install packages
run: |
apk --no-cache --upgrade add build-base git bash tar
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Upgrade RubyGems
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
- name: Bundle
run: |
git config --global --add safe.directory $PWD
bundle install --jobs 4 --retry 3
- name: Process cache
uses: actions/cache@v4
id: cache
with:
path: lib/expressir/express/express_parser.*
key: v4-alpine-${{ 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@v4
with:
name: pkg-ruby
path: expressir-*.gem
pack:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
platform: [ linux-gnu, linux-musl, 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@v4
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@v4
with:
name: pkg-ruby
path: pkg
- name: Install gem
run: gem install -l pkg/expressir-*.gem
- name: Verify
run: |
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
ruby bin/rspec
cat .rspec_status || echo ".rspec_status was not found"
verify-ruby-linux-musl:
name: verify ruby gem on ruby-${{ matrix.ruby }} on alpine container
needs: pack-ruby
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
container: ruby:${{ matrix.ruby }}-alpine
steps:
- name: Install packages
run: |
apk --no-cache --upgrade add build-base git bash tar
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Upgrade RubyGems
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
- name: Bundle
run: |
git config --global --add safe.directory $PWD
bundle install --jobs 4 --retry 3
- name: Download packaged gem
uses: actions/download-artifact@v4
with:
name: pkg-ruby
path: pkg
- name: Install gem
run: gem install -l pkg/expressir-*.gem
- name: Verify
run: |
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
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
bundler: ${{ env.BUNDLER_VER }}
- name: Checkout
uses: actions/checkout@v4
- name: Bundle
run: bundle install --jobs 4 --retry 3
- name: Download packaged gem
uses: actions/download-artifact@v4
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 Gem::Specification.find_by_name('expressir').gem_dir")
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
bundler: ${{ env.BUNDLER_VER }}
- name: Upgrade RubyGems
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
- name: Checkout
uses: actions/checkout@v4
- name: Bundle
run: bundle install --jobs 4 --retry 3
- name: Download packaged gem
uses: actions/download-artifact@v4
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 Gem::Specification.find_by_name('expressir').gem_dir")
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
bundler: ${{ env.BUNDLER_VER }}
- name: Checkout
uses: actions/checkout@v4
- name: Bundle
run: bundle install --jobs 4 --retry 3
- name: Download packaged gem
uses: actions/download-artifact@v4
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 Gem::Specification.find_by_name('expressir').gem_dir")
ruby bin/rspec
cat .rspec_status || echo ".rspec_status was not found"
verify-linux-musl:
name: verify Linux (musl) 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' ]
container: ruby:${{ matrix.ruby }}-alpine
steps:
- name: Install packages
run: |
apk --no-cache --upgrade add build-base git bash tar
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Upgrade RubyGems
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
- name: Bundle
run: |
git config --global --add safe.directory $PWD
bundle install --jobs 4 --retry 3
- name: Download packaged gem
uses: actions/download-artifact@v4
with:
name: pkg-linux-musl
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 Gem::Specification.find_by_name('expressir').gem_dir")
ruby bin/rspec
cat .rspec_status || echo ".rspec_status was not found"