-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
⚡️ Improve melos and workflow setup #2021
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
Melos. :) |
334eed1
to
e9804d1
Compare
See the edited top comment for more info. |
Also cc @CaiJingLong to see if you have any idea regarding infrastructure abstraction abilities. |
Personally, I don't like the combination of format/analyze/tests as this makes it harder to determine why the build failed, especially for new contributors. |
Good point. If we break it into steps, would it be good enough too?
As far as I know there are no limitations for public repos. |
da43df1
to
74fa978
Compare
e5a9842
to
255f1ac
Compare
https://github.com/cfug/dio/actions/runs/6785748920/job/18444745192 Steps were split in the job. Now you're able to identify every verify step in a single workflow. The core is time trade with speed. If we still use job strategies, it will cost massive redundant time since the workspace needs to be reconfigured each time a job starts. But it can display every action as a workflow. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
30+
→3
)..melos_ignored_packages
for steps.New Pull Request Checklist
main
branch to avoid conflicts (via merge from master or rebase)CHANGELOG.md
in the corresponding packageAdditional context and info (if any)
Melos has poor support around versions and packages filtering. It has
MELOS_PACKAGES
andpackageFilter
for sessions, but those fields are not working well across its major versions.The main idea about filtering our packages is to prevent unsatisfied packages from being handled by melos process. For example, if
native_dio_adapter
requires Flutter3.13.0
and the current Flutter is2.15.1
, exclude it from packages.To do this, I've added a script to serialize the melos workspace first, then determine whether the Dart version satisfies the package version. It produces package lists according to demand (satisfied packages or ignored packages).