-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Speed up non-release builds #286
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
Conversation
|
R: @davorbonaci |
30e8c32 to
8436056
Compare
| </goals> | ||
| </execution> | ||
| <execution> | ||
| <id>default-test-jar</id> |
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.
I think we need to keep this in the default profile since we have modules that depend on others modules test jars because of re-used testing utilities. Will need to factor those out to separate testing packages.
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.
IMO such a dependency is a bug, for sure. Factoring out into a test utility is best, if possible. But here is a case where we cannot:
- class A depends on SDK main
- SDK test depends on class A
- non-SDK test depends on class A
In this case, class A must be in SDK main. I think many things fall into this category.
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.
The main use we need to think about for the long term is the way that SDKs offer their own unit tests as test suites for runners. We may refactor but for now it makes sense for everything under sdks to offer the test jar.
|
looks good so far, several other pom files that could benefit from this as well |
|
R: @lukecwik |
|
Did you want to limit the scope of this change to what you have here or did you want to go through the other poms? |
|
I'd like to get this in first. A number of these changes actually change it for everyone since they change parent |
|
One branch of the Travis run seems to have hung downloading deps. |
|
LGTM, please self merge |
c5a0d0a to
119812a
Compare
|
As far as I can see, this has reduced the build time from 15 minutes to 13 minutes (excluding outlays). Not a great win, IMO, with the given complexity. Perhaps we should chat separately if this is worth it. |
|
We should just continue to find things we can omit. Certainly compile-and-test of 13 minutes is ridiculous for this project. |
|
I didn't dig into too many modules, but So, taking all timings with a grain of salt, for the SDK this change reduced overall time by ~40% and reduced non-testing time by ~75%. I hope we can improve it further, and make similar improvements to all modules. We should also aim to reduce the testing time. This was a run with default settings, and it looked like |
Be sure to do all of the following to help us incorporate your contribution
quickly and easily:
[BEAM-<Jira issue #>] Description of pull requestmvn clean verify. (Even better, enableTravis-CI on your fork and ensure the whole test matrix passes).
<Jira issue #>in the title with the actual Jira issuenumber, if there is one.
Individual Contributor License Agreement.
We can probably take this further, but this is a first step at isolating simple command-line
mvn verifyandmvn installfrom the extra artifacts that are important for release building & testing. We should keep the longer build for post-commit, maybe pre-commit, but definitely not for devs on the command line.