CI, Tests, Builds¶
The project is hosted on gitlab and it uses gitlab pipelines. The pipelines are used to automatically run all tests, build and push the docker images. In addition to this, the documentation is built and deployed to gitlab pages every time they have been changed.
The docker images are only built and pushed if the tests run without any errors.
Continuous Deployment not activated
At the moment, the continuous deployment jobs are not activated due to a problem with the formail production setup.
All CI/CD files are located in the
All images are pushed to the project's container registry: https://gitlab.com/aakado/formail/container_registry.
The images can be pulled like this:
docker pull registry.gitlab.com/aakado/formail:latest
The project is tested extensively using several unit- and feature-tests. All tests are executed as the first job of each pipeline. If this job fails, the following jobs aren't executed. A branch with failing tests should not be merged!
The documentation is written in markdown, built using Material for MkDocs and deployed using gitlab pages.
Three different kinds of images are pushed to the container registry. Here is the explanation for the different images and the namings of them.
|latest||Latest image of the Formail application.|
|branch||Latest image of the Formail application on the named branch.|
|COMMIT_HASH||Image of the Formail application at the given commit.|
|nginx-latest||Latest image of the nginx configured for Formail.|
|nginx-branch||Latest image of the nginx configured for Formail on the named branch.|
|nginx-COMMIT_HASH||Image of the nginx configured for Formail at the given commit.|
|dev-latest||Latest image of the Formail development environment.|
|dev-branch||Latest image of the Formail development environment on the named branch.|
|dev-COMMIT_HASH||Image of the Formail development environment at the given commit.|
latest does really mean 'latest'
After every build, regardless of the branch, the built image is tagged and pushed with the
latest-tag. Due to that, for a production deployment, you should use the
master images or a certain
latest doesn't mean stable!