-
Notifications
You must be signed in to change notification settings - Fork 773
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
VM Tooling Analysis and general housekeeping #723
Comments
To change the following behavior, we can set
|
I am bit sceptical, at least we shouldn't overshoot here on the CI usage side, I rather had the impression that we should eventually level down here a bit again after the latest CI runs to not overstress the infrastructure. Maybe running on a weekly basis might be a good compromise here if we decide to do so. |
@holgerd77 I am not a fan of having too many checks too, but also we can't have fewer node version coverage for the VM package, compared to its siblings. I think the weekly run is a good balance! I will grow a list of optimization opportunities for our CIs, because there are plenty of them around. With the upcoming ethashjs addition, we must have a plan to keep the CI checks at a manageable level. |
I think another interesting compromise is to only run everything on PRs that prepare releases. There's no clear way to detect that from within GH Actions, but checking if |
@alcuadrado that's a good route. Adding 2 wei to this, we can instead run all jobs for created tags. To play even safer, we can create rc tags that does not need to land on npm. So if there's any churn, we don't burn a production tag. |
@alcuadrado would also regard this as a good automated compromise here. @evertonfraga running on tags would run later than the So with the current level of understanding I would rather tend to the |
That's what I explained in my previous comment. Git tags (e.g: |
@evertonfraga ah, ok, half-read that, but then we would be forced to do RC releases everytime on all packages just for the sake of a CI improvement? 🤔 Wouldn't be this |
I have another contribution to make here, after thinking more about this yesterday. I just did the analysis below to validate it. Most of the CI runs are made within PRs. And there are on average 6 commits per PR (not counting commits that get rebased and force-pushed). This is the current strategy:
If we change it to:
... we would have much less CI runs on average, and if there's any incompatibility with any supported Node version, we'd know right after it's merged. In this real life example, considering the last 10 PRs, we'd have 65% less CI runs. |
@evertonfraga That's a great analysis, thanks! 👍 😄 You can't count all commits I guess, since only pushes count for CI runs and it won't get pushed on every single commit I guess? Or is this taken into account? But even though, seems the overall calculation/reasoning remains valid to some extend. |
Our CI setup does not filter tags by pattern, so it would take only a single tag to trigger all jobs :) The But I agree that git tags weren't ultimately made for that :)
Yes, you are right, I counted the commits the first time, not the CI runs. Updating it led to a 25% decrease in the number of CI runs, which still has an expressive result. Here's the updated table+chart: |
Stats of files changed of latest 20 active PRs: Nearly half of the PRs performed changes to |
Yes, I would support concentrate CI runs somewhat more on the VM, since otherwise it get's a bit hard to keep track of things, also - since GitHub Actions is not yet as reliable as desired - there are relatively often cases with failing tests due to CI unreliabilities, this is also increasing with an increasing number of jobs to be run. |
@alcuadrado if we keep creating PR releases with the same branch convention, this could work: on:
push:
branches: release/*
pull_request:
branches: release/* |
Outdated, will close. |
GitHub checks are a great way to keep our code quality up, along with some safeguards for common errors or security issues. The checks should be reliable, and that requires some extra work.
Tests
I'll skip the reasoning about the importance of tests 😛. But we have some improvements to make:
Code coverage
The tool is good for our needs, their flag feature is what makes it viable to use in our monorepo setup. But we need to master it, meaning that we should prevent false negatives like this.
Code checks
We currently use a combo of Prettier + TSLint to enforce code formatting, maintainability and functionality errors. They are defined in packages ethereumjs-config-tslint.
@ryanio and I share the perception that we have a ton of checks, and still we should try our best to keep it simple and organized.
Documentation
We should have a more descriptive documentation. @ryanio has pointed to TypeDoc Library mode as an alternative to produce better docs.
--
This issue will be updated.
The text was updated successfully, but these errors were encountered: