Metadata-Version: 2.1
Name: tumbo
Version: 0.7
Summary: Matrix builder for docker
Home-page: https://github.com/cupcakearmy/tumbo
Author: cupcakearmy
Author-email: hi@nicco.io
License: GPLv3
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: Jinja2 (==2.10.3)
Requires-Dist: PyYAML (==5.2)
Requires-Dist: termcolor (==1.1.0)

# 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 }}'
```

### Parallel (Optional)

**Default:** yes

Whether the builds/push/runs should run in parallel or after each other.

###### no

Parallel off.

```yaml
parallel: no
```


###### yes

Uses all the threads available on the machine.

```yaml
parallel: yes
```


###### number

Uses how many thread you specify

```yaml
parallel: 2
```

### run (Optional)

**Default:** no

Wether to run the docker image after building. Can be usefull if running automated tests.

```yaml
run: yes
```

### push (Optional)

**Default:** no

Wether to push the docker image after building.
Can be used to push images to the docker registry (or your own).
See below on how to login.

```yaml
run: yes
```

### registry (Optional)

**Default:** Empty

Credentials for `docker login`. Used to push images and to specify a custom registry if necessary.

```yaml
registry:
    username: my_user
    password: my_pass
    host: my_host
```


