| name: CI - Ruby |
| |
| on: |
| workflow_call: |
| inputs: |
| targets: |
| required: false |
| type: string |
| default: '//rb/...' |
| workflow_dispatch: |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| lint: |
| name: Lint |
| uses: ./.github/workflows/bazel.yml |
| with: |
| name: Lint |
| run: ./go rb:lint |
| |
| # jruby is exercised on RBE; minimum MRI is exercised by os-tests. This matrix |
| # covers truffleruby and the most recent MRI release. |
| unit-tests: |
| name: Unit Tests |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - ruby-version: 4.0.4 |
| os: ubuntu |
| - ruby-version: truffleruby-34.0.1 |
| os: ubuntu |
| with: |
| name: Unit Tests (${{ matrix.ruby-version }}, ${{ matrix.os }}) |
| os: ${{ matrix.os }} |
| ruby-version: ${{ matrix.ruby-version }} |
| rerun-with-debug: true |
| run: > |
| bazel test |
| --keep_going |
| --test_size_filters small |
| //rb/spec/... |
| |
| os-tests: |
| name: ${{ matrix.os }}-tests |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - os: ubuntu |
| browser: yes |
| tag-filters: unit,skip-rbe |
| - os: windows |
| browser: yes |
| tag-filters: edge,chrome-beta-bidi,firefox-beta-bidi,unit,os-sensitive,skip-rbe |
| - os: macos |
| browser: safari |
| tag-filters: chrome-beta-bidi,firefox-beta-bidi,unit,os-sensitive,skip-rbe |
| with: |
| name: ${{ matrix.os }}-tests |
| browser: ${{ matrix.browser }} |
| os: ${{ matrix.os }} |
| rerun-with-debug: true |
| run: > |
| ./scripts/github-actions/bazel-test-if-targets.sh |
| --keep_going |
| --flaky_test_attempts 2 |
| --local_test_jobs 1 |
| --skip_incompatible_explicit_targets |
| --pin_browsers=false |
| --skip_incompatible_explicit_targets |
| --test_env=SE_FORCE_BROWSER_DOWNLOAD=true |
| --test_env=SE_SKIP_DRIVER_IN_PATH=true |
| --test_tag_filters=${{ matrix.tag-filters }} |
| ${{ (github.event_name != 'schedule' && github.event_name != 'workflow_dispatch') && '--test_env=SKIP_PENDING=true' || '' }} |
| ${{ inputs.targets || '//rb/...' }} |