AFNetworking/fastlane

Name: fastlane

Owner: AFNetworking

Description: A fastlane setup to deploy Objective-C and Swift frameworks.

Created: 2015-11-10 19:22:08.0

Updated: 2018-01-17 13:50:00.0

Pushed: 2016-09-22 18:29:23.0

Homepage: null

Size: 41

Language: Ruby

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Objective-C/Swift Framework Deployment made easy

? Note this is still a work in progress, and is not ready for production yet ?

Creating a new release for an Objective-C/Swift open source framework is a tedious process. This fastlane setup is an attempt to streamline that process by creating a single button to generate a new release, allowing developers to focus on great updates, without the overhead of creating new releases.

It is recommended to have a high level understanding of what fastlane is, but it is not required. You can read up more on fastlane here.

Installation

To install fastlane, simply use gem (related: Should I use sudo?):

o] gem install fastlane

Why?

The goal is to create a one button release like so with almost no overhead for a developer.

lane prepare_framework_release version:3.0.0 env --deploy

That does the following:

  1. Verifies the git branch is clean
  2. Ensures the lane is running on the master branch
  3. Verifies the Github milestone is ready for release (no open issues, and at least one closed issue)
  4. Pulls the remote to verify the latest the branch is up to date
  5. Updates the version of the info plist used by the framework
  6. Updates the version of the podspec
  7. Generates a changelog based on the Github milestone
  8. Updates the changelog file
  9. Commits the changes to master
  10. Pushes the commited branch to the remote
  11. Creates a new tag
  12. Pushes the tag to the remote
  13. Runs the tests on the CI server

When the tests have passed on CI, the complete_framework_release lane will automatically run:

  1. Generates a changelog for the Github Release Page
  2. Creates a Github Release
  3. Builds Carthage Frameworks
  4. Uploads Carthage Framework to Github Release
  5. Pushes podspec to pod trunk
  6. Lints the pod spec to ensure it is valid
  7. Closes the associated Github milestone

Github Management Best Practices

In order to get the most out of this tool, it is recommended you manage your Github repo with the following best practices. It's easy to do, and gives you a lot of automation power with fastlane. Below is how AFNetworking is being managed:

Getting Started

There are primary use cases for these fastlanes: testing and deployment. When used together, a full continuous integration system can be created.

Testing

Getting the testing harness configured is an easy process.

  1. Configure the scheme's test action to run a test target, and confirm all tests pass locally
  2. Setup the Fastfile
  3. Setup the env files
  4. Setup CI (optional)
  5. Profit ?

Follow the getting started guide to configure the framework for testing.

Deployment

Getting up and running is a simple process:

  1. Setup the Fastfile
  2. Setup the env files
  3. Setup CI (optional)
  4. Generate a Github API Token
  5. Generate a Pod Trunk Access Token
  6. Profit ?

A full deployment guide has been created to help get developers get started with automating deployment.

Available Fastlane Lanes

The lanes provided are divided into two groups: lanes meant for for testing, and lanes meant for deployment. In combination with the Github best practices above, developers can fully automate the release process.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.