- Jakub Marchwicki
-
-
developer
-
position wise: ex-architect, ex-manager, ex-consultant
-
I help teams gradually recover from legacy trauma
-
Introducing microservices - out of frying pan into the fire
-
-
Twitter: @kubem
-
-
Maven will make the preferred path the easy path
-
The easy path might not be the best path
-
-
If your idea doesn’t confront the Maven’s - it’s you problem
-
After that not easiest to extends - matters of hours not minutes
-
-
Honestly, besides dependency management there is not much so great about Maven
/-------------\ | upstream #1 | --------\ \-------------/ | v /----------\ /---------\ /------\ /---------\ /-------------\ | | | | | | |cGRE | | upstream #2 | -> | assembly | --> | release | -> | test |-> ... --> | promote | \-------------/ | | | | | | | | \----------/ \---------/ \------/ \---------/ ^ /-------------\ | | upstream #2 | --------/ \-------------/
-
Deploy software manually
-
Deploy to production-like environment
-
Manual configuration management of the production environment
-
Build binaries only once
-
Deploy the same binary to every environment
-
Smoke test you deployments
If project builds, than run it as far through the testing pipeline as it can go until it gets to the end.
-
Release process
-
Run tests
-
Tag version
-
Prepare new development version
-
-
Prepare docker image
-
Assemble application from multiple parts - microservish architecture
-
The plugin builds twice:
build the code → tag / branch → build the branch-
[maven-release-plugin] prepare release …`
and[maven-release-plugin] prepare for next development iteration
- so not every commit is releasable
-
-
Perform the release on current branch
-
Commits and pushes the changes
link:project/pom.xml[role=include]
-
Name of the tag
-
We don’t want to commit remotly - we will do it later on
-
We checkout out (to perform the release) from the local tag
-
As for preparation we will be running following goals:
clean
,test
,scm:branch
andexec:exec
Standard goal isclean verify
- but we also create a branch and check it out -
For the release itself - we will be doing just installation (no deployment) - again that will come later
$ mvn -B release:prepare release:perform
link:project/app/todo-ui/pom.xml[role=include]
link:project/app/todo-ui/pom.xml[role=include]
link:project/deploy/pom.xml[role=include]
link:project/deploy/docker/pom.xml[role=include]
-
References which artifact actually goes into docker image
-
Project: http://tiny.cc/maven-devoxx
-
Twitter: @kubem