Skip to content

Update recipes to decouple web builds and tests from the host build #113303

@eyebrowsoffire

Description

@eyebrowsoffire

I am making some improvements to the web build pipeline: flutter/engine#36520

We will need some changes to the CI recipes to take advantage of these improvements. This gets rid of a lot of redundancy which should improve the build times of both the web engine and the native engine steps. I'm happy to work with someone on the details, but here is a high-level description of what I think is needed for the recipe changes:

Recipe changes:

  • Remove Install Xcode steps entirely from web_engine.py. Web engine builds and tests no longer require Xcode at all. (So essentially Ensure felt build/felt test can be run without Xcode on a Mac #105805 is resolved now).
  • Change the way we invoke the felt tool
    • Right now, the recipes invoke felt.dart directly using a built version of dart-sdk. However, now we use prebuilt dart sdk for everything web. The recipe could get this for free by just running the felt bash script or felt.bat which finds the appropriate prebuilt dart sdk and invokes felt.dart using that.
    • On a related note, we are still invoking this felt_windows.bat file on the Windows build. We'd rather migrate the windows side to felt.bat and remove the legacy felt_windows.bat file.
    • Note: This same concept applies to both web_engine.py and web_engine_drone.py
  • No host_debug_unopt build needs to happen at all anymore in order to test. felt test works without any build at all.
    • One exception is that the subshard that runs felt test with the --use-local-canvaskit flag requires the --wasm --runtime-mode=release to be built.
  • Change the way we build artifacts
    • Add a step to engine.py to run the --wasm --runtime-mode=release build. This will produce a single platform-agnostic artifact flutter-web-sdk.zip that needs to be uploaded
    • Once the flutter tool has been updated to use this artifact, the recipe can stop uploading other platform-specific flutter-web-sdk-{platformname}.zip artifacts
    • Once the recipes stop uploading the platform-specific artifacts, the engine repo can be updated to not do any web sdk steps in the host builds.

Metadata

Metadata

Assignees

No one assigned

    Labels

    team-infraOwned by Infrastructure team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions