In the project, the construction part is done directly from the gitlab-cy file with the goland image. But another way to do it is to handle this build in a dockerfile (eg a multistage).
I like the idea that everything is in a Docker and being able to build in any environment with the same version of goland. At the same time, for example if the application is python or dotnet, the way it is current in the project should remember to change the python versions in both the Dockerfile and gitlab-ci file. What I don't like is that you end up handling everything with Docker-in-Docker.
What do you consider to be a best practice and why?