Merge pull request #1372 from froydnj/froydnj-const-location-variables #3099
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: Main | |
concurrency: | |
group: "${{github.workflow}}-${{github.ref}}" | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.2" | |
bundler-cache: true | |
- name: Lint | |
run: bundle exec rake lint | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Run Ruby tests | |
run: bundle exec rake | |
shell: bash | |
build-ffi: | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: [ruby, jruby, truffleruby] | |
runs-on: ubuntu-latest | |
env: | |
YARP_FFI_BACKEND: "true" | |
steps: | |
- uses: actions/checkout@v3 | |
# The Gemfile.lock is different with YARP_FFI_BACKEND=true for CRuby | |
- run: rm Gemfile.lock | |
if: matrix.ruby == 'ruby' | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
bundler-cache: true | |
- name: Run Ruby tests | |
run: bundle exec rake | |
build-debug-mode: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Run Ruby tests | |
run: bundle exec rake | |
env: | |
YARP_DEBUG_MODE_BUILD: "1" | |
build-without-assertions: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Run Ruby tests | |
run: bundle exec rake compile_no_debug | |
build-java: | |
runs-on: ubuntu-latest | |
env: | |
JRUBY_OPTS: "--dev" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up CRuby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.2 | |
bundler-cache: true | |
- name: Serialize fixtures on CRuby | |
run: bundle exec rake compile test:serialize_fixtures | |
- name: Set up JRuby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: jruby | |
bundler-cache: true | |
- name: Compile generated Java files | |
run: bundle exec rake compile | |
- name: Run Java Loader test | |
run: JRUBY_OPTS="-J-ea" bundle exec rake test:java_loader | |
lex-ruby: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Lex ruby/ruby | |
run: bundle exec rake lex:ruby | |
lex-discourse: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Lex discourse/discourse | |
run: bundle exec rake lex:discourse | |
lex-top-100: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Lex Top 100 Gems | |
run: bundle exec rake lex:topgems | |
- name: Parse Top 100 Gems | |
run: bundle exec rake parse:topgems | |
memcheck: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install valgrind from source | |
run: | | |
sudo apt-get install -y libc6-dbg | |
wget https://sourceware.org/pub/valgrind/valgrind-3.20.0.tar.bz2 | |
tar xvf valgrind-3.20.0.tar.bz2 | |
cd valgrind-3.20.0 | |
./configure | |
make | |
sudo make install | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Run Ruby tests with valgrind | |
run: bundle exec rake test:valgrind | |
gem-package: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- run: bundle exec rake build | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: gem-package | |
path: pkg | |
retention-days: 1 | |
gem-install: | |
needs: ["gem-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "head", "jruby", "truffleruby"] | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
exclude: | |
- { ruby: truffleruby, os: windows-latest } | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
- uses: actions/download-artifact@v3 | |
with: | |
name: gem-package | |
path: pkg | |
- run: | | |
gem install --local pkg/yarp-*.gem | |
gem list -d yarp | |
shell: bash | |
- name: Run tests | |
run: | | |
bundle install | |
rm -rf lib ext # ensure we don't use the local files | |
rake test | |
shell: bash | |
gcc-analyzer: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Run build with gcc-analyzer enabled | |
run: | | |
CFLAGS='-fanalyzer' bundle exec rake compile | |
clang-analyzer: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: head | |
bundler-cache: true | |
- name: Install clang-analyzer | |
run: sudo apt-get install -y clang-tools | |
- name: Run build with clang-analyzer | |
run: | | |
scan-build bundle exec rake compile 2>&1 | tee /tmp/scan_build_output.log | |
grep -q 'scan-build: No bugs found.' /tmp/scan_build_output.log |