Continuous integration
Overview
CI uses custom docker image (ci-container
) for compilation of the project. The image has all necessary dependencies:
sbt, docker, docker-compose, and cached jar dependencies. More info in Dockerfile.
How to create a CI image
Execute in a <root>
project folder:
$ docker build -f docker/dockerfiles/sbt/Dockerfile . -t http4s-tagless-example/ci-container:latest
Semi-automated release
According to the gitlab-ci.yaml release can be done only from the release
branch.
Release steps:
- Execute unit and integration tests;
- Increment snapshot version to major version (e.g. 0.0.1-SNAPSHOT -> 0.0.1);
- Create a git tag with a corresponding major version;
- Create new docker image and push two tags (
0.0.1
andlatest
) to a remote registry: - Set new snapshot version (0.0.2-SNAPSHOT);
- Push changes to the
release
branch;
Once the changes were pushed to the release
branch, the release step can be triggered manually.