Skip to content

[plugins/package] Design a better system for branch-specific exclusion #111484

@stuartmorgan-g

Description

@stuartmorgan-g

Currently the tooling supports skipping packages via yaml files that contain a flat list of excluded packages. This works well, and has substantially improved the situation over trying to maintain it manually in .cirrus.yaml.

However, we've had a number of cases where we want to exclude a package only for a specific channel, usually because either a package is deliberately becoming master-only temporarily, or because it's impossible to run a specific set of tests on one channel for some reason. Our de-facto solution for that to embed conditional logic in .cirrus.yaml (like this), which is annoying to get right and scales poorly.

Some options:

  • Don't change the tooling, but make exclude_foo_master.yaml and exclude_foo_stable.yaml files (one of which would be empty) and pass exclude_foo.yaml,exclude_foo_$CHANNEL.yaml in the script.
    • This would be slightly cumbersome, but doesn't add any new tooling.
  • Change the format of the YAML files to include channel-specific exclusions. E.g., change the current list to a dictionary where the keys are lists of channels (with empty meaning all channels).
    • This would require a way to get the channel into the script. If we go this route we should add a flag to use (--channel=$CHANNEL) since picking up env variables automagically inside the script makes things much harder to understand.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listc: contributor-productivityTeam-specific productivity, code health, technical debt.p: toolingAffects the flutter_plugin_tools packagepackageflutter/packages repository. See also p: labels.team-ecosystemOwned by Ecosystem teamtriaged-ecosystemTriaged by Ecosystem team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions