Open PeterYinusa opened 1 year ago
Brad Decker: I have an idea that I think we should explore. Instead of adding new builds like we did for the multichain work to our CI pipeline, can we possibly have a build type for in-progress features and just add the features that are in development to that build type so that if we have multiple big chunks of work in progress that they can be tested together on that build type? It would reduce a lot of effort of duplicating pipelines when kicking off feature development and would prevent issues where multiple big chunks of work land together and cause issues because they'd be under test together. Just an idea, curious to hear your thoughts
Also, are flask and beta intended to be parallel channels or a waterfall? Do we always ship to Flask then to Beta then to Main? Is Flask supposed to be feature-complete when releases go out? or should Flask just be where we do what I said in Peter's copied message above?
Goal: Make software development easier
Background: Currently we use feature flags as part of our build/feature release process, this enables the team to include incomplete features into
master
without affecting users as the code path is isolated behind a feature flag. Decoupling the development from the access of the feature gives us the ability to carry out controlled testing of the feature.Problem: As soon as a feature flag is introduced it adds testing complexity as their are additional code paths to test. Currently all the feature flags are configured at compile time with environment variables as opposed to run time. An incomplete list of these environment variables can be found here:
Testing features that live behind a feature flag is time consuming
Prep-build-test-*
jobs take ~15mins on CI, seeprep-build-test
,prep-build-test-flask
andprep-build-test-mv3
Writing e2e tests for features that live behind a feature flag requires a lot of effort, all the tasks below would need to be reviewed, approved and merged.
Solution: We want to be able to build and install the extension (debug and/or test version only) once, then dynamically turn on the features we want to test.
Benefits: