blob: 11c785f0e1a06c3598f40ddc8f38f30ce9cee468 [file] [edit]
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/...