Create dependencies Docker image

Ghost User
2020-02-08T22:06:54+01:00

Description

The goal of this MR is to create a new Docker image that contains all the dependencies of Concrexit. This image would be built using a Gitlab CI Pipeline schedule.

With this change the following would happen:

Every day (or on some other schedule) a new Docker image containing only the dependencies (including the development dependencies) is being build.

The CI jobs run using the dependencies image. This removes the dependency install time from every job.

poetry install is still being run on every job, to make sure dependencies specific to that branch are being installed.

A Docker image (concrexit:<sha>) is being build on every branch, but significantly faster because the dependencies image is used as the base image.

When a production Docker is being built, a new dependencies image without the development dependencies is build first.

The advantages:

Faster builds.

Always build using up to date dependencies (thaliawww/python-thalia is not automatically build and updated).

Better maintainable configuration, because everything is in this repo instead of two repos on two different platforms.

Because a lot of refactoring is being done, this MR also refactors the whole config to be consistent.