I think you can build it all yourself with gradle. I am not sure about your first point. Gradle would have to periodically be executed to let it check if there is a new commit, if there is one gradle should execute the build task.
You can extend Gradle in many ways. Gradle can’t do it out of the box but you can build it or there already is a plugin that can do this.
automatically build multi modular maven project every time a branch (pref master) on github (public repo) gets a new commit. - download dependencies defined in build script - run tests - build shaded jars
[/quote]You are looking for continuous integration software. They automatically build your project once triggered by a new commit. Tests, dependencies etc. should be automatically handled by Maven so that the CI only runs the Maven build script (or Gradle, Ant etc.).
[quote=“NeumimTo, post:1, topic:11786”]
2) if build and tests pass all jars will be uploaded to github as a new release
[/quote]This is called continuous delivery. Basically your CI executes some kind of code if your artefact passes all tests. This can be done by the CI itself or the CI tells the build tool to deploy the artefact.
A popular CIs is Jenkins, you would however need to host it yourself (CloudBess uses to provide free hosting for open source projects, but apparently they no longer do so).
Another popular alternative is travis which can be used pretty easily without hosting anything yourself if your project is open source.
Both options can deploy to Github if properly configured (see the respective documentation).
What travis does:
It listens to your repo (or specific branches of your repo) and executes a script when a commit occurs. You can do whatever you want in this script. So uploading/downloading dependencies, testing, uploading the build afterwards isn’t a problem.