Mash is a dead simple tool for defining and running CI pipelines in Elixir.

Dependencies

Installation

Add mash to your dependencies like so:

def deps do
  [
    {:mash, "~> 0.1.2"}
  ]
end

Configuring pipelines

To configure your job pipeline, create a .mash.exs file at the root of your project containing a module which implements a jobs/0 function:

defmodule MashConfig do
  import Mash.Helpers

  def jobs do
    [
      %{
        name: :test,
        run: mix("test")
      },
      %{
        name: :credo,
        run: mix("credo", ["--all"])
      },
      %{
        name: :function_example,
        run: fn _io_pid ->
          IO.puts("Hurray!")
        end
      }
    ]
  end
end

Each entry in the jobs list must, at a minimum, have two keys:

Optionally, a job may also contain a key needs whose value is an array of other jobs that must pass before this job will be run.

See the docs for Mash.Job for more details, including conditional execution.

Running

mix mash

Full Documentation

Full documentation is available on HexDocs.