Engineers often run multiple patch builds over the course of working on a ticket. It would be helpful to be able to set up an evergreen profile up front for that ticket (meaning a list of variants and test suites) and for Evergreen to take advantage of that profile to preserve build artifacts (also requested by EVG-602) across the workflow .
While it would be worth brainstorming ideas for workflow steps if we are interested in pursuing this, one hypothetical workflow could be:
1) A developer set up a profile titled "SERVER-XYZ" which includes:
Variants: ! Shared Library Enterprise RHEL 6.2, ! Shared Library Enterprise RHEL 6.2 (all feature flags)
Tasks: lint, aggregation, unittests, jsCore
2) An initial patch build is run with a --profile=SERVER-XYZ argument
In this run a full build is performed and all variants tests are executed
3) On failure of a few tests, a new patch is posted, this time with --profile=SERVER-XYZ and --failures-only
An incremental build is run to update the existing binaries for any changes. Only the tests that failed on the previous run are re-rerun
4) After a few iterations on steps 2 & 3 (each with incremental rather than full builds if possible) a final patch is run for all required builders and tasks, pre-commit.
In order to take advantage of the previous build artifacts,--profile=SERVER-XYZ would still be specified, but an additional flag would indicate that the variant/task choices should be ignored in favor required variants/tasks.
Profiles could be expired after some time since the last patch run (maybe with artifact cleanup happening more quickly and template definitions being kept for a longer period)