By now we know how to build our application locally, now we will automate this process by publishing the code to GitHub, setting a CircleCI build/test job and Docker Hub automated build.
In your situation you might have to use different version control and build systems and for this reason I do not provide very detailed descriptions these particular three.
Publishing to GitHub is a rather straightforward process. This is how it was done for our application:
- I created a repository on GitHub with
README.mdfile - https://github.com/Nasdanika/bank, and copied repository URL to clipboard.
- Then I opened "Git Repositories" view in Eclipse, clicked the icon "Clone a Git Repository...", and completed the clone wizard.
- Then for each project in the workspace I right-clicked on it, selected Team > Share project, and added the project to the new Git repository.
- Finally, I've marked
binfolders as ignored, added other files to the list of staged changes, committed them and pushed to upstream.
Building on CircleCI and publishing to Docker Hub
I already had accounts on CircleCI and Docker Hub. To build our application I had to add
circle.yml file to the root of the repository:
machine: java: version: openjdk8 services: - docker dependencies: override: - echo 'Skipping Dependency Check' test: pre: - wget http://nasdanika.org/winstone-0.9.10.jar - cd org.nasdanika.bank.aggregator && mvn package javadoc:aggregate override: - cd org.nasdanika.bank.aggregator && mvn verify post: - java -jar winstone-0.9.10.jar --webroot=org.nasdanika.bank.repository/target/repository --controlPort=8081: background: true - sleep 5 - cd org.nasdanika.bank.product.parent && mvn package - java -cp winstone-0.9.10.jar winstone.tools.WinstoneControl shutdown - docker build -t nasdanika/bank:$CIRCLE_BUILD_NUM org.nasdanika.bank.product/target/products/org.nasdanika.bank.product/linux/gtk deployment: staging: branch: master commands: - mv org.nasdanika.bank.product/target/products/org.nasdanika.bank.product-*.zip $CIRCLE_ARTIFACTS - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS - docker push nasdanika/bank:$CIRCLE_BUILD_NUM
You can see that build steps in the file mirror the manual build steps which we performed in previous sections.
A docker image published by the build process is available at Docker Hub Nasdanika Bank repository.