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.
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
npm install && sudo gem install fastlane pilot gym cocoapods && sudo gem install match --version "=0.1.2"
Run Evans Server:
cd server && node index.js
Run Evans Client:
cd client && node index.js
Store Match' password in the keychain by running:
I request a TestFlight submission with a comment in a pull request on GitHub:
We get notified by on Evans' progress via HipChat:
(Note: bug -> order of messages is not guaranteed to be chronological)
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.