| name: CI - Ruby |
| |
| on: |
| workflow_call: |
| inputs: |
| smoke: |
| description: Smoke tests always run; callers pass false to add the full matrix |
| required: false |
| type: boolean |
| default: true |
| workflow_dispatch: |
| inputs: |
| smoke: |
| description: Smoke tests only (default also runs the full matrix) |
| required: false |
| type: boolean |
| default: false |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| lint: |
| name: Lint |
| uses: ./.github/workflows/bazel.yml |
| with: |
| name: Lint |
| run: ./go rb:lint |
| |
| # jruby is run on RBE; minimum MRI is run by os-tests. This matrix |
| # covers truffleruby and the most recent MRI release. |
| unit-tests: |
| name: Unit Tests |
| if: github.event_name == 'schedule' || !inputs.smoke |
| 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 }} |
| run: > |
| bazel test |
| --keep_going |
| --test_size_filters small |
| //rb/... |
| |
| smoke: |
| name: ${{ matrix.os }}-smoke |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu, windows, macos] |
| tag_filters: ["unit,os-sensitive,se-manager,skip-rbe"] |
| include: |
| # Chrome has no linux-arm64 build before 153; Edge has none at all. |
| - os: ubuntu-24.04-arm |
| tag_filters: "unit,os-sensitive,se-manager,skip-rbe,-chrome,-edge" |
| with: |
| name: ${{ matrix.os }} |
| needs-display: true |
| os: ${{ matrix.os }} |
| rerun-with-debug: true |
| download-artifact-name: targets |
| run: > |
| [ -s bazel-targets-rb.txt ] || echo //rb/... > bazel-targets-rb.txt; |
| ./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 |
| --test_env=SE_FORCE_BROWSER_DOWNLOAD=true |
| --test_env=SE_SKIP_DRIVER_IN_PATH=true |
| --test_env=SKIP_PENDING=true |
| --test_tag_filters=${{ matrix.tag_filters }} |
| --target_pattern_file=bazel-targets-rb.txt |
| |
| os-tests-full: |
| name: ${{ matrix.os }}-full |
| if: github.event_name == 'schedule' || !inputs.smoke |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [windows] |
| tag_filters: [chrome-beta, firefox-beta, "edge-local,edge-bidi,-os-sensitive,-se-manager"] |
| include: |
| - os: macos |
| tag_filters: safari-local,safari-preview-bidi,-os-sensitive,-se-manager |
| with: |
| name: (${{ matrix.tag_filters }}) |
| needs-display: true |
| safari-preview: ${{ contains(matrix.tag_filters, 'safari-preview') }} |
| os: ${{ matrix.os }} |
| rerun-with-debug: true |
| run: > |
| bazel test |
| --keep_going |
| --flaky_test_attempts 2 |
| --local_test_jobs 1 |
| --pin_browsers=false |
| --test_env=SE_FORCE_BROWSER_DOWNLOAD=true |
| --test_env=SE_SKIP_DRIVER_IN_PATH=true |
| --test_size_filters large |
| --test_tag_filters=${{ matrix.tag_filters }} |
| //rb/... |