<commit_before># maestro
Deploy only what's changed for your multiple services in mono-repos

[![Go Report Card](https://goreportcard.com/badge/github.com/cpg1111/maestro)](https://goreportcard.com/report/github.com/cpg1111/maestro) [![Code Climate](https://codeclimate.com/github/cpg1111/maestro/badges/gpa.svg)](https://codeclimate.com/github/cpg1111/maestro)

## How it Works

Maestro pulls a given repository then builds a dependency graph based on a given config file.
Once the dependency graph is created, Maestro diffs against a given previous commit, with the pathspec being the root directory for each artifact.
Maestro then flags only the changed artifacts for the pipeline, which are then ran concurrently per teir of dependencies, therefore siblings in the graph will build, test and deploy concurrently, but parents and children dependencies will always be built in the correct order.

Used with [Maestrod](https://github.com/cpg1111/maestrod) you can have a build manager that integrates with Github webhooks and runs on Kubernetes or a single-host Docker setup.

For more details see this talk: https://www.youtube.com/watch?v=dGM8mYj8nz4&feature=youtu.be

## Install

```
    go get -d github.com/cpg1111/maestro
    cd maestro
```

or

```
    git clone git@github.com/cpg1111/maestro.git
    cd maestro
```

or

```
    curl -L -o <target path> -z <target path> https://github.com/cpg1111/maestro/releases/download/v0.1.0/maestro-0.1.0-<arch>.tar.gz
    tar -C <target directory> xzvf maestro-0.1.0-<arch>.tar.gz
    cd <target directory>/maestro-0.1.0-<arch>
```

or

```
    wget https://github.com/cpg1111/maestro/releases/download/v0.1.0/maestro-0.1.0-<arch>.tar.gz
    tar -C <target directory> xzvf maestro-0.1.0-<arch>.tar.gz
    cd <target directory>/maestro-0.1.0-<arch>
```

or

```
    # This one handles everything but running maestro
    docker pull cpg1111/maestro
```

then

```
    docker build -t maestro_c -f Dockerfile_c .
    docker build -t maestro_build -f Dockerfile_build .
```

then either:

```
    docker build -t maestro .
```

or

```
    docker build -t maestro_bin_deps -f Dockerfile_bin .
    docker build -t maestro -f Dockerfile_fully_loaded . # gives you certain common executables for building, testing and deploying
```
<commit_msg>docs: update install method<commit_after># maestro
Deploy only what's changed for your multiple services in mono-repos

[![Go Report Card](https://goreportcard.com/badge/github.com/cpg1111/maestro)](https://goreportcard.com/report/github.com/cpg1111/maestro) [![Code Climate](https://codeclimate.com/github/cpg1111/maestro/badges/gpa.svg)](https://codeclimate.com/github/cpg1111/maestro)

## How it Works

Maestro pulls a given repository then builds a dependency graph based on a given config file.
Once the dependency graph is created, Maestro diffs against a given previous commit, with the pathspec being the root directory for each artifact.
Maestro then flags only the changed artifacts for the pipeline, which are then ran concurrently per teir of dependencies, therefore siblings in the graph will build, test and deploy concurrently, but parents and children dependencies will always be built in the correct order.

Used with [Maestrod](https://github.com/cpg1111/maestrod) you can have a build manager that integrates with Github webhooks and runs on Kubernetes or a single-host Docker setup.

For more details see this talk: https://www.youtube.com/watch?v=dGM8mYj8nz4&feature=youtu.be

## Install

```
    git clone <EMAIL>:cpg1111/maestro
    cd maestro
    make docker
```

or

```
    docker pull cpg1111/maestro:<release>
```

{'fraction_non_alphanumeric': 0.10360980986497657, 'fraction_numerical': 0.02700468448608432, 'mean_word_length': 4.15625, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 14, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 1, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2571828', 'n_tokens_mistral': 1234, 'n_tokens_neox': 1154, 'n_words': 376}