[ https://issues.apache.org/jira/browse/JAMES-3225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17138664#comment-17138664 ]
Ioan Eugen Stan commented on JAMES-3225: ---------------------------------------- Hi, I'm glad to see someone caring about the builds. I'm sure we will reach a consensus. > People at Linagora have a Jenkins running on every PR made on james-project. > Sadly, this Jenkins instance is private thus is of no use to the community. > However it's probably the reason why nobody took care of having a CI build > setup @ Apache. I'm happy that Linagora runs periodic James builds and makes sure the tests run. I'm also happy developers are being paid to improve and work on James. With my Apache hat on: I'm not happy that we as the Apache James community can't run the tests on Apache infrastructure. I don't believe we should depend on a third party to guarantee the code we deliver. If we can't do that it means that something is wrong and the community does not work as it should. The project should be independent in the sense and for the long term benefits described in https://community.apache.org/projectIndependence.html . A specific case: I merged some code yesterday and I want to merge code. I need a way to make sure it builds on another system that I and the other committers have access to. > And we should ban war too. More seriously, it depends on a lot of things (the > CI infrastructure being one of them) and setting a time budget for the tests > to run is a good way to drop > valuable tests. Let's not be dismissive, it won't help either of us. >> Given the limited resources available for us on the Apache infrastructure we >> will have to be selective of what we do. > Do you have information about that? Not a lot, just what I can see on builds.apache.org and https://cwiki.apache.org/confluence/display/INFRA/Jenkins and https://infra.apache.org/hosting-external-agent.html . I know for some projects there is a wait queue. I don't know if that is because they need a specific node that is not available yet. > Personally I don't see how we can run the current (40mni +) integration suite > on each push / build. I'm pretty sure we will get banned or throttled. > So a discussion should be in order on how to solve these issues but some > options regarding what we can do: > make integration tests OPT-IN > run (distributed) integration tests once a day or once every 6h / 12h > have build profiles that build a common subset all the time and run > Profiles are just a technical solution to split things in subsets so let's > not debate that. > The real question for me is: should we merge a PR without having the results > of the full testsuite. I'm very opinionated about that and my answer is: no. > The consequence of allowing such merge is that people have to fix what is > merged on main branches but contributors could very well be gone at that time. > The main branches will begin to be untested and the confidence in tests will > lower to the point nobody will care to run them any longer. > Given how many bugs we detect with these tests, I don't want that to happen. I understand the value of tests. Let's find a way to make it happen. Both of us might be surprised of the results :) . > Options, in my opinion are: > > make wall clock testsuite duration around 20 minutes (I know that it's > doable because I already did the maths). It requires heavy parallelism. Maybe Gradle cane help here. Gradle can do parallel builds, can use caching and distributed caching, etc. https://docs.gradle.org/current/userguide/build_cache.html I think 20m with all tests is a very nice goal. > check what is the computing budget we have @ ASF for running testsuites on > Jenkins > check if ASF allows to use external servers for CI > check if ASF accepts donation of computing power for a given project ASF does accept donations. Please open an issue / subtask and start the discussion following the procedure here https://infra.apache.org/hosting-external-agent.html . If you believe I can help you can include me in the discussion as well. > Provide automated builds for Apache James - (restore builds.apache.org ?) > -------------------------------------------------------------------------- > > Key: JAMES-3225 > URL: https://issues.apache.org/jira/browse/JAMES-3225 > Project: James Server > Issue Type: Task > Reporter: Ioan Eugen Stan > Assignee: Ioan Eugen Stan > Priority: Major > > For a long time we had builds that ran on the Apache Infrastructure > https://builds.apache.org/view/All/job/james-mailet/ . > The build infrastructure is not running for ~ 3 years now. > I believe it is important for us to have automated builds. > This ticket should gather the work needed to make this a reality. > There are lots of things to take into consideration. > My ( [~ieugen] ) opinions on how to handle this. > * builds should run automatically > * builds should run fast < 10 min > * there are several things they should do (not exhaustive) > ** verify the source code > ** compile the source code > ** run the unit tests > ** run the integration tests > ** publish SNAPSHOTS (only from master or develop ?!) > ** run code analytics > ** publish reports relating to build > ** provide build status for other services > For smaller projects this is a no-brainer. > For the current state of Apache James this is a challange, especially in the > context of > - multiple git branches and PR's > - the distributed integration tests which take a long time > Given the limited resources available for us on the Apache infrastructure we > will have to be selective of what we do. > Personally I don't see how we can run the current (40mni +) integration suite > on each push / build. I'm pretty sure we will get banned :) or throttled. > So a discussion should be in order on how to solve these issues but some > options regarding what we can do: > - make integration tests OPT-IN > - run (distributed) integration tests once a day or once every 6h / 12h > - have build profiles that build a common subset all the time and run > The nuclear option: prune some of the components we have in James and we > don't want to support or move them out of the common project. > This is something we should consider especially for buggy components or for > components that don't have a maintainer. > We have limited time and resources. > We can't maintain everything for everybody. > We should be mindful of this. > We can take inspiration from the OFBiz project > https://builds.apache.org/view/All/job/Apache%20OFBiz/ . -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org