diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index c68677e7a35..0e9de4ce362 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -6,8 +6,8 @@ on: required: true type: string wpt: - required: true - type: boolean + required: false + type: string unit-tests: required: false default: false @@ -19,9 +19,10 @@ on: type: choice options: ["2013", "2020"] wpt: - default: true - required: true - type: boolean + default: "test" + required: false + type: choice + options: ["test", "sync"] unit-tests: required: false default: false @@ -95,7 +96,12 @@ jobs: wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb sudo apt install ./libffi6_3.2.1-8_amd64.deb python3 ./mach bootstrap-gstreamer + - name: Fetch upstream changes before testing + if: ${{ inputs.wpt == 'sync' }} + run: | + ./etc/ci/update-wpt-checkout fetch-upstream-changes - name: Run tests + if: ${{ inputs.wpt != 'sync' }} run: | python3 ./mach test-wpt \ --release --processes $(nproc) --timeout-multiplier 2 \ @@ -106,9 +112,18 @@ jobs: env: GITHUB_CONTEXT: ${{ toJson(github) }} INTERMITTENT_TRACKER_DASHBOARD_SECRET: ${{ secrets.INTERMITTENT_TRACKER_DASHBOARD_SECRET }} + - name: Run tests (sync) + if: ${{ inputs.wpt == 'sync' }} + run: | + python3 ./mach test-wpt \ + --release --processes $(nproc) --timeout-multiplier 2 \ + --total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \ + --log-raw test-wpt.${{ matrix.chunk_id }}.log \ + --log-servojson wpt-jsonsummary.${{ matrix.chunk_id }}.log \ + --always-succeed - name: Archive filtered results uses: actions/upload-artifact@v3 - if: ${{ always() }} + if: ${{ always() && inputs.wpt != 'sync' }} with: name: wpt-filtered-results-linux-${{ env.LAYOUT }} path: | @@ -116,17 +131,25 @@ jobs: unexpected-test-wpt.${{ matrix.chunk_id }}.log - name: Archive logs uses: actions/upload-artifact@v3 - if: ${{ failure() }} + if: ${{ failure() && inputs.wpt != 'sync' }} with: name: wpt-logs-linux-${{ env.LAYOUT }} path: | test-wpt.${{ matrix.chunk_id }}.log filtered-wpt-results.${{ matrix.chunk_id }}.json + - name: Archive logs + uses: actions/upload-artifact@v3 + if: ${{ inputs.wpt == 'sync' }} + with: + name: wpt-logs-linux-${{ env.LAYOUT }} + path: | + test-wpt.${{ matrix.chunk_id }}.log + wpt-jsonsummary.${{ matrix.chunk_id }}.log report-test-results: name: Reporting test results runs-on: ubuntu-latest - if: "!cancelled() && success('build-linux') && ${{ github.ref_name == 'try-wpt' || inputs.wpt }}" + if: ${{ always() && !cancelled() && success('build-linux') && (github.ref_name == 'try-wpt' || inputs.wpt == 'test') }} needs: - "linux-wpt" steps: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b0a155c9ce0..90ebb4a0352 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -49,7 +49,7 @@ jobs: uses: ./.github/workflows/linux.yml with: layout: '2013' - wpt: true + wpt: 'test' build-linux-layout-2020: name: Linux (layout-2020) @@ -57,7 +57,6 @@ jobs: uses: ./.github/workflows/linux.yml with: layout: '2020' - wpt: false build_result: name: homu build finished diff --git a/.github/workflows/quick-check.yml b/.github/workflows/quick-check.yml index 3e1b5e4107a..8de237f6aaf 100644 --- a/.github/workflows/quick-check.yml +++ b/.github/workflows/quick-check.yml @@ -11,7 +11,6 @@ jobs: uses: ./.github/workflows/linux.yml with: layout: '2013' - wpt: false unit-tests: true build-linux-layout-2020: @@ -19,6 +18,5 @@ jobs: uses: ./.github/workflows/linux.yml with: layout: '2020' - wpt: false # TODO: unit tests on layout-2020 unit-tests: false diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index dfa0f068b8a..a7ef7a4ea86 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -23,7 +23,7 @@ env: jobs: build-win: name: Build - runs-on: windows-2022 + runs-on: windows-2019 steps: - uses: actions/checkout@v3 with: diff --git a/.github/workflows/wpt-nightly.yml b/.github/workflows/wpt-nightly.yml index f3d1fb7d860..1240e13b439 100644 --- a/.github/workflows/wpt-nightly.yml +++ b/.github/workflows/wpt-nightly.yml @@ -9,89 +9,25 @@ on: workflow_dispatch: jobs: - build-linux: + linux: # This job is only useful when run on upstream servo. if: github.repository == 'servo/servo' || github.event_name == 'workflow_dispatch' - name: Build on Linux - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - name: Bootstrap - run: | - python3 -m pip install --upgrade pip virtualenv - sudo apt update - python3 ./mach bootstrap - - name: Release build (Layout 2013) - run: python3 ./mach build --release - - name: Lockfile check - run: ./etc/ci/lockfile_changed.sh - - name: Package binary (Layout 2013) - run: tar -czf target.tar.gz target/release/servo resources - - name: Archive binary (Layout 2013) - uses: actions/upload-artifact@v3 - with: - name: layout-2013-release-binary - path: target.tar.gz - - name: Release build (Layout 2020) - run: python3 ./mach build --release --with-layout-2020 - - name: Package binary (Layout 2020) - run: tar -czf target.tar.gz target/release/servo resources - - name: Archive binary (Layout 2020) - uses: actions/upload-artifact@v3 - with: - name: layout-2020-release-binary - path: target.tar.gz + name: Linux + uses: ./.github/workflows/linux.yml + with: + layout: '2013' + wpt: 'sync' + unit-tests: false - linux-wpt: + linux-layout-2020: # This job is only useful when run on upstream servo. if: github.repository == 'servo/servo' || github.event_name == 'workflow_dispatch' - name: Linux WPT Tests - runs-on: ubuntu-20.04 - needs: ["build-linux"] - env: - max_chunk_id: 20 - strategy: - matrix: - chunk_id: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] - configuration: ["layout-2013", "layout-2020"] - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - uses: actions/download-artifact@v3 - with: - name: ${{ matrix.configuration }}-release-binary - path: release-binary - - name: unPackage binary - run: tar -xzf release-binary/target.tar.gz - - name: Prep test environment - run: | - python3 -m pip install --upgrade pip virtualenv - sudo apt update - sudo apt install -qy --no-install-recommends libgl1 libssl1.1 libdbus-1-3 libxcb-xfixes0-dev libxcb-shape0-dev libunwind8 libegl1-mesa - wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb - sudo apt install ./libffi6_3.2.1-8_amd64.deb - python3 ./mach bootstrap-gstreamer - - name: Fetch upstream changes before testing - run: | - ./etc/ci/update-wpt-checkout fetch-upstream-changes - - name: Run tests - run: | - python3 ./mach test-wpt \ - --release --processes $(nproc) --timeout-multiplier 2 \ - --total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \ - --log-raw test-wpt.${{ matrix.configuration }}.${{ matrix.chunk_id }}.log \ - --log-servojson wpt-jsonsummary.${{ matrix.configuration }}.${{ matrix.chunk_id }}.log \ - --always-succeed - - name: Archive logs - uses: actions/upload-artifact@v3 - with: - name: wpt-logs-linux - path: | - test-wpt.${{ matrix.configuration }}.${{ matrix.chunk_id }}.log - wpt-jsonsummary.${{ matrix.configuration }}.${{ matrix.chunk_id }}.log + name: Linux (layout-2020) + uses: ./.github/workflows/linux.yml + with: + layout: '2020' + wpt: 'sync' + unit-tests: false sync: # This job is only useful when run on upstream servo. @@ -99,8 +35,8 @@ jobs: name: Synchronize WPT Nightly runs-on: ubuntu-latest needs: - - "build-linux" - - "linux-wpt" + - "linux" + - "linux-layout-2020" steps: - name: Checkout code uses: actions/checkout@v3