WIP: Fully Automated Distributed Build Chain for iOS projects.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Evans Contact: @MartinRogalla Status: Work in Progress Platform: OSX License: Apache License 2.0


Evans is a project by Magnet.me Labs. It provides a fully automated distributed build chain for iOS projects, which consists of two artifacts: a server and a client. The server receives events (e.g. a specific message on a GitHub pull request) and turns them into actions (e.g. TestFlight submission, request for screenshots, etc) that are announced. There are one or more clients, which continuously check the server announcements and reserve tasks, which they can can execute.


During the development of the iOS App of Magnet.me we have noticed that a lot of time is taken up by waiting on routine processes to complete. Wether it’s simply uploading a build on TestFlight or creating screenshots for all kinds of devices. These problems have largely been solved by the Fastlane tools. However, what we were looking for, is to have it fully automated, such that a person should be able to request a TestFlight submission of a given branch, simply by writing a comment on a given pull request and can then continue on their own machine with development.

Work in Progress

It is important to note that Evans is still a work in progress. Evans is still maturing, so not expect everything to work smoothly right out of the box. You might want to check out the /client/actions folder if you want to customize the commands for each action.

Setup Guide

The installation process of Evans is quite extensive, as it requires you to set up the basic development tools your iOS project uses. In this section we will explain how to set up the tools we use in our development environment. Adjust the client's action and process to your liking, it's meant to be modified by you to meet your needs.

Clone the repository:

git clone https://github.com/Magnetme/evans.git


Retrieve Dependencies:

npm install && sudo gem install fastlane pilot gym cocoapods && sudo gem install match --version "=0.1.2"

Configure Evans:

See Configuration.

Run Evans Server:

cd server && node index.js

Run Evans Client:

cd client && node index.js



Store Match' password in the keychain by running:

match change_password



I request a TestFlight submission with a comment in a pull request on GitHub:

GitHub Pull Request Screenshot

We get notified by on Evans' progress via HipChat:

HipChat Screenshot

(Note: bug -> order of messages is not guaranteed to be chronological)


Evans is is licensed under an Apache License 2.0. Find a summary of the terms and conditions here: tl;dr


We would especially like to thank Felix Krause and all the Fastlane contributors for creating the tools on which Evans relies. This work wouldn't have been possible without you. Thank you.


Feel welcome to contribute to Evans. If you have any questions, please don't hesitate to contact us.


Author: @MartinRogalla