github.com/alloyci/alloy-runner@v1.0.1-0.20180222164613-925503ccafd6/docs/executors/README.md (about)

     1  # Executors
     2  
     3  AlloyCI Runner implements a number of executors that can be used to run your
     4  builds in different scenarios. If you are not sure what to select, read the
     5  [I am not sure](#i-am-not-sure) section.
     6  Visit the [compatibility chart](#compatibility-chart) to find
     7  out what features each executor supports and what not.
     8  
     9  To jump into the specific documentation of each executor, visit:
    10  
    11  - [Shell](shell.md)
    12  - [Docker](docker.md)
    13  - [Docker Machine (auto-scaling)](../install/autoscaling.md)
    14  - [Parallels](parallels.md)
    15  - [VirtualBox](virtualbox.md)
    16  - [SSH](ssh.md)
    17  - [Kubernetes](kubernetes.md)
    18  
    19  ## Selecting the executor
    20  
    21  The executors support different platforms and methodologies for building a
    22  project. The table below shows the key facts for each executor which will help
    23  you decide.
    24  
    25  | Executor                                          | Shell   | Docker | VirtualBox | Parallels | SSH  | Kubernetes |
    26  |---------------------------------------------------|---------|--------|------------|-----------|------|------------|
    27  | Clean build environment for every build           | no      | ✓      | ✓          | ✓         | no   | ✓          |
    28  | Migrate runner machine                            | no      | ✓      | partial    | partial   | no   | ✓          |
    29  | Zero-configuration support for concurrent builds  | no (1)  | ✓      | ✓          | ✓         | no   | ✓          |
    30  | Complicated build environments                    | no (2)  | ✓      | ✓ (3)      | ✓ (3)     | no   | ✓          |
    31  | Debugging build problems                          | easy    | medium | hard       | hard      | easy | medium     |
    32  
    33  1. it's possible, but in most cases it is problematic if the build uses services
    34     installed on the build machine
    35  2. it requires to install all dependencies by hand
    36  3. for example using Vagrant
    37  
    38  ### I am not sure
    39  
    40  **Shell** is the simplest executor to configure. All required dependencies for
    41  your builds need to be installed manually on the machine that the Runner is
    42  installed.
    43  
    44  ---
    45  
    46  A better way is to use **Docker** as it allows to have a clean build environment,
    47  with easy dependency management (all dependencies for building the project could
    48  be put in the Docker image). The Docker executor allows you to easily create
    49  a build environment with dependent [services], like MySQL.
    50  
    51  ---
    52  
    53  The **Docker Machine** is a special version of the **Docker** executor
    54  with support for auto-scaling. It works like the normal **Docker** executor
    55  but with build hosts created on demand by _Docker Machine_.
    56  
    57  ---
    58  
    59  The **Kubernetes**  executor allows you to use an existing Kubernetes cluster
    60  for your builds. The executor will call the Kubernetes cluster API
    61  and create a new Pod (with build container and services containers) for
    62  each AlloyCI job.
    63  
    64  ---
    65  
    66  We also offer two full system virtualization options: **VirtualBox** and
    67  **Parallels**. This type of executor allows you to use an already created
    68  virtual machine, which will be cloned and used to run your build. It can prove
    69  useful if you want to run your builds on different Operating Systems since it
    70  allows to create virtual machines with Windows, Linux, OSX or FreeBSD and make
    71  AlloyCI Runner to connect to the virtual machine and run the build on it. Its
    72  usage can also be useful to reduce the cost of infrastructure.
    73  
    74  ---
    75  
    76  The **SSH** executor is added for completeness. It's the least supported
    77  executor from all of the already mentioned ones. It makes AlloyCI Runner to
    78  connect to some external server and run the builds there. We have some success
    79  stories from organizations using that executor, but generally we advise to use
    80  any of the above.
    81  
    82  ## Compatibility chart
    83  
    84  Supported features by different executors:
    85  
    86  | Executor                              | Shell   | Docker | VirtualBox | Parallels | SSH  | Kubernetes |
    87  |---------------------------------------|---------|--------|------------|-----------|------|------------|
    88  | Secure Variables                      | ✓       | ✓      | ✓          | ✓         | ✓    | ✓          |
    89  | AlloyCI Runner Exec command            | ✓       | ✓      | no         | no        | no   | ✓          |
    90  | alloy-ci.json: image                  | no      | ✓      | no         | no        | no   | ✓          |
    91  | alloy-ci.json: services               | no      | ✓      | no         | no        | no   | ✓          |
    92  | alloy-ci.json: cache                  | ✓       | ✓      | ✓          | ✓         | ✓    | ✓          |
    93  | alloy-ci.json: artifacts              | ✓       | ✓      | ✓          | ✓         | ✓    | ✓          |
    94  | Absolute paths: caching, artifacts    | no      | no     | no         | no        | no   | ✓          |
    95  | Passing artifacts between stages      | ✓       | ✓      | ✓          | ✓         | ✓    | ✓          |
    96  | Use AlloyCI Container Registry private images | n/a | ✓   | n/a        | n/a       | n/a  | ✓          |
    97  
    98  Supported systems by different shells:
    99  
   100  | Shells                                | Bash        | Windows Batch  | PowerShell |
   101  |---------------------------------------|-------------|----------------|------------|
   102  | Windows                               | ✓           | ✓ (default)    | ✓          |
   103  | Linux                                 | ✓ (default) | no             | no         |
   104  | OSX                                   | ✓ (default) | no             | no         |
   105  | FreeBSD                               | ✓ (default) | no             | no         |
   106  
   107  [services]: https://github.com/AlloyCI/alloy_ci/tree/master/doc/services/README.html