diff options
author | sagudev <16504129+sagudev@users.noreply.github.com> | 2025-04-18 08:38:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-18 06:38:28 +0000 |
commit | bd9242acfa599ca6bc3d79c10edfeb7cb54246ae (patch) | |
tree | 8a70963131a6e5925d30e3a6e2b9495339c13adb | |
parent | 5e2d42e94459af76c8752fef934a7dde8ac5b41a (diff) | |
download | servo-bd9242acfa599ca6bc3d79c10edfeb7cb54246ae.tar.gz servo-bd9242acfa599ca6bc3d79c10edfeb7cb54246ae.zip |
CI: Add `number_of_chunks` (#36584)
This allows changing number of chunks used for WPT testing (sometimes
useful for WebGPU).
Testing: Manual try runs
Fixes: #30062
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
-rw-r--r-- | .github/workflows/dispatch-workflow.yml | 4 | ||||
-rw-r--r-- | .github/workflows/linux-wpt.yml | 22 | ||||
-rw-r--r-- | .github/workflows/linux.yml | 9 | ||||
-rw-r--r-- | .github/workflows/main.yml | 1 | ||||
-rw-r--r-- | .github/workflows/try-label.yml | 1 | ||||
-rw-r--r-- | .github/workflows/try.yml | 1 | ||||
-rw-r--r-- | python/servo/try_parser.py | 10 |
7 files changed, 44 insertions, 4 deletions
diff --git a/.github/workflows/dispatch-workflow.yml b/.github/workflows/dispatch-workflow.yml index c938b1acd39..472f4813cd7 100644 --- a/.github/workflows/dispatch-workflow.yml +++ b/.github/workflows/dispatch-workflow.yml @@ -14,6 +14,9 @@ on: wpt: required: true type: boolean + number-of-wpt-chunks: + required: true + type: number unit-tests: required: true type: boolean @@ -57,6 +60,7 @@ jobs: with: profile: ${{ inputs.profile }} wpt: ${{ inputs.wpt }} + number-of-wpt-chunks: ${{ inputs.number-of-wpt-chunks }} unit-tests: ${{ inputs.unit-tests }} build-libservo: ${{ inputs.build-libservo }} wpt-args: ${{ inputs.wpt-args }} diff --git a/.github/workflows/linux-wpt.yml b/.github/workflows/linux-wpt.yml index 03dce7456b2..e3425a39575 100644 --- a/.github/workflows/linux-wpt.yml +++ b/.github/workflows/linux-wpt.yml @@ -13,6 +13,10 @@ on: default: false required: false type: boolean + number-of-wpt-chunks: + default: 20 + required: false + type: number env: RUST_BACKTRACE: 1 @@ -24,15 +28,25 @@ env: WPT_ALWAYS_SUCCEED_ARG: "${{ inputs.wpt-sync-from-upstream && '--always-succeed' || '' }}" jobs: + chunks: + name: Generate chunks array + runs-on: ubuntu-22.04 + outputs: + chunks-array: ${{ steps.generate-chunks-array.outputs.result }} + steps: + - uses: actions/github-script@v7 + id: generate-chunks-array + with: + script: | + return Array.from({length: ${{ inputs.number-of-wpt-chunks }}}, (_, i) => i + 1) linux-wpt: name: WPT runs-on: ubuntu-22.04 - env: - max_chunk_id: 20 + needs: chunks strategy: fail-fast: false matrix: - chunk_id: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] + chunk_id: ${{ fromJson(needs.chunks.outputs.chunks-array) }} steps: - uses: actions/checkout@v4 if: github.event_name != 'pull_request_target' @@ -66,7 +80,7 @@ jobs: ./mach test-wpt \ $WPT_ALWAYS_SUCCEED_ARG \ --${{ inputs.profile }} --processes $(nproc) --timeout-multiplier 2 \ - --total-chunks ${{ env.max_chunk_id }} --this-chunk ${{ matrix.chunk_id }} \ + --total-chunks ${{ inputs.number-of-wpt-chunks }} --this-chunk ${{ matrix.chunk_id }} \ --log-raw wpt-full-logs/linux/raw/${{ matrix.chunk_id }}.log \ --log-wptreport wpt-full-logs/linux/wptreport/${{ matrix.chunk_id }}.json \ --log-raw-unexpected wpt-filtered-logs/linux/${{ matrix.chunk_id }}.log \ diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 03d863285a7..033f9795a23 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -17,6 +17,10 @@ on: wpt: required: false type: boolean + number-of-wpt-chunks: + default: 20 + required: false + type: number unit-tests: required: false default: false @@ -58,6 +62,10 @@ on: wpt: required: false type: boolean + number-of-wpt-chunks: + default: 20 + required: false + type: number unit-tests: required: false default: false @@ -215,6 +223,7 @@ jobs: wpt-args: ${{ inputs.wpt-args }} profile: ${{ inputs.profile }} wpt-sync-from-upstream: ${{ inputs.wpt-sync-from-upstream }} + number-of-wpt-chunks: ${{ inputs. number-of-wpt-chunks }} secrets: inherit bencher: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c2bda1a7c2c..1545dfa2450 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -56,6 +56,7 @@ jobs: unit-tests: ${{ matrix.unit_tests }} build-libservo: ${{ matrix.build_libservo }} wpt-args: ${{ matrix.wpt_args }} + number-of-wpt-chunks: ${{ matrix.number_of_wpt_chunks }} bencher: ${{ matrix.bencher }} build-result: diff --git a/.github/workflows/try-label.yml b/.github/workflows/try-label.yml index 5444b75a4bd..b1ca27a6f58 100644 --- a/.github/workflows/try-label.yml +++ b/.github/workflows/try-label.yml @@ -128,6 +128,7 @@ jobs: unit-tests: ${{ matrix.unit_tests }} build-libservo: ${{ matrix.build_libservo }} wpt-args: ${{ matrix.wpt_args }} + number-of-wpt-chunks: ${{ matrix.number_of_wpt_chunks }} bencher: ${{ matrix.bencher }} results: diff --git a/.github/workflows/try.yml b/.github/workflows/try.yml index 274ad7483ff..cba4fc03e06 100644 --- a/.github/workflows/try.yml +++ b/.github/workflows/try.yml @@ -108,6 +108,7 @@ jobs: unit-tests: ${{ matrix.unit_tests }} build-libservo: ${{ matrix.build_libservo }} wpt-args: ${{ matrix.wpt_args }} + number-of-wpt-chunks: ${{ matrix.number_of_wpt_chunks }} bencher: ${{ matrix.bencher }} build-result: diff --git a/python/servo/try_parser.py b/python/servo/try_parser.py index 79f2989f10d..9a6b31693b0 100644 --- a/python/servo/try_parser.py +++ b/python/servo/try_parser.py @@ -40,6 +40,7 @@ class JobConfig(object): build_libservo: bool = False bencher: bool = False wpt_args: str = "" + number_of_wpt_chunks: int = 20 # These are the fields that must match in between two JobConfigs for them to be able to be # merged. If you modify any of the fields above, make sure to update this line as well. merge_compatibility_fields: ClassVar[List[str]] = ['workflow', 'profile', 'wpt_args'] @@ -55,6 +56,7 @@ class JobConfig(object): self.unit_tests |= other.unit_tests self.build_libservo |= other.build_libservo self.bencher |= other.bencher + self.number_of_wpt_chunks = max(self.number_of_wpt_chunks, other.number_of_wpt_chunks) self.update_name() return True @@ -201,6 +203,7 @@ class TestParser(unittest.TestCase): 'matrix': [{ 'bencher': False, 'name': 'Linux (Unit Tests)', + 'number_of_wpt_chunks': 20, 'profile': 'release', 'unit_tests': True, 'build_libservo': False, @@ -215,6 +218,7 @@ class TestParser(unittest.TestCase): {"fail_fast": False, "matrix": [ { "name": "Linux (Unit Tests, WPT, Bencher)", + 'number_of_wpt_chunks': 20, "workflow": "linux", "wpt": True, "profile": "release", @@ -225,6 +229,7 @@ class TestParser(unittest.TestCase): }, { "name": "MacOS (Unit Tests)", + 'number_of_wpt_chunks': 20, "workflow": "macos", "wpt": False, "profile": "release", @@ -235,6 +240,7 @@ class TestParser(unittest.TestCase): }, { "name": "Windows (Unit Tests)", + 'number_of_wpt_chunks': 20, "workflow": "windows", "wpt": False, "profile": "release", @@ -245,6 +251,7 @@ class TestParser(unittest.TestCase): }, { "name": "Android", + 'number_of_wpt_chunks': 20, "workflow": "android", "wpt": False, "profile": "release", @@ -255,6 +262,7 @@ class TestParser(unittest.TestCase): }, { "name": "OpenHarmony", + 'number_of_wpt_chunks': 20, "workflow": "ohos", "wpt": False, "profile": "release", @@ -265,6 +273,7 @@ class TestParser(unittest.TestCase): }, { "name": "Lint", + 'number_of_wpt_chunks': 20, "workflow": "lint", "wpt": False, "profile": "release", @@ -280,6 +289,7 @@ class TestParser(unittest.TestCase): 'matrix': [{ 'bencher': False, 'name': 'Linux (WPT)', + 'number_of_wpt_chunks': 20, 'profile': 'release', 'unit_tests': False, 'build_libservo': False, |