| # Configuration for Ruby CI |
| # To force the execution of this workflow, add [run ruby] to your commit message |
| name: 'CI - Ruby' |
| |
| on: |
| workflow_dispatch: |
| |
| schedule: |
| - cron: '35 9,21 * * *' |
| |
| push: |
| |
| pull_request: |
| |
| jobs: |
| check_workflow: |
| permissions: |
| contents: none |
| uses: ./.github/workflows/should-workflow-run.yml |
| with: |
| bazel-target-prefix: '//rb' |
| |
| build: |
| if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[rb]') == true }} |
| needs: check_workflow |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| target: [ 'selenium-devtools', 'selenium-webdriver' ] |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v3 |
| - name: Setup Java |
| uses: actions/setup-java@v3 |
| with: |
| java-version: 11 |
| distribution: 'temurin' |
| - name: Cache Bazel artifacts |
| uses: ./.github/actions/cache-bazel |
| with: |
| workflow: ruby |
| key: gem-${{ matrix.target }} |
| - name: Build Gems |
| uses: ./.github/actions/bazel |
| with: |
| command: build //rb:${{ matrix.target }} |
| |
| chrome-test: |
| if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }} |
| needs: check_workflow |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| target: [ 'chrome-test', 'remote-chrome-test' ] |
| os: [ 'ubuntu-latest', 'windows-latest' ] |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v3 |
| - name: Setup Java |
| uses: actions/setup-java@v3 |
| with: |
| java-version: 11 |
| distribution: 'temurin' |
| - name: Cache Bazel artifacts |
| uses: ./.github/actions/cache-bazel |
| with: |
| workflow: ruby |
| key: ${{ matrix.target }} |
| - name: Setup Fluxbox |
| if: matrix.os == 'ubuntu-latest' |
| run: sudo apt-get -y install fluxbox |
| - name: Setup Chrome |
| uses: browser-actions/setup-chrome@latest |
| with: |
| chrome-version: stable |
| - name: Start XVFB |
| if: matrix.os == 'ubuntu-latest' |
| run: Xvfb :99 & |
| - name: Start Fluxbox |
| if: matrix.os == 'ubuntu-latest' |
| run: fluxbox -display :99 & |
| - name: Set resolution |
| if: matrix.os == 'windows-latest' |
| run: Set-DisplayResolution -Width 1920 -Height 1080 -Force |
| - name: Run Chrome tests |
| uses: ./.github/actions/bazel |
| with: |
| command: test --cache_test_results=no --test_output=all //rb:${{ matrix.target }} |
| attempts: 3 |
| env: |
| DISPLAY: :99 |
| |
| edge-test: |
| if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }} |
| needs: check_workflow |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| target: [ 'edge-test', 'remote-edge-test' ] |
| os: [ 'windows-latest' ] |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v3 |
| - name: Setup Java |
| uses: actions/setup-java@v3 |
| with: |
| java-version: 11 |
| distribution: 'temurin' |
| - name: Cache Bazel artifacts |
| uses: ./.github/actions/cache-bazel |
| with: |
| workflow: ruby |
| key: ${{ matrix.target }} |
| - name: Setup Edge |
| uses: browser-actions/setup-edge@latest |
| with: |
| edge-version: stable |
| - name: Run Edge tests |
| uses: ./.github/actions/bazel |
| with: |
| command: test --cache_test_results=no --test_output=all //rb:${{ matrix.target }} |
| attempts: 3 |
| |
| firefox-test: |
| if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }} |
| needs: check_workflow |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| target: [ 'firefox-test', 'remote-firefox-test' ] |
| os: [ 'ubuntu-latest', 'windows-latest' ] |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v3 |
| - name: Setup Java |
| uses: actions/setup-java@v3 |
| with: |
| java-version: 11 |
| distribution: 'temurin' |
| - name: Cache Bazel artifacts |
| uses: ./.github/actions/cache-bazel |
| with: |
| workflow: ruby |
| key: ${{ matrix.target }} |
| - name: Setup Fluxbox |
| if: matrix.os == 'ubuntu-latest' |
| run: sudo apt-get -y install fluxbox |
| - name: Setup Firefox |
| uses: abhi1693/setup-[email protected] |
| with: |
| browser: firefox |
| version: latest |
| - name: Start XVFB |
| if: matrix.os == 'ubuntu-latest' |
| run: Xvfb :99 & |
| - name: Start Fluxbox |
| if: matrix.os == 'ubuntu-latest' |
| run: fluxbox -display :99 & |
| - name: Set resolution |
| if: matrix.os == 'windows-latest' |
| run: Set-DisplayResolution -Width 1920 -Height 1080 -Force |
| - name: Run Firefox tests |
| uses: ./.github/actions/bazel |
| with: |
| command: test --cache_test_results=no --test_output=all //rb:${{ matrix.target }} |
| attempts: 3 |
| env: |
| DISPLAY: :99 |
| |
| docs: |
| if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }} |
| needs: check_workflow |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v3 |
| - name: Cache Bazel artifacts |
| uses: ./.github/actions/cache-bazel |
| with: |
| workflow: ruby |
| key: docs |
| - name: Run docs tests |
| uses: ./.github/actions/bazel |
| with: |
| command: run //rb:docs |
| |
| lint: |
| if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }} |
| needs: check_workflow |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v3 |
| - name: Cache Bazel artifacts |
| uses: ./.github/actions/cache-bazel |
| with: |
| workflow: ruby |
| key: lint |
| - name: Run lint tests |
| uses: ./.github/actions/bazel |
| with: |
| command: run //rb:lint |
| |
| unit-test: |
| if: ${{ needs.check_workflow.outputs.result == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(toJson(github.event.commits), '[run ruby]') == true }} |
| needs: check_workflow |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| ruby: [ '2.7.6', '3.1.2', 'jruby-9.4.0.0', 'truffleruby-22.3.0' ] |
| os: ['ubuntu-latest'] |
| include: |
| - ruby: 2.7.6 |
| os: windows-latest |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v3 |
| - name: Cache Bazel artifacts |
| uses: ./.github/actions/cache-bazel |
| with: |
| workflow: ruby |
| key: unit-test-${{ matrix.ruby }} |
| - name: Set Ruby version to ${{ matrix.ruby }} |
| run: echo 'RUBY_VERSION = "${{ matrix.ruby }}"' > rb/ruby_version.bzl |
| - name: Run unit tests |
| uses: ./.github/actions/bazel |
| with: |
| command: test --cache_test_results=no --test_output=all //rb:unit-test |