build: fastlane setup

- Adds a configuration called 'Development' to the project, which uses
  manual signing

- Changes the 'Release' configuration to use manual signing

- Adds support for fastlane automation.
  This commit adds 2 lanes:

  - 'test' uses scan to build and run unit tests on the client

  - 'build' unlocks the system's keychain, uses match to sync the
    development certificate and provisioning profile with a private git
    repo, then uses gym to build the development configuration of the
    xcode project

- Adds a .gitignore to Ring/fastlane for undesired fastlane related files

Change-Id: I1bc0eb8cfa20cc536c297ba7ae14292cc66e1d96
diff --git a/Ring/fastlane/Fastfile b/Ring/fastlane/Fastfile
new file mode 100644
index 0000000..bbe0982
--- /dev/null
+++ b/Ring/fastlane/Fastfile
@@ -0,0 +1,47 @@
+# Customise this file, documentation can be found here:
+# https://github.com/fastlane/fastlane/tree/master/fastlane/docs
+# All available actions: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Actions.md
+# can also be listed using the `fastlane actions` command
+
+# Change the syntax highlighting to Ruby
+# All lines starting with a # are ignored when running `fastlane`
+
+# If you want to automatically update fastlane if a new version is available:
+# update_fastlane
+
+# This is the minimum version number required.
+# Update this, if you use features of a newer version
+fastlane_version "2.68.0"
+
+default_platform :ios
+
+platform :ios do
+  desc "Runs all the tests"
+  lane :test do
+    scan
+  end
+
+  desc "Test build without packaging"
+  lane :build do
+    unlock_keychain
+    match(
+      force: true,
+      type: "development"
+    )
+    gym(
+      scheme: "Ring",
+      clean: true,
+      configuration: "Development",
+      export_method: 'development',
+      skip_package_ipa: true
+    )
+  end
+
+  after_all do |lane|
+    # This block is called, only if the executed lane was successful
+  end
+
+  error do |lane, exception|
+    # This block is called, only if the executed lane has failed
+  end
+end