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
[BEAM-246] Improve developer experience after streamlined Maven profile #1740
Conversation
FYI @kennknowles @davorbonaci @eljefe6a @lukecwik @jbonofre @aljoscha @amitsela a set of committers most recently asking about this improvement. Comments requested. Expect a pull request to the contribution guide as well, once discussion is resolved. |
Thoughts: There is plausibly a good reason for the old
The problem is we really want to run the same set of tasks both places. Specifically, precommit should check that the release process isn't broken. And the release process should verify that all our validations are still met. So I'm not certain which name is better, or whether we should have two profiles. But |
I guess my concern is that if we all want to run with This would allow our existing instructions/workflows ( |
Refer to this link for build results (access rights to CI server needed): |
I agree with @bjchambers. The issue is that checkstyle is on the developer path. I hit this yesterday with code not passing the checkstyle. |
@bjchambers Running all slow checks all the time is the wrong default for Beam users and most Beam developers. Users want to know it installs cleanly and tests pass, they don't care about building Javadoc, source jars, shaded jars, or checkstyle/rat. So Most developers have some order of properties they want to ensure:
I don't want to go back to a world where testing a simple change takes an extra 3 minutes because we're bundling and shading and Apache RAT checking all the other modules in a project. Which was @kennknowles' entire reason for filing BEAM-246. |
+1 to this PR. I've wanted to change the name I agree with @dhalperi that running all tasks/checks all the time is wrong for regular devs. I now also think it is wrong for new/rare contributors, which is a change of mind for me.
I think that Maven actually has a distinction that we are not taking advantage of - |
@@ -3,8 +3,8 @@ quickly and easily: | |||
|
|||
- [ ] Make sure the PR title is formatted like: | |||
`[BEAM-<Jira issue #>] Description of pull request` | |||
- [ ] Make sure tests pass via `mvn clean verify`. (Even better, enable | |||
Travis-CI on your fork and ensure the whole test matrix passes). | |||
- [ ] Make sure tests pass via `mvn clean install -Pall-checks`. (Even better, |
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 actually don't think we should add this. I want the user to immediately open a PR when it compiles. Running mvn test
is a bonus. Then Jenkins & Travis can do the thorough stuff. If there is a need to iterate, the reviewer should advise on the invocation with -P all-checks
.
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 there's value in having PR authors do the all-checks stuff, since things passing or failing on your own machine is easier to debug than in Jenkins. I think the value Jenkins is adding is the ITs, plus a safety net in case people haven't done their due diligence. I don't feel super strong about this though, so I'm open to pushback.
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.
On the other hand, to argue against myself here a bit, if it fails in Jenkins it's way easier in the case of a new contributor for them to get help from their reviewer. No pastebinning or anything of console output from their computer, publicly-accessible by default.
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.
My position is that "due diligence" does not apply to new contributors, to minimize the distance between them feeling like hacking and them becoming our friends :-)
And established contributors should know what to do anyhow. Or, realistically, I regularly use Jenkins to do this anyhow, since I rarely have fewer than 5 parallel threads of code and review going. We don't need a checkbox that duplicates the red/green from CI.
Letting people know the command to do a full run is fine, but making it a checkbox I'm not so happy with.
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'm fine with it being an if-you-want instead of a checkbox. Top of my head wording below, feel free to ignore.
"For an extra-thorough check, instead of running mvn clean test
try running mvn clean install -Pall-checks
. This will run the code style checker and a few other checks. Don't worry too much -- Jenkins runs these too so you'll know if they're broken."
<profile> | ||
<id>release</id> | ||
<id>all-checks</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.
The inclusion/exclusion of jar and javadoc doesn't fit perfectly with this name. But its better the release
, given that it controls a wide swath of tasks. What about just -P full
?
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.
It feels to me almost like there should be two separate profiles - all-checks and all-(tasks? builds?). all-tasks could be a superset of all-checks, or they could be disjoint.
+1 for this change. My experience is the following:
|
+1 on changing profile name. |
release
profile that contains enhanced validation toall-checks
mvn clean install -Pall-checks
in the GitHub Pull Request template.