diff --git a/README.md b/README.md index 320a841..1ec9a1b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,104 @@ # tumbo + Docker matrix build generator + +```yaml +variables: + my_var: + - a + - b + - c + some_other: + - 0.1.0 + - 0.1.2 + +context: ./build +recipe: './Dockerfile.j2' +tag: "my-tag:{{ my_var }}-{{ some_other }}" + +parallel: no +# no +# yes : uses all threads available +# n : number of threads to use +# default: yes + +push: yes +run: yes +registry: + username: my_user + password: my_pass + host: my_host +``` + +### Config Reference + +#### Variables + +The variables to build the matrix. Simply specify an array for each variable. They will be available in the template. + +```yaml +variables: + my_var: + - a + - b + - c + some_other: + - 0.1.0 + - 0.1.2 +``` + +#### Recipe + +The template to compile the dockerfile. Can be a template itself if you don't want to write everything in the same file. + +###### Simple + +```yaml +recipe: './Dockerfile.j2' +``` + +###### Template + +```yaml +variables: + my_var: + - a + - b + +recipe: './{{ my_var }}.j2' +``` + +Assuming `my_var` hast the values `a` and `b` it will render to `./a.j2` and `./b.j2` accordingly. + +#### Context (Optional) + +**Default:** directory of the config file. + +Specify the directory where the templates and the dockerfiles will be built. +Supports both absolute and relative paths. + +```yaml +context: ./build +``` + +#### Tag (Optional) + +**Default:** Creates a tag that includes all variables. +In most cases it will not be necessary to specify, but can be usefull if your are pushing images. Supports templating of course. + +**Important:** The tag should be unique across the matrix, otherwise you will overwrite other tags. So always include all the variables you specified inside the image name + +```yaml +variables: + var1: + - a + - b + var2: + - a + - b + var3: + - a + - b + +tag: 'my-image-name:{{ var3 }}-{{ var1 }}-{{ var2 }}' +```