This cookiecutter template adds a development and CI environment to an existing project. The cookiecutter-devenv template generates
|Docker and Docker Compose|
|Local or remote install:|
You must render the template into a folder right under your project root for the generated scripts to work correctly. You get to choose the name of the folder. We recommend the name dev. To render the template follow the usage instructions.
The rendered file-tree will look like the following:
project Makefile dev env.mk concourse pipeline_promote.yml tasks unit_test.yml verify.yml docker docker-compose.yml devbox Dockerfile
The entire generated file tree should be commit to source control.
devbox is a Docker container used for compiling/running, testing and debugging the code. You get to chose the base container for the
devbox by specifying the programming language and version as a template parameter. The supported programming languages are: python and ruby. Additionally, the
devbox image contains the
curl, wget, sudo, vim, iputils-pin utilities, as well as a package manager for the selected language.
Furthermore, the project root folder is mounted inside the
devbox container under the path
/src. You can edit the source files on the host computer and any changes you make will be immediately visible inside the container.
To start the container execute the following commands:
cd dev/docker docker-compose up -d
When rendering for python, the cookiecutter-devenv template configures the
make utility to run all development related tasks. You can run
make inside the
devbox container or on the host machine.
Makefile executes all commands inside the
devbox container via
docker exec unless the
NO_DOCKER environment variables is set. Therefore, you are able to run all tasks on the host machine without having the compilers or runtimes installed. Inside the
devbox container the
NO_DOCKER environment variable is set when the container is started.
The cookiecutter-devenv template configures the promote Concourse CI pipeline. The pipeline merges the
develop branch into
master after successfully running all verification and test tasks.