Can have mischecked gradle setup but I don't think we are here yet, if you are not bound in a module and work accross 2 modules and iterate between working on both and one, you will likely not bypass the "checks" in a satisfying way without a long -x command, is there a magic flag I missed? Also not sure about the last point and how gradle helps here - it is rather the opposite due to the way it loads it model IMHO - so not sure what would be the consequence in terms of action(s) but can have missed the point.
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://rmannibucau.metawerx.net/> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> 2018-01-24 0:20 GMT+01:00 Kenneth Knowles <k...@google.com>: > On Tue, Jan 23, 2018 at 2:51 PM, Romain Manni-Bucau <rmannibu...@gmail.com > > wrote: > > Hmm, did you read it right Kenn? I think the idea was to skip all >> validation/sanity checks tasks at once (gradle xxxx -Pfast) instead of >> doing it manually (gradle -x findbugs -x checkstyle etc...) >> > > Yes, I read it right. We all want the same thing - not doing a bunch of > extra useless unrequested stuff when developing. The concept of skipping is > backwards. We don't need configs that skip things, because in a correct > dependency-driven build they are already not running. > > So since I don't want to pretend to know gradle's invocations yet I will > call it $TOOL. Here's a collection of imaginary commands: > > $TOOL :sdks:java:core:unittest # or $TOOL test :sdks:java:core or > whatever > $TOOL :sdks:java:core:findbugs > $TOOL :sdks:java:core:checkstyle > $TOOL :sdks:java:core:javadoc > > None of these causes any of the others to run. Anything else is a bug. The > `findbugs` and `test` cause a build of the needed jars and nothing else. > > Another example: > > $TOOL :runners:core-java:unittest > > This builds the model, the core SDK, and the runners-core module, then > runs the unit tests of the runners-core module. It does not test SDK core, > or run any javadoc, findbugs, or checkstyle on any module. Anything else is > a bug. > > Now, to build a precommit that is easy to reproduce on one line, you could > build a compound task > > $TOOL :sdks:java:core:precommit # runs a selection of targets that we > define > > At this point you might want to skip things from the :verify task here. > But really, you probably just want to run the things you are interested in > and you don't need custom hooks in the aggregated task. > > My understanding is that gradle can support all of this, if we are > disciplined. Getting to this point is the main/only reason I supported > gradle. > > Kenn > > > >> >> > > >> >>> Kenn >>> >>> >>> >>>> >> >>>> >> diff --git a/examples/java/build.gradle b/examples/java/build.gradle >>>> >> index 0fc0b17df..001bd8b38 100644 >>>> >> --- a/examples/java/build.gradle >>>> >> +++ b/examples/java/build.gradle >>>> >> @@ -130,7 +130,7 @@ def preCommitAdditionalFlags = [ >>>> >> dataflowStreamingRunner: [ "--streaming=true" ], >>>> >> ] >>>> >> for (String runner : preCommitRunners) { >>>> >> - tasks.create(name: runner + "PreCommit", type: Test) { >>>> >> + tasks.create(name: runner + "PreCommit", type: Test, description: >>>> "Run tests >>>> >> for runner ${runner.replace('Runner', '')}") { >>>> >> def preCommitBeamTestPipelineOptions = [ >>>> >> "--project=apache-beam-testing", >>>> >> "--tempRoot=gs://temp-storage-for-end-to-end-tests", >>>> >> >>>> >> >>>> >> >>>> >> Romain Manni-Bucau >>>> >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>>> >> <https://rmannibucau.metawerx.net/> | Old Blog >>>> >> <http://rmannibucau.wordpress.com> | Github < >>>> https://github.com/rmannibucau> | >>>> >> LinkedIn <https://www.linkedin.com/in/rmannibucau> >>>> >> >>>> >> 2018-01-23 8:45 GMT+01:00 Jean-Baptiste Onofré <j...@nanthrax.net >>>> >> <mailto:j...@nanthrax.net>>: >>>> >> >>>> >> Hi Romain, >>>> >> >>>> >> I think we are pretty close: agree to add some explicit tasks & >>>> projects names. >>>> >> >>>> >> We can add additional tasks like skipAudit, for instance. >>>> >> >>>> >> As reminder, gradle tasks provides the list of tasks and gradle >>>> projects >>>> >> provides the list of projects/modules. >>>> >> >>>> >> Regards >>>> >> JB >>>> >> >>>> >> On 01/23/2018 08:12 AM, Romain Manni-Bucau wrote: >>>> >> > Hmm, I have to admit docs dont have my favor cause they are >>>> easily outdated and >>>> >> > hard to search but you hit a good point. Starting by renaming >>>> properly the tasks >>>> >> > and maybe writing what is done in build files - since it is >>>> code and even "api >>>> >> > for dev", it requires as much comments than the main api - can >>>> be better to start. >>>> >> > >>>> >> > Also a big switch flag to bypass checkstyle/findbugs/... can >>>> be good while in >>>> >> > dev since these phases cost a looot for nothing while you >>>> validates your code in >>>> >> > runners modules for instance. >>>> >> > >>>> >> > Le 23 janv. 2018 07:15, "Kenneth Knowles" <k...@google.com >>>> <mailto:k...@google.com> >>>> >> > <mailto:k...@google.com <mailto:k...@google.com>>> a écrit : >>>> >> > >>>> >> > On Mon, Jan 22, 2018 at 10:03 PM, Romain Manni-Bucau < >>>> rmannibu...@gmail.com <mailto:rmannibu...@gmail.com> >>>> >> > <mailto:rmannibu...@gmail.com <mailto: >>>> rmannibu...@gmail.com>>> wrote: >>>> >> > >>>> >> > @Kenneth: why not dropping the doc for a script with >>>> comments in the >>>> >> > project? A "RUNME.sh" ;). >>>> >> > >>>> >> > >>>> >> > That's cool, too, but also any shell one liner can be a >>>> gradle one >>>> >> liner or >>>> >> > mvn two/three liner :-). it is just trading one command >>>> that you cannot >>>> >> > guess easily for a different one that you still can't >>>> guess easily. >>>> >> > >>>> >> > For example, are the SparkRunner ValidatesRunner tests in >>>> the >>>> >> SparkRunner or >>>> >> > the core SDK or a third module that integrates the two? >>>> And why would you >>>> >> > know that the example ITs are called >>>> "sparkRunnerPreCommit"? It >>>> >> doesn't even >>>> >> > make sense really to have "precommit" or "postcommit" >>>> except as aliases to >>>> >> > make it easy to repro Jenkins' behavior - they have no >>>> other intrinsic >>>> >> meaning. >>>> >> > >>>> >> > So I was proposing a mapping from "full sentence + >>>> description" to one >>>> >> liner >>>> >> > to help people navigate the targets that we set up. Some >>>> web page or doc >>>> >> > that people can just quickly scan to find out to do common >>>> things, easier >>>> >> > than groovy or XML. >>>> >> > >>>> >> > Kenn >>>> >> > >>>> >> > >>>> >> >>>> >> -- >>>> >> Jean-Baptiste Onofré >>>> >> jbono...@apache.org <mailto:jbono...@apache.org> >>>> >> http://blog.nanthrax.net >>>> >> Talend - http://www.talend.com >>>> >> >>>> >> >>>> > >>>> > -- >>>> > Jean-Baptiste Onofré >>>> > jbono...@apache.org >>>> > http://blog.nanthrax.net >>>> > Talend - http://www.talend.com >>>> >>> >>> >> >